SOFTWARE ARCHITECTURES

Anno accademico
2024/2025 Programmi anni precedenti
Titolo corso in inglese
SOFTWARE ARCHITECTURES
Codice insegnamento
CM0633 (AF:513761 AR:286783)
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
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.
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
scritto
Programma definitivo.
Data ultima modifica programma: 14/10/2024