Analisi e progettazione del software

Anno accademico 2024-2025

(Attenzione, alcune delle informazioni su questo sito web, ed in particolare quelle scritte in grigio e/o su sfondo giallo, potrebbero riferirsi all'edizione precedente del corso di Analisi e progettazione del software)

Prof. Luca Cabibbo


Avvisi

(E' disponibile anche un elenco completo degli avvisi.)


Ecco i risultati della seconda prova intermedia del 29 maggio, con l'indicazione degli studenti ammessi o non ammessi alla terza prova intermedia.
I voti sono espressi in decimi.
L'ammissione è stata determinata anche sulla base della possibilità di raggiungere una valutazione complessiva sufficiente alle prove intermedie.

La terza prova intermedia del corso di Analisi e progettazione del software si terrà la mattina di giovedì 12 giugno ed avrà una durata di 60 minuti circa, e si svolgerà come segue:

Si raccomanda la massima puntualità.

Gli studenti del secondo turno sono pregati di attendere in silenzio il completamento del primo turno prima di entrare in aula.

Alcune ulteriori informazioni sulla terza prova intermedia di APS:


Informazioni relative al primo appello d'esame di giugno-luglio 2025 del corso di Analisi e progettazione del software.

In questa sessione ci sono due appelli per del corso di Analisi e progettazione del software. I due appelli sono mutuamente esclusivi. (Uno studente può prenotarsi ad entrambi gli appelli, ma può sostenere l'esame in uno solo dei due appelli.)

La prova scritta di questo appello d'esame si terrà nella seguente data:

Per partecipare all'esame è necessario prenotarsi all'esame tramite il portale dello studente GOMP. La prenotazione all'appello d'esame va fatta entro giovedì 26 giugno (le prenotazioni sono iniziate il 15 maggio).
In particolare, gli studenti dovranno prenotarsi all'appello d'esame di codice 20801962.

Si ricorda che le prenotazioni agli esami dovranno essere effettuate obbligatoriamente attraverso il portale dello studente GOMP.
In particolare, gli studenti che non sono prenotati ad un esame non potranno sostenere l'esame stesso, in quanto i verbali d’esame vengono predisposti in modo automatico in base alle prenotazioni sul portale: né il docente né la segreteria didattica possono aggiungere nominativi di studenti che non risultano prenotati.
Pertanto, gli studenti non prenotati sul portale dello studente GOMP non saranno ammessi all'esame.

Studenti che hanno problemi a prenotarsi all'esame sono invitati a comunicarlo al docente per posta elettronica e al più presto.
Inoltre, coloro che si sono prenotati all'esame ma non intendono presentarsi alle prove d'esame sono invitati a comunicarlo al docente per posta elettronica e al più presto.

Si ricorda inoltre che alle prove d'esame lo studente deve portare il libretto universitario oppure un documento di riconoscimento valido. Studenti che non abbiano né il libretto universitario né un documento di riconoscimento valido non saranno ammessi all'esame.

Si raccomanda inoltre la massima puntualità, sia nella prenotazione (come già osservato) che nella partecipazione alle prove d'esame.

Per gli studenti che intendono sostenere l'esame con progetto (il che è fortemente consigliato):


Informazioni relative al secondo appello d'esame di giugno-luglio 2025 del corso di Analisi e progettazione del software.

In questa sessione ci sono due appelli per del corso di Analisi e progettazione del software. I due appelli sono mutuamente esclusivi. (Uno studente può prenotarsi ad entrambi gli appelli, ma può sostenere l'esame in uno solo dei due appelli.)

La prova scritta di questo appello d'esame si terrà nella seguente data:

Per partecipare all'esame è necessario prenotarsi all'esame tramite il portale dello studente GOMP. La prenotazione all'appello d'esame va fatta entro giovedì 10 luglio (le prenotazioni sono iniziate il 15 maggio).
In particolare, gli studenti dovranno prenotarsi all'appello d'esame di codice 20801962.

Si ricorda che le prenotazioni agli esami dovranno essere effettuate obbligatoriamente attraverso il portale dello studente GOMP.
In particolare, gli studenti che non sono prenotati ad un esame non potranno sostenere l'esame stesso, in quanto i verbali d’esame vengono predisposti in modo automatico in base alle prenotazioni sul portale: né il docente né la segreteria didattica possono aggiungere nominativi di studenti che non risultano prenotati.
Pertanto, gli studenti non prenotati sul portale dello studente GOMP non saranno ammessi all'esame.

Studenti che hanno problemi a prenotarsi all'esame sono invitati a comunicarlo al docente per posta elettronica e al più presto.
Inoltre, coloro che si sono prenotati all'esame ma non intendono presentarsi alle prove d'esame sono invitati a comunicarlo al docente per posta elettronica e al più presto.

Si ricorda inoltre che alle prove d'esame lo studente deve portare il libretto universitario oppure un documento di riconoscimento valido. Studenti che non abbiano né il libretto universitario né un documento di riconoscimento valido non saranno ammessi all'esame.

Si raccomanda inoltre la massima puntualità, sia nella prenotazione (come già osservato) che nella partecipazione alle prove d'esame.

Per gli studenti che intendono sostenere l'esame con progetto (il che è fortemente consigliato):


Le lezioni del corso di Analisi e progettazione del software sono terminate.


Le lezioni del corso di Analisi e progettazione del software si svolgeranno:

Si raccomanda la massima puntualità.

Le lezioni del corso sono pensate per essere seguite dagli studenti in presenza. Inoltre, per quanto possibile (ma senza nessuna garanzia), le esercitazioni (ma non le lezioni) saranno anche registrate e rese disponibili su Teams:

Se effettuate, le registrazioni delle esercitazioni saranno disponibili, ma solo temporaneamente (per 7 giorni), sul canale Generale del team del corso, File > Recordings > Solo visualizzazione.


Introduzione al corso

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

Prerequisiti

Costituiscono un prerequisito fondamentale di questo corso i corsi di Basi di dati e di Programmazione orientata agli oggetti. Prerequisiti specifici per il corso di Analisi e progettazione del software sono descritti in questo documento.


Lezioni

(Attenzione, alcune delle informazioni su questa parte del sito web, e in particolare quelle scritte in grigio e quelle dopo la riga gialla, potrebbero riferirsi all'edizione precedente del corso di Analisi e progettazione del software)

Legenda adottata nei lucidi

Argomenti delle lezioni svolte 

Data Argomento
(anche con riferimento ai capitoli e alle sezioni del libro di testo)
Lucidi
(non sostituiscono il libro)

3 marzo 2025

* Introduzione al corso di Analisi e progettazione del software

aps00

  1. Analisi e progettazione orientata agli oggetti (Capitolo 1)

aps01

4 marzo 2025

non ci sarà lezione

 

6 marzo 2025

2. Sviluppo iterativo ed evolutivo (Capitolo 2, Introduzione, da 2.1 a 2.9)

aps02

 

3. Sviluppo agile (Capitolo 3)

aps03

 

 

10 marzo 2025 4. Studi di caso (Capitolo 4)

 

 

5. Iterazione 0: analisi dei requisiti (Capitolo 5, cenni)  
  6. Requisiti evolutivi (Capitolo 6) aps06
  7. Casi d'uso (Capitolo 7, Introduzione, da 7.1 a 7.8) aps07

11 marzo 2025

7. Casi d'uso (Capitolo 7, da 7.8 a 7.13, 7.17, 7.21 e 7.22)  
  8. Altri requisiti (Capitolo 8, cenni) aps08
  9. Storie utente (Capitolo 9, Introduzione, da 9.1 a 9.3, 9.8) aps09
  10. Iterazione 1: Concetti fondamentali (Capitolo 10, paragrafo 10.1) aps10
13 marzo 2025 * Alcune idee sui sistemi software e la loro architettura apsA
  11. Verso l'analisi a oggetti aps11
  * Dalla progettazione concettuale alla modellazione di dominio apsB

 

 

17 marzo 2025 12. Modellazione di dominio (Cap.12, da 12.1 a 12.6, nonché 12.20) aps12a (prima parte)

18 marzo 2025

12. Modellazione di dominio (Cap. 12, da 12.6 a 12.14) aps12b (seconda parte)

20 marzo 2025

non ci sarà lezione

 

 

 

24 marzo 2025

12. Modellazione di dominio (Cap. 12, da 12.14 a 12.20)  
25 marzo 2025 Esercitazione OOA: ERedit (requisiti), modellazione di dominio  
27 marzo 2025 Esercitazione OOA: ERedit (requisiti), modellazione di dominio  

 

12. Modellazione di dominio (Cap. 12, da 12.21 a 12.22)  
  13. Operazioni di sistema e diagrammi di sequenza di sistema (Cap. 13) aps13

 

14. Contratti delle operazioni di sistema (Cap. 14, introduzione e 14.1) aps14

 

 

31 marzo 2025 Esercitazione OOA: Acme Pizza (requisiti, esercizi su modellazione di dominio)  

1 aprile 2025

14. Contratti delle operazioni di sistema (Cap. 14, da 14.1 a 14.9 e da 14.11 a 14.12) aps14
  15. Dai requisiti alla progettazione, iterativamente (Cap. 15)  
  16. Architettura logica (Cap. 16, da 16.1 a 16.6) aps16
3 aprile 2025 16. Architettura logica (Cap. 16, da 16.7 a 16.8) aps16
  17. Verso la progettazione a oggetti (Cap. 17) aps17
  19. Diagrammi delle classi (Cap. 19, da 19.1 a 19.7 e da 19.10 a 19.15) aps19

 

 

7 aprile 2025 Esercitazione OOA: ERedit (requisiti), operazioni di sistema, contratti delle operazioni per loginUtente, apriDiagramma, creaDiagramma, creaEntità, creaAttributo  
8 aprile 2025 Esercitazione OOA: ERedit (requisiti), contratti delle operazioni per creaRelazione, chiudiDiagramma  
  18. Diagrammi di interazione (Cap. 18, da 18.1 a 18.5) aps18
10 aprile 2025 18. Diagrammi di interazione (Cap. 18, 18.6) aps18
  19. Diagrammi delle classi (Cap. 19, 19.19) aps19
  20. GRASP: Progettazione di oggetti con responsabilità (Cap. 20, da 20.1 a 20.9) aps20a

 

 

 

 

14 aprile 2025 Esercitazione OOA: Acme Pizza (requisiti, esercizi su operazioni di sistema)  
15 aprile 2025 20. GRASP: Progettazione di oggetti con responsabilità (Cap. 20, 20.9) aps20a
  21. Esempi di progettazione a oggetti con i pattern GRASP (Cap. 21, da 21.1 a 21.4, fino a makeNewSale) aps21a
17 aprile 2025 21. Esempi di progettazione a oggetti con i pattern GRASP (Cap. 21, da 21.1 a 21.4, enterItem) aps21a
  22. Progettare per la visibilità (Cap. 22) aps22

 

 

18 - 22 aprile 2025 Vacanze di Pasqua  

 

 

24 aprile 2025

non ci sarà lezione

 

 

 

28 aprile 2025 Prima prova intermedia  
29 aprile 2025 21. Esempi di progettazione a oggetti con i pattern GRASP (Cap. 21, paragrafo 21.4, fino alla fine del paragrafo) aps21a

 

 

5 maggio 2025

non ci sarà lezione

 

6 maggio 2025 23. Trasformare i progetti in codice (Cap. 23, da 23.1 a 23.12) aps23a
  * Retrospettiva sull'iterazione 1 apsC

 

20. GRASP: Progettazione di oggetti con responsabilità (Cap. 20, da 20.10 a 20.12, e introduzione ad accoppiamento e coesione) aps20b

8 maggio 2025

non ci sarà lezione

 

 

 

12 maggio 2025 Esercitazione OOD: ERedit (requisiti): loginUtente, apriDiagramma, creaDiagramma  
13 maggio 2025 Esercitazione OOD: ERedit (requisiti): creaEntità, creaAttributo, creaRelazione  
  Esercitazione OOP: ERedit (requisiti): codice per creaAttributo  

15 maggio 2025

20. GRASP: Progettazione di oggetti con responsabilità (Cap. 20, introduzione ad accoppiamento e coesione, e da 20.13 a 20.15) aps20b

 

 

19 maggio 2025 21. Esempi di progettazione a oggetti con i pattern GRASP (Cap. 21, 21.5) aps21b
  23. Trasformare i progetti in codice (Paragrafo 23.13)  
  24. Sviluppo guidato dai test e Refactoring (Cap. 24, cenni) aps24
  26. Iterazione 2: Altri pattern (Cap. 26)  
20 maggio 2025 Esercitazione OOD: Acme Pizza (requisiti, esercizi di progettazione a oggetti)  
22 maggio 2025
(con inizio alle 9:30)
Esercitazione OOP: Acme Pizza (requisiti, esercizi di progettazione a oggetti)  
  27. Rapido aggiornamento dell'analisi (e del progetto) (Cap. 27) aps27
  34. Ulteriore modellazione di dominio (Cap. 34, da 34.1 a 34.13 e 34.17) aps34

 

 

26 maggio 2025 35. Altri SSD e contratti (Cap. 35, cenni) aps35
  28. GRASP: altri oggetti con responsabilità (Capitolo 28, da 28.1 a 28.3)  

27 maggio 2025

non ci sarà lezione

 

29 maggio 2025 Seconda prova intermedia  

 

 

3 giugno 2025
(con inizio alle ore 9:30)
28. GRASP: altri oggetti con responsabilità (Capitolo 28, 28.4) aps28
  29. Applicare i design pattern GoF: introduzione, Adapter, Factory, Singleton e conclusione sul problema dei servizi esterni (cenni) (Cap. 29, da 29.1 a 29.2 e  da 29.4 a 29.6 e 29.11, cenni) aps29a
  29. Applicare i design pattern GoF: Strategy (in dettaglio), Facade (cenni) (Cap. 29, 29,7 (in dettaglio) e 29.9 (cenni)) aps29b
5 giugno 2025
(con inizio alle ore 9:30)
29. Applicare i design pattern GoF: Observer (cenni) (Cap. 29, 29.10 (cenni)) aps29b
  37. Raffinamento dell'architettura logica: collaborazioni tra strati (cenni) (Cap. 37, 37.2 e 37.4, cenni) aps37a

 

39. Ulteriore progettazione a oggetti con i pattern GoF: Repository e Template Method (Cap. 39, 39.2 (cenni), 39.10 (in dettaglio), 39.11 (cenni) e 39.12 (cenni))

aps39a

 

 

9 giugno 2025

non ci sarà lezione

 

10 giugno 2025
(con inizio alle ore 9:30)
Esercitazione OOA/D: AcmePayroll (studio di caso)  
12 giugno 2025 Terza prova intermedia  

 

 

  le lezioni del corso sono terminate  

 

 

 

 

In questa tabella, tutto ciò che segue questa riga si riferisce all'anno accademico precedente

 

 

 

 

 

 

 

 

 

 

 

In questa tabella, tutto ciò che segue questa riga si riferisce all'anno accademico precedente

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Valutazione basata su prove in itinere 

Durante il corso saranno proposte delle prove in itinere. Alcune di queste prove sono da svolgere autonomamente “a casa” (homework), mentre altre si svolgono “in aula” (prove intermedie).

Molte esercitazioni verteranno proprio sugli argomenti delle prove in itinere, dando in questo modo agli studenti l’importante possibilità di “autovalutarsi”.

Inoltre, gli studenti frequentanti che non hanno mai sostenuto l’esame di APS in passato potranno anche essere valutati sulla base delle prove in itinere:


Prove in itinere e homework

Per ciascuna prova in itinere o homework, i requisiti sono descritti in un documento diverso da quello contenente gli esercizi della prova in itinere o homework.

  Homework/autovalutazione Requisiti Data pubblicazione Consegna elettronica Consegna cartacea
1 Acme Pizza: Analisi - Modellazione di dominio Acme Pizza 25 marzo 2025 entro le ore 20 di domenica 30 marzo no
val 1 scheda di autovalutazione dell'homework 1   31 marzo 2025 entro le ore 20 di mercoledì 2 aprile no
2 Acme Pizza: Analisi - Operazioni di sistema Acme Pizza 7 aprile 2025 entro le ore 20 di venerdì 11 aprile no
val 2 scheda di autovalutazione dell'homework 2   14 aprile 2025 entro le ore 14 di mercoledì 16 aprile no
3 Acme Pizza: Progettazione a oggetti Acme Pizza 14 maggio 2025 se attivata, entro le ore 18 di domenica 18 maggio in alternativa, lunedì 19 maggio tra le ore 10:00 e le ore 10:15 in aula N11 (si veda il relativo avviso)
            

Uno studente potrà consegnare le proprie soluzioni degli homework, scritte a mano su carta e realizzate individualmente, come segue:

Saranno accettate e valutate solo le consegne puntuali.

Inoltre:

Inoltre, uno studente potrà consegnare le autovalutazioni delle proprie soluzioni degli homework, come segue:

Saranno accettate e valutate solo le consegne puntuali.


Programma (ordinamento 270)

Programma preliminare del corso di Analisi e progettazione del software per gli studenti dell'ordinamento 270, per l'anno accademico 2023-2024 – l'indicazione dei capitoli fa riferimento all'edizione italiana del 2020 del libro di testo Applicare UML e i pattern  

I concetti introdotti durante il corso sono esemplificati con riferimento ai seguenti studi di caso, che sono parte integrante del programma d'esame:


Materiale didattico

Libro di testo

In alternativa, la versione originale in inglese della terza edizione del libro:

Ulteriori libri, utili per la consultazione (in ordine sparso)

Sito web del corso

Pagina Moodle del corso

L’iscrizione alla pagina Moodle del corso è necessaria per iscriversi al team del corso e per seguire le lezioni.
Tuttavia, questa pagina non dovrebbe contenere materiale didattico, ma verrà usata per le prove in itinere e forse anche per le prove d’esame. 

Team del corso

Studi di caso 

I concetti introdotti durante il corso sono esemplificati con riferimento ai seguenti studi di caso, che sono parte integrante del programma d'esame:

Ulteriori studi di caso che possono essere utilizzati nel corso:


Esami (in caso di normale attività didattica)

Modalità di svolgimento degli esami di profitto per gli appelli ordinari del corso di Analisi e progettazione del software, in caso di normale attività didattica

Esame con progetto

Esame senza progetto

Esame con prove in itinere

Appelli straordinari

In caso di appelli straordinari, la modalità d'esame di Analisi e progettazione del software potrà, a secondo delle circostanze, essere diversa. Ad esempio, solo esame scritto, solo esame orale, oppure progetto e esame orale, oppure progetto e esame scritto. Contattare il docente per chiarimenti.


Date d'esame

Nell'anno accademico 2023-2024 sono previste le seguenti date d'esame (attenzione, potrebbero ancora cambiare):

Per partecipare agli esami è necessario prenotarsi ad esso presso il portale dello studente GOMP al corso di codice 20801962. La prenotazione va normalmente fatta entro quattro giorni lavorativi prima della data dell'appello (che corrispondono a circa una settimana effettiva).

Chi avesse problemi a prenotarsi presso il sito delle prenotazioni è invitato caldamente a contattare il docente per posta elettronica entro gli stessi termini.

Per motivi organizzativi, gli studenti non prenotati che comunque non contatteranno il docente entro 24 ore dall'esame non saranno ammessi all'esame stesso.


Testi di prove d'esame di appelli conclusi

Dell'anno accademico 2011-2012

Dell'anno accademico 2008-2009

Dell'anno accademico 2006-2007 

Dell'anno accademico 2005-2006 (la modalità d'esame potrebbe essere diversa da quella prevista per questo anno accademico) 

Dell'anno accademico 2004-2005 (la modalità d'esame potrebbe essere diversa da quella prevista per questo anno accademico) 

Dell'anno accademico 2003-2004 (la modalità d'esame potrebbe essere diversa da quella prevista per questo anno accademico)

Dell'anno accademico 2002-2003 (con le stesse modalità dell'anno accademico 2003-2004, ma con un programma leggermente diverso, e un livello di approfondimento minore per alcuni degli argomenti trattati)


Informazioni per studenti Erasmus

In passato, si sono verificate delle situazioni spiacevoli con alcuni studenti Erasmus.
(Ci tengo a sottolineare il fatto che ciò è avvenuto solo con alcuni studenti Erasmus: altri studenti Erasmus si sono comportati correttamente, ed hanno studiato in modo assolutamente dignitoso).

A causa di tali avvenimenti, gli studenti Erasmus interessati a frequentare e sostenere l'esame di Analisi e progettazione del software devono

Si ricorda inoltre che al corso di Analisi e progettazione del software sono attribuiti 6 CFU (crediti formativi universitari), e che pertanto l'impegno richiesto ad uno studente in possesso dei prerequisiti del corso è di circa 6x25=150 ore.

Il docente sottolinea che finora ha trattato - e continuerà a trattare - gli studenti Erasmus allo stesso modo - dunque, né meglio né peggio - degli studenti locali.
In particolare (anche se non ci dovrebbe essere bisogno di dirlo) uno studente Erasmus che studia bene la materia verrà promosso all'esame, mentre uno studente Erasmus che studia poco o studia male la materia verrà bocciato all'esame - esattamente come verrebbe bocciato all'esame uno studente locale che studia poco o studia male. Questo indipendentemente da qualunque fatto o situazione che non riguarda strettamente lo studio e la comprensione della materia. E con l'ovvia considerazione che decidere se uno studente ha studiato bene o male è responsabilità della commissione d'esame - e non dello studente.


En pasado, se han verificado unas situaciones desagradables con unos estudiantes Erasmus.
(Quiero acentuar que esto ha pasado solo con unos estudiantes Erasmus: otros estudiantes se han comportado correctamente y han siempre estudiado de una manera absolutamente decente.) 

Por esos eventos, los estudiantes Erasmus que son interesados a frecuentar y dar el examen de Analisi e progettazione del software tienen que

Se recuerda tambien que al curso de Analisi e progettazione del software se dan 6 CFU (crediti formativi universitari), y que entonces el empeño que se pide a un estudiante que ya posee los requisitos del curso es más o menos de 6x25=150 horas .

El profesor acentua que hasta ahora ha tratado – y seguirá tratando- los estudiantes Erasmus de la misma manera – es decir ni mejor ni pejor – de los estudiantes locales .
En particular, aunque no sea necesario decirlo, un estudiante Erasmus que estudia bien la materia aprobará el examen, mientras un estudiante Erasmus que estudia poco o mal la materia suspenderá el examen – de la misma manera de un estudiante local que estudia poco o estudia mal. Eso independientemente de todos los aspectos que no conciernen propiamente el estudio y la comprensión de la materia. Y, por supuesto,considerando tambien que es la Comision de Examen que decide si un estudiante ha estudiado poco o mal – y no el estudiante mismo.