Architettura dei Sistemi Software

Codice: 20810007

Scheda insegnamento

Anno Accademico di erogazione
2026/2027
Periodo di erogazione
Primo semestre
CFU
9 CFU
Lingua
Italiano
SSD
IINF-05/A

Scopri il programma didattico

Programma, testi adottati e modalità d’esame sono quelli pubblicati dai docenti per l’anno accademico 2026/2027. L’insegnamento è diviso in canali: ogni canale ha il suo programma.

Curriculum
Sistemi Informatici Complessi
Anno di corso
1
Periodo
Primo semestre
Ore
80
CUIN
260005030

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à di erogazione

Nell'anno accademico 2026/27 l'insegnamento non prevede lezioni: si svolgono gli esami. Lo studio si basa sul libro di testo e sulle dispense e sul codice delle esercitazioni dell'ultima edizione, pubblicati sulla pagina Moodle del corso. Il progetto di gruppo, che serve ad applicare le tecnologie studiate, è accompagnato da alcuni incontri in aula: la presentazione delle modalità d'esame e del progetto, un punto di controllo durante lo svolgimento, una simulazione del quiz in laboratorio e la discussione dei progetti. Su Moodle è sempre disponibile una simulazione online del quiz, con i rimandi al libro e alle dispense. Il docente riceve su appuntamento, da concordare per email.

Modalità di 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à di 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.

Prove previste

  • Prova orale
  • Prova pratica
  • Valutazione di un progetto

Curriculum
Ingegneria dei Dati
Anno di corso
1
Periodo
Primo semestre
Ore
80
CUIN
260005042

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à di erogazione

Nell'anno accademico 2026/27 l'insegnamento non prevede lezioni: si svolgono gli esami. Lo studio si basa sul libro di testo e sulle dispense e sul codice delle esercitazioni dell'ultima edizione, pubblicati sulla pagina Moodle del corso. Il progetto di gruppo, che serve ad applicare le tecnologie studiate, è accompagnato da alcuni incontri in aula: la presentazione delle modalità d'esame e del progetto, un punto di controllo durante lo svolgimento, una simulazione del quiz in laboratorio e la discussione dei progetti. Su Moodle è sempre disponibile una simulazione online del quiz, con i rimandi al libro e alle dispense. Il docente riceve su appuntamento, da concordare per email.

Modalità di 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à di 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.

Prove previste

  • Prova orale
  • Prova pratica
  • Valutazione di un progetto

Curriculum
Intelligenza artificiale e Machine Learning
Anno di corso
1
Periodo
Primo semestre
Ore
80
CUIN
260005052

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à di erogazione

Nell'anno accademico 2026/27 l'insegnamento non prevede lezioni: si svolgono gli esami. Lo studio si basa sul libro di testo e sulle dispense e sul codice delle esercitazioni dell'ultima edizione, pubblicati sulla pagina Moodle del corso. Il progetto di gruppo, che serve ad applicare le tecnologie studiate, è accompagnato da alcuni incontri in aula: la presentazione delle modalità d'esame e del progetto, un punto di controllo durante lo svolgimento, una simulazione del quiz in laboratorio e la discussione dei progetti. Su Moodle è sempre disponibile una simulazione online del quiz, con i rimandi al libro e alle dispense. Il docente riceve su appuntamento, da concordare per email.

Modalità di 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à di 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.

Prove previste

  • Prova orale
  • Prova pratica
  • Valutazione di un progetto

Curriculum
Algoritmi, Big Data e Machine Learning
Anno di corso
1
Periodo
Primo semestre
Ore
80
CUIN
260005064

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à di erogazione

Nell'anno accademico 2026/27 l'insegnamento non prevede lezioni: si svolgono gli esami. Lo studio si basa sul libro di testo e sulle dispense e sul codice delle esercitazioni dell'ultima edizione, pubblicati sulla pagina Moodle del corso. Il progetto di gruppo, che serve ad applicare le tecnologie studiate, è accompagnato da alcuni incontri in aula: la presentazione delle modalità d'esame e del progetto, un punto di controllo durante lo svolgimento, una simulazione del quiz in laboratorio e la discussione dei progetti. Su Moodle è sempre disponibile una simulazione online del quiz, con i rimandi al libro e alle dispense. Il docente riceve su appuntamento, da concordare per email.

