77803 - INGEGNERIA DEL SOFTWARE ORIENTATA AI SERVIZI

Anno Accademico 2022/2023

  • 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. 5898)

Conoscenze e abilità da conseguire

Al termine dell'attività formativa lo studente conosce degli aspetti principali dell'analisi, della progettazione e della realizzazione di sistemi software complessi attraverso un approccio basato sulle astrazioni di processo e servizio. E' in grado di progettare, modellare e realizzare architetture virtualizzate moderne basate su servizi sia di tipo SOA enterprise che microservizi e sa modellare e supportare l'esecuzione dei processi di business integrando opportunamente i servizi che li compongono.

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.

In considerazione della tipologia di attività e dei metodi didattici adottati, la frequenza di questa attività formativa richiede la preventiva partecipazione di tutti gli studenti ai Moduli 1 e 2 di formazione sulla sicurezza nei luoghi di studio, https://elearning-sicurezza.unibo.it/ in modalità e-learning.


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