20810007 - ARCHITETTURA DEI SISTEMI SOFTWARE

Il corso presenta la disciplina dell’architettura del software, che studia le relazioni tra le strutture dei sistemi software e le loro proprietà di qualità (requisiti non funzionali);
questa conoscenza è fondamentale ai fini dell’analisi, della progettazione, della valutazione e l’evoluzione dei sistemi software complessi. Presentare anche l'architettura dei sistemi software distribuiti, l’architettura a servizi e l’architettura del software per il cloud, nonché alcune tecnologie di middleware. Alla fine del corso, lo studente dovrebbe sapere impostare il progetto di un’architettura software, analizzandone dettagli e problematiche tecnologiche e metodologiche, e valutare l’architettura in termini di raggiungimento di obiettivi di qualità.

Curriculum

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; contenitori per componenti.
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 container; orchestrazione di container; continuous delivery.
Middleware.

Prerequisiti

È utile la conoscenza di nozioni di base dell'ingegneria del software, con particolare riferimento all'analisi e alla progettazione orientata agli oggetti.

Testi Adottati

Luca Cabibbo
Architettura del Software: Strutture e Qualità
Edizioni Efesto, 2021
ISBN: 9788833812458

Bibliografia Di Riferimento

Dispense del corso (prof. Luca Cabibbo), pubblicate sulla pagina Moodle del corso, organizzate per blocco del programma; per le esercitazioni sul middleware le dispense sono sufficienti. Codice delle esercitazioni nel repository GitHub del corso (github.com/aswroma3/asw). Il materiale è lo stesso per frequentanti e non frequentanti. Per approfondire: L. Bass, P. Clements, R. Kazman, Software Architecture in Practice, 4th ed., Addison-Wesley, 2021; N. Rozanski, E. Woods, Software Systems Architecture, 2nd ed., Addison-Wesley, 2011; C. Richardson, Microservices Patterns, Manning, 2018.

Modalità Erogazione

Lezioni frontali. Esercitazioni sul middleware.

Modalità Frequenza

Non sono previste lezioni e non c'è obbligo di frequenza. La partecipazione agli incontri in aula sul progetto è facoltativa ma consigliata a chi svolge il progetto; date e aule sono comunicate su Moodle.

Modalità Valutazione

