Analisi e Progettazione del Software
Professore:
Luca Cabibbo
Email: cabibbo@dia.uniroma3.it
Obiettivo formativo
Il corso di Analisi e progettazione del software presenta gli aspetti fondamentali della modellazione, analisi e progettazione del software, con riferimento alle tecniche di analisi e progettazione orientata agli oggetti ed allo sviluppo, iterativo, incrementale e agile.
Lo studente che abbia superato il corso dovrà essere in grado di progettare autonomamente applicazioni software di media complessità, nonché partecipare al progetto di applicazioni software di grande complessità.
Contenuti
Sviluppo iterativo e incrementale. Unified Process.
Analisi dei requisiti. Casi d’uso.
Analisi orientata agli oggetti. Modello di dominio. Diagrammi di sequenza di sistema. Contratti delle operazioni.
Progettazione orientata agli oggetti. Diagrammi di interazione. Diagrammi delle classi di progetto.
Dalla progettazione orientata agli oggetti alla programmazione orientata agli oggetti.
Principi di analisi e progettazione orientata agli oggetti. Pattern GRASP.
Design patterns.
Progettazione dell’architettura logica. Pattern architetturali.
Gestione della persistenza degli oggetti. (cenni)
Unified Modeling Language.
Prerequisiti
Costituiscono un PREREQUISITO FONDAMENTALE di questo corso i corsi di Basi di dati I e di Programmazione orientata agli oggetti.
Programma del Corso
- Introduzione all’analisi e progettazione orientata agli oggetti – Capitolo
1 - Processi per lo sviluppo del software; processo a cascata; processo
iterativo, evolutivo e agile; Unified Process (UP) –
Capitolo 2 (di cui da 2.6 a 2.9 e 2.12 solo cenni) - Introduzione agli studi di caso POS NextGen e Monopoly Game System – Capitolo 3
- Ideazione – Capitolo 4 (cenni)
- Requisiti: Requisiti – Capitolo 5
- Requisiti: Casi d’uso – Capitolo 6 (da 6.1 a 6.13, nonché 6.17, 6.20 e 6.21)
- Requisiti: Altri requisiti – Capitolo 7 (cenni)
- Elaborazione: Iterazione 1 – Capitolo 8
- Analisi orientata agli oggetti: Modelli di dominio – Capitolo 9
- Analisi orientata agli oggetti: Diagrammi di sequenza di sistema –
Capitolo 10 - Analisi orientata agli oggetti: Contratti delle operazioni – Capitolo 11
- Dai requisiti alla progettazione – Capitolo 12
- Architettura logica e diagrammi dei package di UML – Capitolo 13
- Verso la progettazione a oggetti – Capitolo 14
- Diagrammi di interazione di UML – Capitolo 15
- Diagrammi delle classi di UML – Capitolo 16 (normalmente in dettaglio,
con le seguenti eccezioni: 16.15 cenni, 16.16 cenni, saltare 16.18, saltare
16.20) - Progettazione orientata agli oggetti: Progettazione basata
sull’assegnazione di responsabilità; pattern GRASP (information
expert, creator, low coupling, high cohesion, controller) – Capitolo 17 - Progettazione orientata agli oggetti: Realizzazione di casi d’uso con i
pattern GRASP – Capitolo
18 - Progettazione orientata agli oggetti: Progettare per la visibilità –
Capitolo 19 - Progettazione orientata agli oggetti: Trasformare i progetti in codice –
Capitolo 20 - Progettazione orientata agli oggetti: Sviluppo guidato dai test e
Refactoring – Capitolo
21 (cenni) - Progettazione orientata agli oggetti: Strumenti per UML e UML come
progetto – Capitolo
22 (cenni) - Elaborazione: Iterazione 2 – Capitolo 23
- Analisi orientata agli oggetti: Rapido aggiornamento dell’analisi –
Capitolo 24 - Analisi orientata agli oggetti: Raffinamento del modelli di dominio –
Capitolo 31 (da 31.1 a 31.9, in dettaglio; 31.10, cenni; da 31.11 a 31.15 e 31.17,
in dettaglio) - Progettazione orientata agli oggetti: Altri pattern GRASP (polymorphism,
pure fabrication, indirection, protected variations) – Capitolo 25 - Progettazione orientata agli oggetti: Progettazione basata sull’uso dei
design pattern GoF: adapter, factory, singleton, strategy, facade,
observer (in dettaglio), proxy (cenni) – Capitolo 26 - Raffinamento dell’architettura logica: collaborazioni tra strati – Capitolo 34 (34.2 e
34.4) - Ulteriore progettazione a oggetti con i pattern GoF – Capitolo 36 (36.9
e 36.10) - SOLID: Altri principi per la progettazione a oggetti
(cenni) – dispensa aps91 a cura del docente - Introduzione a Domain-Driven Design ed alla persistenza di oggetti
(cenni) – dispensa aps92 a cura del docente