20810007 - ARCHITETTURA DEI SISTEMI SOFTWARE

Fornire competenze, sia metodologiche che tecnologiche, sull'architettura del software, che ha un ruolo fondamentale nel raggiungimento degli obiettivi di qualità (requisiti non funzionali) dei sistemi software. Verrà studiata l'architettura dei sistemi software distribuiti e di tipo enterprise, l'architettura basata su componenti, l'architettura orientata ai servizi e le architetture per il cloud. Verranno anche presentati aspetti tecnologici relativi alle principali tipologie di middleware. Alla fine del corso lo studente dovrebbe sapere impostare un progetto di un’architettura software, analizzandone dettagli e problematiche tecnologiche e metodologiche, e valutare l’architettura in termini di raggiungimento di obiettivi di qualità.
scheda docente | materiale didattico

Programma

Fondamenti: Concetti di architettura del software; Descrizioni architetturali; Attributi di qualità; Processo di definizione dell'architettura software.
Qualità e progettazione per gli attributi di qualità: prestazioni, modificabilità, disponibilità, verificabilità, scalabilità, interoperabilità, monitoraggio.
Pattern architetturali: Domain Model; Domain Object; Layers; Pipes & Filters; altri pattern POSA; architettura esagonale.
Architettura dei sistemi distribuiti; client/server, peer-to-peer, invocazione remota; broker; comunicazione asincrona; messaging; componenti; architettura a componenti; container.
Architettura a servizi: servizi; architettura a servizi; servizi REST; architettura a microservizi; architettura nativa per il cloud.
DevOps e rilascio del software: ambienti e gestione di ambienti; cloud computing; macchine virtuali e virtualizzazione di sistema; contenitori e virtualizzazione basata su contenitori; orchestrazione di contenitori; continuous delivery.
Middleware.

Testi Adottati

Dispense a cura del docente (http://cabibbo.dia.uniroma3.it/asw/).

Modalità Erogazione

Lezioni frontali ed esercitazioni.

Modalità Valutazione

Piccolo progetto (opzionale). Prova scritta (due domande). Prova orale (due domande).