INGEGNERIA DEI SISTEMI DISTRIBUITI E LABORATORIO

9 CFU - 1° semestre

Docenti titolari dell'insegnamento

EMILIANO ALESSIO TRAMONTANA - Modulo INGEGNERIA DEI SISTEMI DISTRIBUITI - INF/01 - 6 CFU
ANDREA FRANCESCO FORNAIA - Modulo LABORATORIO - INF/01 - 3 CFU


Obiettivi formativi


Modalità di svolgimento dell'insegnamento


Prerequisiti richiesti



Frequenza lezioni



Contenuti del corso



Testi di riferimento


Altro materiale didattico



Programmazione del corso

INGEGNERIA DEI SISTEMI DISTRIBUITI
 ArgomentiRiferimenti testi
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 
LABORATORIO
 ArgomentiRiferimenti testi
1Introduzione ai DevOps: DevOps lifecycle, Continuous Integration, Continuous Delivery, SCM e Pipeline[1] 
2Git Workflow e sviluppo distribuito: commit graph, comandi base, git workflow, concetti avanzati, GitHub, GitLab, Code Coverage [2] 
3Maven: gestione dipendenze, compilazione e testing automatico, reportistica, integrazione con sistemi di CI/CD[3] 
4Unit Testing: Test Suite & Scaffolding, JUnit, JaCoCo, Mockito[6, note fornite] 
5Generazione automatica di test suite: generazione randomica con Randoop, generazione evolutiva con EvoSuite, cenni sul Model Checking[note fornite] 
6Testing Combinatoriale: Interaction Failures, 2-way interaction, Covering Array, Coffee4j[4, 5] 
7Mutation Testing: valutazione qualità di una test suite, PITest[5, note fornite] 
8Microservizi: Monolite vs Microservizi, Legge di Conway, Monolith First, Bounded Context, Coordinamento, Service Discovery, Load Balancing, API Gateway, Circuit Breaker, ELK, Affinità di Sessione, VM e Container[7] 
9Microservizi con Spring Boot: Spring Boot Initializr e Starters, Dependency Injection, Architettura Applicazione Web Spring, RESTful APIs, CRUD, Zuul[8] 
10Distributed Tracing in applicazioni a Microservizi con Open Tracing e Jaeger[9] 


Verifica dell'apprendimento


MODALITÀ DI VERIFICA DELL'APPRENDIMENTO

ESEMPI DI DOMANDE E/O ESERCIZI FREQUENTI



Apri in formato Pdf English version