Distributed systems engineering and Lab
Module distributed systems engineering

Academic Year 2023/2024 - Teacher: EMILIANO ALESSIO TRAMONTANA

Expected Learning Outcomes

General goals described according to the expected learning results.

1. Knowledge and understanding: the student will be able to use aspect-oriented, parallel, asyncronous, and distributed mechanisms. 

2. Applying knowledge and understanding: the student will be able to design, document, and implement aspect-oriented software systems, distribute and complex systems.

3. Making judgements: the student will be able to analyse parallel and distributed software systems.

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

Ability to design and code object-oriented systems in C++ or Java.

Detailed Course Content

Design patterns for distributed systems: Proxy, Broker, Forward-Receiver, Remote Facade, Data Transfer Object, Session State, Serialized Large Object, Memento. Design patterns for secure distributed systems: Role Based Access Control, Authenticator, token, Authorizer. Design and implementation of aspect-oriented software systems. Design pattern for aspect-oriented systems and Refactoring to aspects. Implementing Asyncrhonous calls in Java. Reactive programming design patterns Circuit Breaker, Bulkheads, Timeout. Message-oriented Middleware RabbitMQ. Blockchain technology.

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

 SubjectsText References
1Presentazione del corso con obiettivi. Modularità per sistemi distribuiti e paralleli[2] C. 1
2Design pattern Proxy e Reference Monitor[1] C. 3.4, [3] C. 8
3Design pattern Remote Proxy e Forwarder-Receiver[1] C. 3.4, 3.6
4Design pattern Role-based Access Control e Authenticator[3] C. 8, 10
5Design pattern Remote Facade e Data Transfer Object[2] C. 7, 15
6Design pattern Session State (Client, Server, Database), Serialized Large Object[2] C. 6, 17, 12
7Design pattern Broker[1] C. 2.3
8Progettazione con callback, Java chiamate asincrone, tipi CompletableFuture[5] C. 11
9Programmazione ad aspetti: costrutti del linguaggio AspectJ. Pointcut e join point. Esempio di aspetto per la protezione degli accessi[4] C. 2, 3
10Programmazione ad aspetti: pointcut per la cattura del contesto di esecuzione, passaggio di parametri agli advice[4] C. 3, 4
11Refactoring ad aspetti. Crosscutting statico e dinamico. Pointcut cflow, declare warning[4] C. 5
12Design pattern ad aspetti: Adapter, Participant e Sincronizzazione. Gestione eccezioni con aspetti[4] C. 5, 12, 13
13Design pattern per la stabilità: Timeout, Circuit Breaker, Bulkheads[9] C. 2, 12
14Middleware orientato ai messaggi: RabbitMQ[6] C. 3, [7] C. 2
15Design pattern per i messaggi. Produttori e consumatori di messaggi. Code[6] C. 10, [7] C. 4
16Architettura 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 previously agreed-upon project before the exam date, which involves the implementation of a small software system, followed by an oral examination.


The exam will be evaluated excellently if you demonstrate a deep understanding of the course concepts and precision in their presentation. An intermediate grade will be given in cases where the exam shows a partial understanding of the topics. A barely passing grade will be awarded when, despite partial knowledge of the topics, they are presented superficially.

The assessment of learning may also be conducted remotely if conditions require it.