Modalità di 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à di 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.

Prove previste

  • Prova orale
  • Prova pratica
  • Valutazione di un progetto

Curriculum
Cybersecurity
Anno di corso
1
Periodo
Primo semestre
Ore
80
CUIN
260005076

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à di erogazione

Nell'anno accademico 2026/27 l'insegnamento non prevede lezioni: si svolgono gli esami. Lo studio si basa sul libro di testo e sulle dispense e sul codice delle esercitazioni dell'ultima edizione, pubblicati sulla pagina Moodle del corso. Il progetto di gruppo, che serve ad applicare le tecnologie studiate, è accompagnato da alcuni incontri in aula: la presentazione delle modalità d'esame e del progetto, un punto di controllo durante lo svolgimento, una simulazione del quiz in laboratorio e la discussione dei progetti. Su Moodle è sempre disponibile una simulazione online del quiz, con i rimandi al libro e alle dispense. Il docente riceve su appuntamento, da concordare per email.

Modalità di 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à di 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.

Prove previste

  • Prova orale
  • Prova pratica
  • Valutazione di un progetto

Esplora gli obiettivi dell’insegnamento

Ambito disciplinare: Ingegneria informatica

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à.

Risultati di apprendimento attesi — Valter Crescenzi

1) Conoscenza e capacità di comprensione. Al termine dell'insegnamento lo studente conosce i concetti fondamentali dell'architettura del software: strutture, viste e descrizioni architetturali, attributi di qualità e tattiche per conseguirli, principali stili e pattern architetturali, architetture dei sistemi distribuiti, a servizi e a microservizi, tecniche e ambienti per il rilascio del software (virtualizzazione, container, orchestrazione). Sa definirli, descriverli e distinguerli, estendendo le nozioni di ingegneria del software apprese nella laurea triennale.

2) Capacità di applicare conoscenza e comprensione. Lo studente sa impostare l'architettura di un sistema software scegliendo stili, pattern e tattiche in funzione dei requisiti di qualità, e sa realizzare e rilasciare una semplice applicazione a microservizi con le tecnologie viste nelle esercitazioni (Spring Boot, comunicazione REST e asincrona con Kafka, Docker e Docker Compose).

3) Autonomia di giudizio. Attraverso l'analisi di casi e il progetto di gruppo, lo studente sa valutare e confrontare soluzioni architetturali alternative, riconoscendo i compromessi tra attributi di qualità (per esempio prestazioni, disponibilità, consistenza, modificabilità) e argomentando le proprie scelte.

4) Abilità comunicative. Attraverso il progetto di gruppo e la sua presentazione, e con la prova orale, lo studente sa illustrare un'architettura software e motivarne le scelte con un lessico tecnico appropriato, sia a interlocutori specialisti sia a non specialisti, anche documentandola per iscritto.

5) Capacità di apprendimento. Lo studente sa approfondire in autonomia nuovi stili architetturali, tecnologie di middleware e piattaforme di rilascio, reperendo e studiando documentazione tecnica e letteratura di settore, in un ambito in rapida evoluzione.

Risultati di apprendimento attesi — Valter Crescenzi

1) Conoscenza e capacità di comprensione. Al termine dell'insegnamento lo studente conosce i concetti fondamentali dell'architettura del software: strutture, viste e descrizioni architetturali, attributi di qualità e tattiche per conseguirli, principali stili e pattern architetturali, architetture dei sistemi distribuiti, a servizi e a microservizi, tecniche e ambienti per il rilascio del software (virtualizzazione, container, orchestrazione). Sa definirli, descriverli e distinguerli, estendendo le nozioni di ingegneria del software apprese nella laurea triennale.

