INGEGNERIA DEI SISTEMI DISTRIBUITI E LABORATORIO

Academic Year 2019/2020 - 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, analysis of data related to the development process, validation of concurrent 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.

  • Laboratory

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


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 and implementation of aspect-oriented software systems. Design pattern for aspect-oriented systems and Refactoring to aspects. Java 8 and Map Reduce. Reactive programming design patterns Circuit Breaker, Bulkheads. Design patterns for secure distributed systems. Message-oriented Middleware RabbitMQ.

  • Laboratory

    Introduction to DevOps. Git Workflow for distributed development. Mining Software Repository. Combinatorial Testing. Model Checking for concurrent systems. Infrastructure Automation with OpenStack. Microservices. Microservices with Spring Boot.


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

  • Laboratory
    1. G. Kim et al.: The DevOps Handbook
    2. S. Chacon and B. Straub: Pro Git
    3. A. Tornhill: Your Code As a Crime Scene
    4. D. R. Kuhn et al.: Practical Combinatorial Testing
    5. M. Young and M. Pezze: Software Testing and Analysis: Process, Principles and Technique
    6. V.C. Bumgardner: OpenStack in action
    7. S. Newman: Building Microservices
    8. M. Macero: Learn Microservices with Spring Boot