INGEGNERIA DEI SISTEMI DISTRIBUITI E LABORATORIO

Academic Year 2020/2021 - 1° Year - Curriculum Sistemi di Rete e Sicurezza
Teaching Staff Credit Value: 9
Scientific field: INF/01 - Informatics
Taught classes: 36 hours
Exercise: 24 hours
Laboratories: 12 hours
Term / Semester:

Learning Objectives

  • INGEGNERIA DEI SISTEMI DISTRIBUITI

    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.

  • Laboratory

    General goals described according to the expected learning results.

    1. Knowledge and understanding: the student will be able to use advanced development mechanisms, i.e. on collabrative and distributed development, validation of complex systems, automation of the release process, design and implementation of distributed systems with microservices.
    2. Applying knowledge and understanding: the student will be able to design, and implement advanced development, validation and release tools for distributed applications.
    3. Making judgements: the student will be able to analyse advanced development, validation and release solutions for distributed applications.
    4. Communication skills: the student will be able to describe advanced development, validation and release solutions using a proper technical language.
    5. Learning skills: the student will be able to solve typical problems, by studying, analysing and using novel development, validation and release technologies.

Course Structure

  • INGEGNERIA DEI SISTEMI DISTRIBUITI

    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.

  • Laboratory

    Frontal lessons for concepts, techniques and code; practical tutorials with examples of code for the covered topics.

    Should remote teaching be needed, then some adjustements to the above might be introduced, while honouring the programme outlined in the syllabus.


Detailed Course Content

  • INGEGNERIA DEI SISTEMI DISTRIBUITI

    Design patterns for distributed systems: Proxy, Broker, Forward-Receiver, Remote Facade, Data Transfer Object, Session State, Serialized Large Object. Design patterns for secure distributed systems: Role Based Access Control, Authenticator, Remote Authenticator. 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.

  • Laboratory

    Introduction to DevOps. Git Workflow and distributed development. Maven. Unit Testing. Automatic test generation. Mutation Testing. Combinatorial Testing. Microservices. Microservices with Spring Boot. Distributed Tracing.


Textbook Information

  • INGEGNERIA DEI SISTEMI DISTRIBUITI

    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

  • Laboratory
    1. G. Kim et al.: The DevOps Handbook. It Revolution Press, 2016
    2. S. Chacon and B. Straub: Pro Git. Apress, 2014
    3. Sonatype Company: Maven: The Definitive Guide. O'Reilly, 2008
    4. D. R. Kuhn et al.: Practical Combinatorial Testing. NIST Special Publication, 2010
    5. M. Young and M. Pezze: Software Testing and Analysis: Process, Principles and Technique. John Wiley and Sons, 2008
    6. B. Laboon: A Friendly Introduction to Software Testing. CreateSpace Independent Publishing, 2017
    7. S. Newman: Building Microservices. O'Reilly, 2015
    8. M. Macero: Learn Microservices with Spring Boot. Apress, 2017
    9. Yuri Shkuro: Mastering Distributed Tracing: Analyzing performance in microservices and complex systems. Packt Publishing, 2019