2) Capacità di applicare conoscenza e comprensione. Lo studente sa impostare l'architettura di un sistema software scegliendo stili, pattern e tattiche in funzione dei requisiti di qualità, e sa realizzare e rilasciare una semplice applicazione a microservizi con le tecnologie viste nelle esercitazioni (Spring Boot, comunicazione REST e asincrona con Kafka, Docker e Docker Compose).

3) Autonomia di giudizio. Attraverso l'analisi di casi e il progetto di gruppo, lo studente sa valutare e confrontare soluzioni architetturali alternative, riconoscendo i compromessi tra attributi di qualità (per esempio prestazioni, disponibilità, consistenza, modificabilità) e argomentando le proprie scelte.

4) Abilità comunicative. Attraverso il progetto di gruppo e la sua presentazione, e con la prova orale, lo studente sa illustrare un'architettura software e motivarne le scelte con un lessico tecnico appropriato, sia a interlocutori specialisti sia a non specialisti, anche documentandola per iscritto.

5) Capacità di apprendimento. Lo studente sa approfondire in autonomia nuovi stili architetturali, tecnologie di middleware e piattaforme di rilascio, reperendo e studiando documentazione tecnica e letteratura di settore, in un ambito in rapida evoluzione.

Risultati di apprendimento attesi — Valter Crescenzi

1) Conoscenza e capacità di comprensione. Al termine dell'insegnamento lo studente conosce i concetti fondamentali dell'architettura del software: strutture, viste e descrizioni architetturali, attributi di qualità e tattiche per conseguirli, principali stili e pattern architetturali, architetture dei sistemi distribuiti, a servizi e a microservizi, tecniche e ambienti per il rilascio del software (virtualizzazione, container, orchestrazione). Sa definirli, descriverli e distinguerli, estendendo le nozioni di ingegneria del software apprese nella laurea triennale.

2) Capacità di applicare conoscenza e comprensione. Lo studente sa impostare l'architettura di un sistema software scegliendo stili, pattern e tattiche in funzione dei requisiti di qualità, e sa realizzare e rilasciare una semplice applicazione a microservizi con le tecnologie viste nelle esercitazioni (Spring Boot, comunicazione REST e asincrona con Kafka, Docker e Docker Compose).

3) Autonomia di giudizio. Attraverso l'analisi di casi e il progetto di gruppo, lo studente sa valutare e confrontare soluzioni architetturali alternative, riconoscendo i compromessi tra attributi di qualità (per esempio prestazioni, disponibilità, consistenza, modificabilità) e argomentando le proprie scelte.

4) Abilità comunicative. Attraverso il progetto di gruppo e la sua presentazione, e con la prova orale, lo studente sa illustrare un'architettura software e motivarne le scelte con un lessico tecnico appropriato, sia a interlocutori specialisti sia a non specialisti, anche documentandola per iscritto.

5) Capacità di apprendimento. Lo studente sa approfondire in autonomia nuovi stili architetturali, tecnologie di middleware e piattaforme di rilascio, reperendo e studiando documentazione tecnica e letteratura di settore, in un ambito in rapida evoluzione.

Risultati di apprendimento attesi — Valter Crescenzi

1) Conoscenza e capacità di comprensione. Al termine dell'insegnamento lo studente conosce i concetti fondamentali dell'architettura del software: strutture, viste e descrizioni architetturali, attributi di qualità e tattiche per conseguirli, principali stili e pattern architetturali, architetture dei sistemi distribuiti, a servizi e a microservizi, tecniche e ambienti per il rilascio del software (virtualizzazione, container, orchestrazione). Sa definirli, descriverli e distinguerli, estendendo le nozioni di ingegneria del software apprese nella laurea triennale.

2) Capacità di applicare conoscenza e comprensione. Lo studente sa impostare l'architettura di un sistema software scegliendo stili, pattern e tattiche in funzione dei requisiti di qualità, e sa realizzare e rilasciare una semplice applicazione a microservizi con le tecnologie viste nelle esercitazioni (Spring Boot, comunicazione REST e asincrona con Kafka, Docker e Docker Compose).

