Distributed systems engineering and LabModule distributed systems engineering
Academic Year 2025/2026 - Teacher: EMILIANO ALESSIO TRAMONTANAExpected Learning Outcomes
General goals described according to the expected learning results.
1. Knowledge and understanding: Students will learn advanced programming mechanisms, including aspect-based, parallel, asynchronous, and distributed programming. They will deepen their understanding of the main design patterns (authentication, authorization, session management, DTOs, SLOBs, circuit breakers) and the middleware technologies (RabbitMQ) used to ensure scalability, reliability, and resilience in distributed software systems.
2. Applying knowledge and understanding: Students will be able to design, integrate, and implement distributed software systems using the patterns studied. They will be able to use tools and technologies (microservice frameworks, messaging systems such as RabbitMQ) to implement scalable and reliable solutions, effectively managing session state, data exchange (DTO), and data storage (SLOB).
3. Making judgements: The student will be able to independently evaluate the most appropriate architectural solution for a given application context, analyzing various influencing factors and choosing an appropriate solution.
4. Communication skills: the student will be able to describe distributed software systems using a proper technical language.
5. Learning skills: the student will be able to solve typical problems, by studying, analysing and using novel distributed technologies.
Course Structure
Frontal lessons for concepts, techniques and code.
Should remote teaching be needed, then some adjustements to the above might be introduced, while honouring the programme outlined in the syllabus.
Required Prerequisites
Attendance of Lessons
Detailed Course Content
The course explores distributed systems engineering in depth, with a focus on microservices architectures and the fundamental design patterns for building scalable, resilient, and maintainable systems. After an overview of communication models and middleware technologies (e.g., RMI, RabbitMQ, REST), the course analyzes the main design patterns for separating components while ensuring effective collaboration (such as Proxy, Remote Facade, Session State, DTO, Broker), as well as the main service coordination design patterns (such as Saga, Scatter-Gather), useful for managing distributed transactions and asynchronous flows. Considerable emphasis is placed on resilience, through asynchronous programming, patterns such as Retry, Circuit Breaker, Bulkhead, and Timeout, as well as consistency and cache management in distributed contexts. The course concludes with several design patterns for ensuring service-level security, such as tokens, authentication, and authorization.
Textbook Information
1. F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, M. Stal. Pattern-Oriented Software Architecture A System of Patterns. John Wiley and Sons, 1996
2. M. Fowler. Patterns of Enterprise Application Architecture. Addison-Wesley, 2003
3. M. Schumacher, E. Fernandez-Buglioni, D. Hybertson, F. Buschmann, P. Sommerlad. Security Patterns: Integrating Security and Systems Engineering. John Wiley and Sons, 2006
4. R. Laddad. AspectJ in Action: Enterpriese AOP with Spring Applications. Manning Publications. 2010.
5. R.-G. Urma, M. Fusco, A. Mycroft. Java 8 in Action: Lambdas, streams, and functional-style programming. Manning, 2015
6. G. Hohpe, B. Woolf. Enterprise Integration Patterns. Addison-Wesley, 2003
7. A. Videla, J.J.W. Williams. RabbitMQ in Action. Manning, 2012
8. A. M. Antonopoulos. Mastering Bitcoin. Programming the open blockchain. O'Reilly, 2017
9. R. Kuhn. Reactive Design Patterns. Manning, 2017
Course Planning
| Subjects | Text References | |
|---|---|---|
| 1 | Presentazione del corso con obiettivi. Modularità per sistemi distribuiti e paralleli | [2] C. 1 |
| 2 | Design pattern Proxy e Reference Monitor | [1] C. 3.4, [3] C. 8 |
| 3 | Design pattern Remote Proxy e Forwarder-Receiver | [1] C. 3.4, 3.6 |
| 4 | Design pattern Role-based Access Control e Authenticator | [3] C. 8, 10 |
| 5 | Design pattern Remote Facade e Data Transfer Object | [2] C. 7, 15 |
| 6 | Design pattern Session State (Client, Server, Database), Serialized Large Object | [2] C. 6, 17, 12 |
| 7 | Design pattern Broker | [1] C. 2.3 |
| 8 | Progettazione con callback, Java chiamate asincrone, tipi CompletableFuture | [5] C. 11 |
| 9 | Programmazione ad aspetti: costrutti del linguaggio AspectJ. Pointcut e join point. Esempio di aspetto per la protezione degli accessi | [4] C. 2, 3 |
| 10 | Programmazione ad aspetti: pointcut per la cattura del contesto di esecuzione, passaggio di parametri agli advice | [4] C. 3, 4 |
| 11 | Refactoring ad aspetti. Crosscutting statico e dinamico. Pointcut cflow, declare warning | [4] C. 5 |
| 12 | Design pattern ad aspetti: Adapter, Participant e Sincronizzazione. Gestione eccezioni con aspetti | [4] C. 5, 12, 13 |
| 13 | Design pattern per la stabilità: Timeout, Circuit Breaker, Bulkheads | [9] C. 2, 12 |
| 14 | Middleware orientato ai messaggi: RabbitMQ | [6] C. 3, [7] C. 2 |
| 15 | Design pattern per i messaggi. Produttori e consumatori di messaggi. Code | [6] C. 10, [7] C. 4 |
| 16 | Architettura distribuita di Blockchain di bitcoin, proprietà | [8] C. 1, 2, 5, 6, 8, 9, 10 |
Learning Assessment
Learning Assessment Procedures
The exam consists of a project assigned to individual students or groups of up to three people. Once the project has been completed and the documentation submitted, an oral exam may be held at the end of the exam. The project involves the design and implementation of a small distributed and/or concurrent software system that uses some of the course technologies.
The exam is designed to thoroughly assess the student's preparation, analytical and reasoning skills on the topics covered in the course, as well as the appropriateness of the technical language used.
The exam will be graded excellently (28-30 cum laude) if the student demonstrates in-depth knowledge and precision in the presentation of the course concepts, assessed both through analysis of the completed project and an oral exam. An intermediate grade (24-27) will be given if the exam demonstrates a partial understanding of some course topics. A passing grade (18-23) will be given if, despite partial knowledge of the course topics, they are presented superficially or inaccurately.
Students with disabilities and/or learning disabilities (LD) must contact the instructor, the DMI CInAP representative (Prof. Daniele), and CInAP well in advance of the exam date to communicate their intention to take the exam with appropriate compensatory measures.
The learning assessment may also be conducted online, if circumstances require it.
Examples of frequently asked questions and / or exercises
Implement a software aspect that caches data
Implement an asynchronous call to a method
Describe the handling of session data
Describe the handling of accesses using design pattern Role-based access control