SOFTWARE ARCHITECTURES

Anno accademico
2023/2024 Programmi anni precedenti
Titolo corso in inglese
SOFTWARE ARCHITECTURES
Codice insegnamento
CM0633 (AF:451591 AR:245312)
Modalità
Blended (in presenza e online)
Crediti formativi universitari
6
Livello laurea
Laurea magistrale (DM270)
Settore scientifico disciplinare
INF/01
Periodo
I Semestre
Anno corso
1
Sede
VENEZIA
Spazio Moodle
Link allo spazio del corso
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

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.
Lezioni frontali con slide ed esempi di sviluppo software. Esercitazioni di programmazione, svolti anche in aula. Materiale online sulle diverse tecnologie utilizzate per mettere in pratica i pattern architetturali studiati.
Inglese
scritto
Programma definitivo.
Data ultima modifica programma: 17/01/2024