3) Autonomia di giudizio. Attraverso l'analisi di casi e il progetto di gruppo, lo studente sa valutare e confrontare soluzioni architetturali alternative, riconoscendo i compromessi tra attributi di qualità (per esempio prestazioni, disponibilità, consistenza, modificabilità) e argomentando le proprie scelte.

4) Abilità comunicative. Attraverso il progetto di gruppo e la sua presentazione, e con la prova orale, lo studente sa illustrare un'architettura software e motivarne le scelte con un lessico tecnico appropriato, sia a interlocutori specialisti sia a non specialisti, anche documentandola per iscritto.

5) Capacità di apprendimento. Lo studente sa approfondire in autonomia nuovi stili architetturali, tecnologie di middleware e piattaforme di rilascio, reperendo e studiando documentazione tecnica e letteratura di settore, in un ambito in rapida evoluzione.

Risultati di apprendimento attesi — Valter Crescenzi

1) Conoscenza e capacità di comprensione. Al termine dell'insegnamento lo studente conosce i concetti fondamentali dell'architettura del software: strutture, viste e descrizioni architetturali, attributi di qualità e tattiche per conseguirli, principali stili e pattern architetturali, architetture dei sistemi distribuiti, a servizi e a microservizi, tecniche e ambienti per il rilascio del software (virtualizzazione, container, orchestrazione). Sa definirli, descriverli e distinguerli, estendendo le nozioni di ingegneria del software apprese nella laurea triennale.

2) Capacità di applicare conoscenza e comprensione. Lo studente sa impostare l'architettura di un sistema software scegliendo stili, pattern e tattiche in funzione dei requisiti di qualità, e sa realizzare e rilasciare una semplice applicazione a microservizi con le tecnologie viste nelle esercitazioni (Spring Boot, comunicazione REST e asincrona con Kafka, Docker e Docker Compose).

3) Autonomia di giudizio. Attraverso l'analisi di casi e il progetto di gruppo, lo studente sa valutare e confrontare soluzioni architetturali alternative, riconoscendo i compromessi tra attributi di qualità (per esempio prestazioni, disponibilità, consistenza, modificabilità) e argomentando le proprie scelte.

4) Abilità comunicative. Attraverso il progetto di gruppo e la sua presentazione, e con la prova orale, lo studente sa illustrare un'architettura software e motivarne le scelte con un lessico tecnico appropriato, sia a interlocutori specialisti sia a non specialisti, anche documentandola per iscritto.

5) Capacità di apprendimento. Lo studente sa approfondire in autonomia nuovi stili architetturali, tecnologie di middleware e piattaforme di rilascio, reperendo e studiando documentazione tecnica e letteratura di settore, in un ambito in rapida evoluzione.

Obiettivi di sostenibilità

  • 9 Imprese, innovazione e infrastrutture
  • 4 Istruzione di qualità

Esempi di domande d’esame

Valter Crescenzi

1) Che cos'è un attributo di qualità e come si specifica con uno scenario di qualità? Fare un esempio per la disponibilità.
2) Descrivere lo stile architetturale Layers: struttura, vantaggi, svantaggi e varianti.
3) Scalabilità e progettazione per la scalabilità: scalabilità verticale e orizzontale, tattiche principali.
4) Comunicazione sincrona e asincrona tra servizi: differenze, vantaggi e svantaggi, ruolo di un message broker come Kafka.
5) Che cosa sono i microservizi? Come si gestiscono i dati e la consistenza tra microservizi?
6) Container e macchine virtuali: differenze; a che cosa serve un orchestratore di container.
Esempio di domanda del quiz: «Nella comunicazione asincrona basata su messaggi, il produttore di un messaggio: (a) attende che il consumatore abbia elaborato il messaggio; (b) può proseguire senza attendere il consumatore; (c) deve conoscere l'indirizzo di rete del consumatore».

