Software components

Objectives and outcomes

Students acquire knowledge of component-based software development as well as of the tools for
managing and connecting software components, in addition to knowledge of the service-oriented
architecture and microservices. Students understand the concept of a software component in terms of
physical and logical modularity, reusability and component abstraction. They understand the role of the
interface and service components, as well as the problems of dependencies between components. Students understand the basic idea of service-oriented software architecture and microservices as the alternative to monolithic
architecture.

Lectures

The goals and advantages of component-based software development. The concept of a software
component. Main features of the software component. The meaning of physical and logical modularity.
The common practice of separating specification from implementation of the component. Following
SOLID principles and application of design patterns in component-based software development.
Technical documentation of a software component. Build tools and dependency management. Overview
of the contemporary build tools for Java and Python. Standard module systems for Java platform – OSGi
and Jigsaw. Software licences and version control. Service-oriented software architecture and web
services. Technology and specifications commonly used for web services implementation – SOAP and
REST. Microservices and comparison with other architectures. Integration of microservices and
communication between them. Microservices and user interface, microservices and databases.
Steps in implementing a monolithic to microservice architecture.

Practical classes

Showing an illustrative example of a software component that uses other components and its extension with additional functionality. Explaining the meaning of reusability of the component. Working with
version control systems. Using Java build tools – Apache Ant, Apache Maven and Gradle.
Implementation of the component with separated specification as a creative exercise. HTTP and REST
architecture. Development of an application in microservice architecture using Spring Boot framework.
Working with databases in microservice architecture including relational and NoSQL databases.
Communication between microservices and the use of a messaging system.