- Docente: Davide Rossi
- Crediti formativi: 6
- SSD: INF/01
- Lingua di insegnamento: Italiano
- Moduli: Davide Rossi (Modulo 1) Ivan Lanese (Modulo 2)
- Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2)
- Campus: Bologna
- Corso: Laurea Magistrale in Informatica (cod. 8028)
Conoscenze e abilità da conseguire
Al termine del corso lo studente conosce gli aspetti principali dell'analisi, della progettazione e della realizzazione di sistemi software complessi attraverso un approccio basato sulle astrazioni di processo e servizio. Si affronteranno sia dal punto di vista progettuale che tecnologico architetture enterprise basate su servizi (SOA) e risorse (REST API) e si vedrà come queste possano essere messe a servizio dei processi di business.
Contenuti
Le architetture basate su servizi (SOA) vengono utilizzate per realizzare grandi sistemi software che operano fra più organizzazioni (come avviene in ambito enterprise) ma anche come struttura di base su cui costruire applicazioni flessibili ed estremamente scalabili (come nel caso dei microservizi).
Progettare questo tipo di sistemi e ragionare sulle loro proprietà richiede l’uso di astrazioni e tecniche di modellazione appropriate.
In questo insegnamento vedremo come le astrazioni di servizio e di processo possono interoperare per descrivere sistemi distribuiti complessi e vedremo tecniche di modellazione basate su queste astrazioni che aiutano a progettarli. Impareremo come modellare processi (usando BPMN), servizi (usando UML) e come modellare l’interazione fra processi e servizi e fra servizi diversi attraverso le coreografie.
Vedremo come sfruttare queste tecniche per progettare applicazioni aderenti allo stile architetturale orientato ai servizi sia in ambito cross-enterprise sia attraverso i microservizi (anche adottando specifici pattern). Vedremo anche nella pratica i protocolli e le tecnologie che possono essere utilizzati per la loro realizzazione; in particolare per le tecnologie di supporto ai servizi web vedremo SOAP/WSDL e lo stile RESTful; per i microservizi vedremo l’uso dei container (es. Docker), degli orchestratori di microservizi (es. Kubernetes), delle service mesh (es. Linkerd) e delle tecnologie di serializzazione (es. Protobuf).
Per quello che riguarda i microservizi cercheremo in particolare di capire i punti forti e i punti deboli di questa classe di applicazioni e capiremo come realizzare sistemi che siano sia scalabili sia affidabili.
Per facilitare la realizzazione immediata di esempi di alcune delle tecnologie legate ai servizi web man mano che verranno introdotte, useremo il linguaggio Jolie che permette la prototipazione rapida di soluzioni SOA.
Segue una lista dei principali argomenti del corso:
-
Enterprise software systems
-
Enterprise architecture and modeling
-
Business Process Management e BPMN
-
SOA/Coreografie
-
Web services (SOAP/WSLD/RESTful)
-
Microservices properties, design, patterns and implementation
-
Jolie
Testi/Bibliografia
Michael Papazoglou, "Web Services and SOA: Principles and
Technology", 2nd ed. 2013, ISBN 9780273732167
Mathias Weske, “Business Process Management: Concepts, Languages,
Architectures”, 3rd ed. 2019, ISBN 9783662594315
Metodi didattici
Lezioni frontati ed esercitazioni
Modalità di verifica e valutazione dell'apprendimento
Consegna e discussione di un progetto con contestuale verifica delle competenze (opzionale: homework in itinere)
Orario di ricevimento
Consulta il sito web di Davide Rossi
Consulta il sito web di Ivan Lanese
SDGs

L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.