Valter Crescenzi

1) Che cos'è un attributo di qualità e come si specifica con uno scenario di qualità? Fare un esempio per la disponibilità.
2) Descrivere lo stile architetturale Layers: struttura, vantaggi, svantaggi e varianti.
3) Scalabilità e progettazione per la scalabilità: scalabilità verticale e orizzontale, tattiche principali.
4) Comunicazione sincrona e asincrona tra servizi: differenze, vantaggi e svantaggi, ruolo di un message broker come Kafka.
5) Che cosa sono i microservizi? Come si gestiscono i dati e la consistenza tra microservizi?
6) Container e macchine virtuali: differenze; a che cosa serve un orchestratore di container.
Esempio di domanda del quiz: «Nella comunicazione asincrona basata su messaggi, il produttore di un messaggio: (a) attende che il consumatore abbia elaborato il messaggio; (b) può proseguire senza attendere il consumatore; (c) deve conoscere l'indirizzo di rete del consumatore».

Valter Crescenzi

1) Che cos'è un attributo di qualità e come si specifica con uno scenario di qualità? Fare un esempio per la disponibilità.
2) Descrivere lo stile architetturale Layers: struttura, vantaggi, svantaggi e varianti.
3) Scalabilità e progettazione per la scalabilità: scalabilità verticale e orizzontale, tattiche principali.
4) Comunicazione sincrona e asincrona tra servizi: differenze, vantaggi e svantaggi, ruolo di un message broker come Kafka.
5) Che cosa sono i microservizi? Come si gestiscono i dati e la consistenza tra microservizi?
6) Container e macchine virtuali: differenze; a che cosa serve un orchestratore di container.
Esempio di domanda del quiz: «Nella comunicazione asincrona basata su messaggi, il produttore di un messaggio: (a) attende che il consumatore abbia elaborato il messaggio; (b) può proseguire senza attendere il consumatore; (c) deve conoscere l'indirizzo di rete del consumatore».

Valter Crescenzi

1) Che cos'è un attributo di qualità e come si specifica con uno scenario di qualità? Fare un esempio per la disponibilità.
2) Descrivere lo stile architetturale Layers: struttura, vantaggi, svantaggi e varianti.
3) Scalabilità e progettazione per la scalabilità: scalabilità verticale e orizzontale, tattiche principali.
4) Comunicazione sincrona e asincrona tra servizi: differenze, vantaggi e svantaggi, ruolo di un message broker come Kafka.
5) Che cosa sono i microservizi? Come si gestiscono i dati e la consistenza tra microservizi?
6) Container e macchine virtuali: differenze; a che cosa serve un orchestratore di container.
Esempio di domanda del quiz: «Nella comunicazione asincrona basata su messaggi, il produttore di un messaggio: (a) attende che il consumatore abbia elaborato il messaggio; (b) può proseguire senza attendere il consumatore; (c) deve conoscere l'indirizzo di rete del consumatore».

Valter Crescenzi

1) Che cos'è un attributo di qualità e come si specifica con uno scenario di qualità? Fare un esempio per la disponibilità.
2) Descrivere lo stile architetturale Layers: struttura, vantaggi, svantaggi e varianti.
3) Scalabilità e progettazione per la scalabilità: scalabilità verticale e orizzontale, tattiche principali.
4) Comunicazione sincrona e asincrona tra servizi: differenze, vantaggi e svantaggi, ruolo di un message broker come Kafka.
5) Che cosa sono i microservizi? Come si gestiscono i dati e la consistenza tra microservizi?
6) Container e macchine virtuali: differenze; a che cosa serve un orchestratore di container.
Esempio di domanda del quiz: «Nella comunicazione asincrona basata su messaggi, il produttore di un messaggio: (a) attende che il consumatore abbia elaborato il messaggio; (b) può proseguire senza attendere il consumatore; (c) deve conoscere l'indirizzo di rete del consumatore».

Il corso in cui è erogato questo insegnamento

API