Distributed systems engineering and LabModule distributed systems engineering
Academic Year 2024/2025 - Teacher: EMILIANO ALESSIO TRAMONTANAExpected 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
Attendance of Lessons
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
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 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.
Examples of frequently asked questions and / or exercises
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