Obiettivi formativi generali in termini di risultati di apprendimento attesi.
Lezioni frontali per concetti e soluzioni, prove pratiche con esempi di codice per le problematiche esaminate.
Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus.
Capacità di progettare ed implementare sistemi ad oggetti.
La frequenza delle lezioni è fortemente consigliata.
Introduzione ai DevOps. Git Workflow e sviluppo distribuito. Maven. Unit Testing e generazione automatica di test. Mutation Testing. Testing Combinatoriale. Microservizi. Microservizi con Spring Boot. Distributed Tracing.
Argomenti | Riferimenti testi | |
---|---|---|
1 | Introduzione ai DevOps: DevOps lifecycle, Continuous Integration, Continuous Delivery, SCM e Pipeline | [1] |
2 | Git Workflow e sviluppo distribuito: commit graph, comandi base, git workflow, concetti avanzati, GitHub, GitLab, Code Coverage | [2] |
3 | Maven: gestione dipendenze, compilazione e testing automatico, reportistica, integrazione con sistemi di CI/CD | [3] |
4 | Unit Testing: Test Suite & Scaffolding, JUnit, JaCoCo, Mockito | [6, note fornite] |
5 | Generazione automatica di test suite: generazione randomica con Randoop, generazione evolutiva con EvoSuite, cenni sul Model Checking | [note fornite] |
6 | Testing Combinatoriale: Interaction Failures, 2-way interaction, Covering Array, Coffee4j | [4, 5] |
7 | Mutation Testing: valutazione qualità di una test suite, PITest | [5, note fornite] |
8 | Microservizi: 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] |
9 | Microservizi con Spring Boot: Spring Boot Initializr e Starters, Dependency Injection, Architettura Applicazione Web Spring, RESTful APIs, CRUD, Zuul | [8] |
10 | Distributed Tracing in applicazioni a Microservizi con Open Tracing e Jaeger | [9] |
L'esame consiste di un progetto ed una prova orale.
Caratteristiche principali di un approccio DevOps
Descrivere le operazioni di fetch, pull e push tramite trasformazioni sul Commit Graph
Descrivere il concetto di Covering Array
Descrivere il concetto di Mutation Testing
Che relazione c'è tra Dependence Injection e Unit Testing
Descrivere il concetto di Affinità di Sessione e come evitarlo in un contesto a Microservizi
Mostrare la struttura tipica di un'applicazione a Microservizi implementata tramite Spring Boot
Discutere la differenza tra logging e tracing in un'applicazione distribuita