SOFTWARE ARCHITECTURES

Anno accademico
2025/2026 Programmi anni precedenti
Titolo corso in inglese
SOFTWARE ARCHITECTURES
Codice insegnamento
CM0639 (AF:576795 AR:323799)
Modalità
Blended (in presenza e online)
Crediti formativi universitari
6 su 12 di SOFTWARE ARCHITECTURES AND DEVELOPMENT METHODOLOGY
Livello laurea
Laurea magistrale (DM270)
Settore scientifico disciplinare
INF/01
Periodo
I Semestre
Anno corso
1
Sede
VENEZIA
L'obiettivo principale di questo corso è insegnare i fondamenti delle architetture software (e in particolare quali aspetti dovrebbero essere presi in considerazione quando si valuta quale architettura scegliere per sviluppare un sistema software) e i più importanti modelli architetturali che vengono oggi adottati in sistemi software moderni.
- Comprendere quali sono le principali caratteristiche di un'architettura software di cui tenere conto nella progettazione di un sistema software
- Discernere le diverse tipologie di architetture software esistenti rispetto alle loro caratteristiche
- Scegliere un'architettura software appropriata (o una combinazione di più architetture) durante la progettazione di un sistema software
Conoscenza approfondita dei linguaggi di programmazione imperativi e orientati agli oggetti. Conoscenza di alto livello dei principali pattern orientati agli oggetti e delle applicazioni Web e/o cloud.
Caratteristiche dell'architettura del software:
- Modularità e accoppiamento
- Caratteristiche operative: disponibilità, prestazioni, scalabilità, recuperabilità
- Caratteristiche strutturali: installabilita', configurabilità, estensibilità, aggiornabilità
- Misurazione delle caratteristiche
Pattern architetturali:
- Architetture monolitiche vs. distribuite
- A strati
- A pipeline
- Microkernel
- Basate su eventi
- Basato sullo spazio
- Microservizi
Scelta dell'architettura migliore per un progetto software considerando gli aspetti economici (in particolare il costo di sviluppo, operation e mantenimento) del sistema.

Sviluppo di architetture software utilizzando una moderna tecnologia (come Spring) e diverse sue tecnologie (come Spring Boot, Spring REST, Spring for Apache Kafka, Spring Web).
Mark Richards, Neal Ford: “Fundamentals of Software Architecture”,O'Reilly Media, January 2020
Esame scritto (un terzo del voto) che valuterà la comprensione delle caratteristiche dell'architettura software, e un progetto di gruppo e/o task settimanali (due terzi del voto, da inviare prima dell'esame scritto) che valuterà la capacità di scegliere e progettare una corretta architettura software.
scritto
Per quanto riguarda la valutazione del voto:
A. i punteggi nell'intervallo 18-22 saranno assegnati in presenza di:
- sufficiente comprensione dei requisiti architettonici e dei diversi modelli architettonici
- sufficienti competenze nella scelta dell'architettura giusta durante la progettazione di un sistema software
- sufficienti competenze nello sviluppo di sistemi software distribuiti
B. i punteggi nell'intervallo 23-26 saranno assegnati in presenza di:
- discreta o buona comprensione dei requisiti architettonici e dei diversi modelli architettonici
- discreta o buona competenza nella scelta dell'architettura giusta durante la progettazione di un sistema software
- discreta o buona competenza nello sviluppo di sistemi software distribuiti
C. i punteggi nell'intervallo 27-30 saranno assegnati in presenza di:
- eccellente comprensione dei requisiti architettonici e dei diversi modelli architettonici
- eccellenti competenze nella scelta dell'architettura giusta durante la progettazione di un sistema software
- eccellenti competenze nello sviluppo di sistemi software distribuiti
Lezioni frontali con slide ed esempi di sviluppo software.
Per la parte online del corso, come attivita' sincrone viene predisposto un forum all'interno della piattaforma Moodle che puo' essere utilizzato dagli studenti per interagire con il docente. Inoltre, viene predisposta una chat in cui gli studenti possono chiedere spiegazioni, approfondimenti e delucidazioni su quanto visto a lezione e sul materiale online.
Per quanto concerne le attivita' asincrone, ogni settimana inoltre vengono caricati materiali online che introducono le basi di diverse tecnologie che permettono di sviluppare architetture software complesse.
Inglese
Programma definitivo.
Data ultima modifica programma: 03/03/2025