Systems Programming

Objectives and outcomes
Students acquire a basic theoretical knowledge, they master techniques and tools for large-scale systems. Upon completion of the course, students can identify and use software patterns for the development of complex software applications. They can choose and apply the most suitable platform for a specific task, model the architecture and decompose the system. They can implement parts in the form of software components. Furthermore, if necessary, they apply service-oriented and microservice architecture.

Lectures
Categories and catalogs of software patterns and anti-patterns. Separating specification from implementation. Adherence to SOLID principles and application of design patterns in component-based development. Standards of modular system development
for the Java platform – OSGi and Jigsaw. Software licenses and versions. Service-oriented architecture and web services. Technologies and standards for the implementation of web services – SOAP and REST. Conceptual service design: defining service domains, determining atomic services, creating composite services. The development of logical services. Converting design to specifications: operation specification, service contract specification, message specification. The use of microservices. Development of applications based on the 12-factor app methodology. Comparison of microservices, service-oriented architectures and monolithic application
architectures. Different implementations of microservices – data-driven architectures, event-driven programming. A distributed database management system. Log aggregation in microservices and understanding them. The security of microservices-
based applications. The use of microservices in IoT applications.

Practical classes
Patterns and anti-patterns in programming large-scale systems. An example of a software component that uses other components and its extension with additional functionality. Using build tools for Java – Apache Ant, Apache Maven and Gradle. Creating a component with a separate specification. HTTP protocol and REST architecture. The implementation of a microservice application using Spring Boot technology. Working with relational and non-relational databases in microservice architecture. The use of Hiberante ORM tool for data persistence in relational database. Communication between microservices and using the messaging system. Isolating applications into Docker containers (writing Dockerfile, Docker image registry), container orchestration, microservice application scaling.

1 thought on “Systems Programming”

Comments are closed.