L'esame si compone di tre parti: un progetto facoltativo ma fortemente consigliato, un quiz e una prova orale. Il voto finale è la somma dei punteggi delle tre parti; un totale di 31 punti corrisponde a 30 e lode. - Progetto (fino a 5 punti): si svolge in gruppi di 3 o 4 studenti su una traccia pubblicata su Moodle; richiede di realizzare e rilasciare con Docker un'applicazione a microservizi con comunicazione asincrona. Si consegna entro la data indicata su Moodle e si discute in aula nella sessione invernale, con una dimostrazione dell'applicazione e domande a ciascun componente; la valutazione può differire tra i componenti dello stesso gruppo. Il punteggio vale per tutti gli appelli dell'anno accademico. - Quiz (fino a 3 punti per chi ha svolto il progetto, fino a 8 per chi non l'ha svolto): si svolge il giorno dell'appello, prima della prova orale, e dura circa un'ora. Comprende 30 domande a risposta chiusa, con una sola risposta corretta e senza penalità per le risposte sbagliate, sulle parti teoriche del programma, escluse le esercitazioni sul middleware, in proporzione alla loro ampiezza. Il punteggio è proporzionale al numero di risposte corrette. - Prova orale (fino a 23 punti): verte sull'intero programma. Chi non ha svolto il progetto porta e illustra una piccola applicazione a microservizi eseguita con Docker Compose, modificandola su richiesta. Nella valutazione della prova orale e del progetto si tiene conto del livello e della qualità della conoscenza degli argomenti, della capacità di collegarli e di applicarli a casi concreti, della capacità di motivare le scelte architetturali e di valutarne i compromessi, della correttezza e della qualità della soluzione realizzata e dell'uso di un lessico tecnico appropriato. Le modalità d'esame dettagliate, la traccia del progetto e una simulazione del quiz sono disponibili sulla pagina Moodle del corso.

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; contenitori per componenti.
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 container; orchestrazione di container; continuous delivery.
Middleware.

Prerequisiti

È utile la conoscenza di nozioni di base dell'ingegneria del software, con particolare riferimento all'analisi e alla progettazione orientata agli oggetti.

Testi Adottati

Luca Cabibbo
Architettura del Software: Strutture e Qualità
Edizioni Efesto, 2021
ISBN: 9788833812458

Bibliografia Di Riferimento

Dispense del corso (prof. Luca Cabibbo), pubblicate sulla pagina Moodle del corso, organizzate per blocco del programma; per le esercitazioni sul middleware le dispense sono sufficienti. Codice delle esercitazioni nel repository GitHub del corso (github.com/aswroma3/asw). Il materiale è lo stesso per frequentanti e non frequentanti. Per approfondire: L. Bass, P. Clements, R. Kazman, Software Architecture in Practice, 4th ed., Addison-Wesley, 2021; N. Rozanski, E. Woods, Software Systems Architecture, 2nd ed., Addison-Wesley, 2011; C. Richardson, Microservices Patterns, Manning, 2018.

Modalità Erogazione

Lezioni frontali. Esercitazioni sul middleware.

Modalità Frequenza

Non sono previste lezioni e non c'è obbligo di frequenza. La partecipazione agli incontri in aula sul progetto è facoltativa ma consigliata a chi svolge il progetto; date e aule sono comunicate su Moodle.

Modalità Valutazione

L'esame si compone di tre parti: un progetto facoltativo ma fortemente consigliato, un quiz e una prova orale. Il voto finale è la somma dei punteggi delle tre parti; un totale di 31 punti corrisponde a 30 e lode. - Progetto (fino a 5 punti): si svolge in gruppi di 3 o 4 studenti su una traccia pubblicata su Moodle; richiede di realizzare e rilasciare con Docker un'applicazione a microservizi con comunicazione asincrona. Si consegna entro la data indicata su Moodle e si discute in aula nella sessione invernale, con una dimostrazione dell'applicazione e domande a ciascun componente; la valutazione può differire tra i componenti dello stesso gruppo. Il punteggio vale per tutti gli appelli dell'anno accademico. - Quiz (fino a 3 punti per chi ha svolto il progetto, fino a 8 per chi non l'ha svolto): si svolge il giorno dell'appello, prima della prova orale, e dura circa un'ora. Comprende 30 domande a risposta chiusa, con una sola risposta corretta e senza penalità per le risposte sbagliate, sulle parti teoriche del programma, escluse le esercitazioni sul middleware, in proporzione alla loro ampiezza. Il punteggio è proporzionale al numero di risposte corrette. - Prova orale (fino a 23 punti): verte sull'intero programma. Chi non ha svolto il progetto porta e illustra una piccola applicazione a microservizi eseguita con Docker Compose, modificandola su richiesta. Nella valutazione della prova orale e del progetto si tiene conto del livello e della qualità della conoscenza degli argomenti, della capacità di collegarli e di applicarli a casi concreti, della capacità di motivare le scelte architetturali e di valutarne i compromessi, della correttezza e della qualità della soluzione realizzata e dell'uso di un lessico tecnico appropriato. Le modalità d'esame dettagliate, la traccia del progetto e una simulazione del quiz sono disponibili sulla pagina Moodle del corso.

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; contenitori per componenti.
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 container; orchestrazione di container; continuous delivery.
Middleware.

Prerequisiti

È utile la conoscenza di nozioni di base dell'ingegneria del software, con particolare riferimento all'analisi e alla progettazione orientata agli oggetti.

Testi Adottati

Luca Cabibbo
Architettura del Software: Strutture e Qualità
Edizioni Efesto, 2021
ISBN: 9788833812458

Bibliografia Di Riferimento

Dispense del corso (prof. Luca Cabibbo), pubblicate sulla pagina Moodle del corso, organizzate per blocco del programma; per le esercitazioni sul middleware le dispense sono sufficienti. Codice delle esercitazioni nel repository GitHub del corso (github.com/aswroma3/asw). Il materiale è lo stesso per frequentanti e non frequentanti. Per approfondire: L. Bass, P. Clements, R. Kazman, Software Architecture in Practice, 4th ed., Addison-Wesley, 2021; N. Rozanski, E. Woods, Software Systems Architecture, 2nd ed., Addison-Wesley, 2011; C. Richardson, Microservices Patterns, Manning, 2018.

Modalità Erogazione

Lezioni frontali. Esercitazioni sul middleware.

Modalità Frequenza

Non sono previste lezioni e non c'è obbligo di frequenza. La partecipazione agli incontri in aula sul progetto è facoltativa ma consigliata a chi svolge il progetto; date e aule sono comunicate su Moodle.

Modalità Valutazione

L'esame si compone di tre parti: un progetto facoltativo ma fortemente consigliato, un quiz e una prova orale. Il voto finale è la somma dei punteggi delle tre parti; un totale di 31 punti corrisponde a 30 e lode. - Progetto (fino a 5 punti): si svolge in gruppi di 3 o 4 studenti su una traccia pubblicata su Moodle; richiede di realizzare e rilasciare con Docker un'applicazione a microservizi con comunicazione asincrona. Si consegna entro la data indicata su Moodle e si discute in aula nella sessione invernale, con una dimostrazione dell'applicazione e domande a ciascun componente; la valutazione può differire tra i componenti dello stesso gruppo. Il punteggio vale per tutti gli appelli dell'anno accademico. - Quiz (fino a 3 punti per chi ha svolto il progetto, fino a 8 per chi non l'ha svolto): si svolge il giorno dell'appello, prima della prova orale, e dura circa un'ora. Comprende 30 domande a risposta chiusa, con una sola risposta corretta e senza penalità per le risposte sbagliate, sulle parti teoriche del programma, escluse le esercitazioni sul middleware, in proporzione alla loro ampiezza. Il punteggio è proporzionale al numero di risposte corrette. - Prova orale (fino a 23 punti): verte sull'intero programma. Chi non ha svolto il progetto porta e illustra una piccola applicazione a microservizi eseguita con Docker Compose, modificandola su richiesta. Nella valutazione della prova orale e del progetto si tiene conto del livello e della qualità della conoscenza degli argomenti, della capacità di collegarli e di applicarli a casi concreti, della capacità di motivare le scelte architetturali e di valutarne i compromessi, della correttezza e della qualità della soluzione realizzata e dell'uso di un lessico tecnico appropriato. Le modalità d'esame dettagliate, la traccia del progetto e una simulazione del quiz sono disponibili sulla pagina Moodle del corso.

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; contenitori per componenti.
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 container; orchestrazione di container; continuous delivery.
Middleware.

Prerequisiti

È utile la conoscenza di nozioni di base dell'ingegneria del software, con particolare riferimento all'analisi e alla progettazione orientata agli oggetti.

Testi Adottati

Luca Cabibbo
Architettura del Software: Strutture e Qualità
Edizioni Efesto, 2021
ISBN: 9788833812458

Bibliografia Di Riferimento

Dispense del corso (prof. Luca Cabibbo), pubblicate sulla pagina Moodle del corso, organizzate per blocco del programma; per le esercitazioni sul middleware le dispense sono sufficienti. Codice delle esercitazioni nel repository GitHub del corso (github.com/aswroma3/asw). Il materiale è lo stesso per frequentanti e non frequentanti. Per approfondire: L. Bass, P. Clements, R. Kazman, Software Architecture in Practice, 4th ed., Addison-Wesley, 2021; N. Rozanski, E. Woods, Software Systems Architecture, 2nd ed., Addison-Wesley, 2011; C. Richardson, Microservices Patterns, Manning, 2018.

Modalità Erogazione

Lezioni frontali. Esercitazioni sul middleware.

Modalità Frequenza

Non sono previste lezioni e non c'è obbligo di frequenza. La partecipazione agli incontri in aula sul progetto è facoltativa ma consigliata a chi svolge il progetto; date e aule sono comunicate su Moodle.

Modalità Valutazione

L'esame si compone di tre parti: un progetto facoltativo ma fortemente consigliato, un quiz e una prova orale. Il voto finale è la somma dei punteggi delle tre parti; un totale di 31 punti corrisponde a 30 e lode. - Progetto (fino a 5 punti): si svolge in gruppi di 3 o 4 studenti su una traccia pubblicata su Moodle; richiede di realizzare e rilasciare con Docker un'applicazione a microservizi con comunicazione asincrona. Si consegna entro la data indicata su Moodle e si discute in aula nella sessione invernale, con una dimostrazione dell'applicazione e domande a ciascun componente; la valutazione può differire tra i componenti dello stesso gruppo. Il punteggio vale per tutti gli appelli dell'anno accademico. - Quiz (fino a 3 punti per chi ha svolto il progetto, fino a 8 per chi non l'ha svolto): si svolge il giorno dell'appello, prima della prova orale, e dura circa un'ora. Comprende 30 domande a risposta chiusa, con una sola risposta corretta e senza penalità per le risposte sbagliate, sulle parti teoriche del programma, escluse le esercitazioni sul middleware, in proporzione alla loro ampiezza. Il punteggio è proporzionale al numero di risposte corrette. - Prova orale (fino a 23 punti): verte sull'intero programma. Chi non ha svolto il progetto porta e illustra una piccola applicazione a microservizi eseguita con Docker Compose, modificandola su richiesta. Nella valutazione della prova orale e del progetto si tiene conto del livello e della qualità della conoscenza degli argomenti, della capacità di collegarli e di applicarli a casi concreti, della capacità di motivare le scelte architetturali e di valutarne i compromessi, della correttezza e della qualità della soluzione realizzata e dell'uso di un lessico tecnico appropriato. Le modalità d'esame dettagliate, la traccia del progetto e una simulazione del quiz sono disponibili sulla pagina Moodle del corso.

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; contenitori per componenti.
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 container; orchestrazione di container; continuous delivery.
Middleware.

Prerequisiti

È utile la conoscenza di nozioni di base dell'ingegneria del software, con particolare riferimento all'analisi e alla progettazione orientata agli oggetti.

Testi Adottati

Luca Cabibbo
Architettura del Software: Strutture e Qualità
Edizioni Efesto, 2021
ISBN: 9788833812458

Bibliografia Di Riferimento

Dispense del corso (prof. Luca Cabibbo), pubblicate sulla pagina Moodle del corso, organizzate per blocco del programma; per le esercitazioni sul middleware le dispense sono sufficienti. Codice delle esercitazioni nel repository GitHub del corso (github.com/aswroma3/asw). Il materiale è lo stesso per frequentanti e non frequentanti. Per approfondire: L. Bass, P. Clements, R. Kazman, Software Architecture in Practice, 4th ed., Addison-Wesley, 2021; N. Rozanski, E. Woods, Software Systems Architecture, 2nd ed., Addison-Wesley, 2011; C. Richardson, Microservices Patterns, Manning, 2018.

Modalità Erogazione

Lezioni frontali. Esercitazioni sul middleware.

Modalità Frequenza

Non sono previste lezioni e non c'è obbligo di frequenza. La partecipazione agli incontri in aula sul progetto è facoltativa ma consigliata a chi svolge il progetto; date e aule sono comunicate su Moodle.

Modalità Valutazione

L'esame si compone di tre parti: un progetto facoltativo ma fortemente consigliato, un quiz e una prova orale. Il voto finale è la somma dei punteggi delle tre parti; un totale di 31 punti corrisponde a 30 e lode. - Progetto (fino a 5 punti): si svolge in gruppi di 3 o 4 studenti su una traccia pubblicata su Moodle; richiede di realizzare e rilasciare con Docker un'applicazione a microservizi con comunicazione asincrona. Si consegna entro la data indicata su Moodle e si discute in aula nella sessione invernale, con una dimostrazione dell'applicazione e domande a ciascun componente; la valutazione può differire tra i componenti dello stesso gruppo. Il punteggio vale per tutti gli appelli dell'anno accademico. - Quiz (fino a 3 punti per chi ha svolto il progetto, fino a 8 per chi non l'ha svolto): si svolge il giorno dell'appello, prima della prova orale, e dura circa un'ora. Comprende 30 domande a risposta chiusa, con una sola risposta corretta e senza penalità per le risposte sbagliate, sulle parti teoriche del programma, escluse le esercitazioni sul middleware, in proporzione alla loro ampiezza. Il punteggio è proporzionale al numero di risposte corrette. - Prova orale (fino a 23 punti): verte sull'intero programma. Chi non ha svolto il progetto porta e illustra una piccola applicazione a microservizi eseguita con Docker Compose, modificandola su richiesta. Nella valutazione della prova orale e del progetto si tiene conto del livello e della qualità della conoscenza degli argomenti, della capacità di collegarli e di applicarli a casi concreti, della capacità di motivare le scelte architetturali e di valutarne i compromessi, della correttezza e della qualità della soluzione realizzata e dell'uso di un lessico tecnico appropriato. Le modalità d'esame dettagliate, la traccia del progetto e una simulazione del quiz sono disponibili sulla pagina Moodle del corso.