Analisi e progettazione del software

Anno accademico 2011-2012

(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.)


Lunedì 21 maggio non ci sarà lezione di Analisi e progettazione del software.


Sono stati pubblicati il testo del quinto e sesto homework.

Gli homework 5 e 6 non andranno consegnati come i precedenti. Piuttosto, sono un sussidio per l'autovalutazione degli studenti, con riferimento alle ultime esercitazioni del corso.


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


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.


Lezioni

(Attenzione, alcune delle informazioni su questa parte del 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)

Legenda adottata nelle dispense

Argomenti delle lezioni svolte 

Data Argomento
(anche con riferimento ai capitoli e alle sezioni del libro di testo)
Materiale didattico

1 marzo 2012

*. Introduzione al corso di Analisi e progettazione del software

aps00

  1. Introduzione all'analisi e alla progettazione orientata agli oggetti (Capitolo 1, da 1.1 a 1.5)

aps01

 

 

5 marzo 2012 1. Introduzione all'analisi e alla progettazione orientata agli oggetti (Capitolo 1, 1.6 e 1.7)

aps01

 

2. Sviluppo iterativo, evolutivo ed agile (Capitolo 2, da 2.1 a 2.6, nonché 2.10 e 2.11)

aps02

7 marzo 2012 * Dalla progettazione concettuale alla modellazione di dominio aps91
  Esercitazione: Modellazione di dominio: VideoRental (requisiti, pagine 1 e 2, più pagina 3 (solo esercizio A1))  
8 marzo 2012 3. Studi di caso (Capitolo 3)

aps03

 

4. Ideazione (Capitolo 4, cenni) aps04
  5. Requisiti evolutivi (Capitolo 5) aps05
  6. Casi d'uso (Capitolo 6, da 6.1 a 6.5, 6.7 e 6.21) aps06

 

 

12 marzo 2012

6. Casi d'uso (Capitolo 6, da 6.6 a 6.13, 6.17, 6.20)  
  7. Altri requisiti (Capitolo 7, cenni) aps07
14 marzo 2012 8. Iterazione 1: Concetti fondamentali (Capitolo 8, cenni) aps08
  * Alcune idee sui sistemi software e la loro architettura aps92
  9. Modelli di dominio (Cap.9, da 9.1 a 9.4) aps09

15 marzo 2012

9. Modelli di dominio (Cap.9, da 9.5 a 9.11) aps09

 

 

19 marzo 2012

9. Modelli di dominio (Cap. 9, da 9.12 a 9.19, nonché 31.17) aps09
21 marzo 2012 10. Diagrammi di sequenza di sistema (Cap. 10) aps10

 

11. Contratti delle operazioni (Cap. 11) aps11

22 marzo 2012

9. Modelli di dominio (Cap. 31, par. 31.11) aps09
  Esercitazione OOA: ERedit (requisiti), modellazione di dominio, contratti delle operazioni per nuovoDiagramma e nuovaEntità  

 

 

26 marzo 2012 12. Dai requisiti alla progettazione, iterativamente (Cap. 12) aps12
  13. Architettura logica e diagrammi dei package di UML (Cap. 13) aps13
  Esercitazione OOA: ERedit (requisiti), contratti delle operazioni per nuovoAttributo e nuovaRelazione  
28 marzo 2012 14. Verso la progettazione a oggetti (Cap. 14) aps14
  15. Diagrammi di interazione di UML (Cap. 15, da 15.1 a 15.4) aps15
  16. Diagrammi delle classi di UML (Cap. 16, si veda il programma più avanti per ciò che va fatto in dettaglio e ciò che non va fatto) aps16
29 marzo 2012 Esercitazione OOA: AcmePlaylist (requisiti, esercizi su modellazione di dominio)  

 

 

2 aprile 2012 15. Diagrammi di interazione di UML (Cap. 15, 15.5) aps15
  17. GRASP: Progettazione di oggetti con responsabilità (Cap. 17, da 17.1 a 17.8) aps17a
4 aprile 2012 18. Esempi di progettazione a oggetti con i pattern GRASP (Cap. 18, da 18.1 a 18.4, fino a enterItem) aps18
5 aprile 2012 Esercitazione OOA: AcmePlaylist (requisiti, esercizi su operazioni di sistema)  

 

 

  Vacanze di Pasqua  

 

 

11 aprile 2012 Esercitazione OOA: AcmePlaylist (requisiti, esercizi su operazioni di sistema), ancora sui contratti  
  18. Esempi di progettazione a oggetti con i pattern GRASP (Cap. 18, paragrafo 18.4, da enterItem a getTotal) aps18
  19. Progettare per la visibilità (Cap. 19) aps19
12 aprile 2012 18. Esempi di progettazione a oggetti con i pattern GRASP (Cap. 18, paragrafo 18.4, da makePayment, nonché 18.6 e 18.7) aps18
  20. Trasformare i progetti in codice (Cap. 20, da 20.1 a 20.11) aps20

 

 

16 aprile 2012 non ci sarà lezione  
18 aprile 2012 Esercitazione OOD: ERedit (requisiti)  
19 aprile 2012 17. GRASP: Progettazione di oggetti con responsabilità (Cap. 17, da 17.9 a 17.12) aps17b

 

 

23 aprile 2012 17. GRASP: Progettazione di oggetti con responsabilità (Cap. 17, da 17.13 a 17.14) aps17b
  Esercitazione OOD: ERedit (requisiti)  

25 aprile 2012

Festa della liberazione  
26 aprile 2012 Esercitazione OOD: AcmePlaylist (requisiti, esercizi di progettazione)  

 

 

30 aprile 2012 non ci sarà lezione  
2 maggio 2012 18. Esempi di progettazione a oggetti con i pattern GRASP (Cap. 18, 18.5) aps18
  20. Trasformare i progetti in codice (Cap. 20, paragrafo 20.12) aps20
  21. Sviluppo guidato dai test e Refactoring (Cap. 21) aps21
3 maggio 2012 23. Iterazione 2: Altri pattern (Cap. 23) aps23
  24. Rapido aggiornamento dell'analisi (Cap. 24) aps24
  31. Raffinamento del modello di dominio (Cap. 31, 31.1 cenni, da 31.2 a 31.9 in dettaglio, 31.10 cenni, da 31.11 a 31.15 in dettaglio, 31.16 cenni, 31.17 in dettaglio) aps31

 

 

7 maggio 2012 32. Ancora su SSD e contratti aps32
  25. GRASP: altri oggetti con responsabilità (Cap. 25, 25.1 e 25.2) aps25
9 maggio 2012 Prova intermedia: AcmePlaylist (requisiti, esercizi di progettazione)  
10 maggio 2012 Esercitazione OOD: AcmePlaylist (requisiti, esercizi di progettazione)  
  questionari di valutazione della didattica  

 

 

14 maggio 2012 25. GRASP: altri oggetti con responsabilità (Cap. 25, 25.3 e 25.4) aps25
  26. Applicare i design pattern GoF: Adapter, Factory, Singleton (Cap. 26, da 26.1 a 26.6, e da 26.11 a 26.12), Proxy (cenni, vedi dispensa aps26a) aps26a
16 maggio 2012 26. Applicare i design pattern GoF: Strategy, Facade, Observer (Cap. 26, 26.7, 26.9, 26.10, e da 26.11 a 26.12) aps26b
17 maggio 2012 34. Raffinamento dell'architettura logica: collaborazioni tra strati (Cap. 34, 34.2 e 34.4) vedi aps26b

36. Ulteriore progettazione a oggetti con i pattern GoF: template method (Cap. 36, 36.9 e 36.10)

aps36a

 

 

21 maggio 2012

SOLID: Altri principi di progettazione a oggetti (cenni)

aps92

  Esercitazione OOD: acmeBay (requisiti, esercizi di analisi)  

23 maggio 2012

Introduzione a Domain-Driven Design e alla gestione di oggetti persistenti (cenni)

aps93

  Esercitazione OOD: acmeBay (requisiti, esercizi di progettazione)  
24 maggio 2012 Esercitazione OOD: acmeBay (requisiti, esercizi di progettazione)  

 

 

28 maggio 2012    
30 maggio 2012    
31 maggio 2012    

 

 

4 giugno 2012    
6 giugno 2012    
7 giugno 2012    

 

 

 


Homework

Le soluzioni agli homework, scritte individualmente e a mano, vanno fatte pervenire al docente all'inizio delle lezioni del corso oppure al ricevimento studenti, e comunque nei tempi indicati nella seguente tabella:

Homework Argomento Requisiti Data pubblicazione Data consegna
1 AcmePlaylist: Analisi - Modellazione di dominio AcmePlaylist lunedì 19 marzo all'inizio della lezione di
mercoledì 28 marzo
2 AcmePlaylist: Analisi - Operazioni di sistema AcmePlaylist giovedì 22 marzo all'inizio della lezione di
mercoledì 4 aprile
3 AcmePlaylist: Analisi - Progettazione UC1 (Inserimento nuovo album) AcmePlaylist giovedì 12 aprile entro la lezione di
giovedì 26 aprile
4 AcmePlaylist: Analisi - Progettazione UC2 (Creazione playlist) AcmePlaylist venerdì 4 maggio svolgimento in aula N1,
mercoledì 9 maggio,
ore 9:15
AcmeBay: Analisi AcmeBay giovedì 17 maggio nessuna consegna
6 AcmeBay: Progettazione AcmeBay giovedì 17 maggio nessuna consegna

Per ciascun homework, i requisiti sono descritti in un documento diverso da quello contenente gli esercizi dell'homework.

Alcune precisazioni sulla consegna degli homework:

Inoltre:


Programma (ordinamento 270)

Programma preliminare del corso di Analisi e progettazione del software per gli studenti dell'ordinamento 270, per l'anno accademico 2011-2012 – l'indicazione dei capitoli fa riferimento all'edizione italiana 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:


Programma (ordinamento 509)

Il programma definitivo del corso di Analisi e progettazione del software per gli studenti dell'ordinamento 509 è quello dell'anno accademico 2009-2010 – l'indicazione dei capitoli fa riferimento all'edizione italiana 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

Errata corrige: figura 6.1 di pag. 66 e figura 6.4 di pagina 97

È anche possibile utilizzare la versione originale in inglese dello stesso libro:

In questo caso, è utile sapere che c'è una corrispondenza un po' strana tra i capitoli della versione italiana e quelli della versione inglese (perlomeno nella prima stampa, non so se anche nelle ristampe in circolazione adesso; l'ordine giusto è quello del libro in italiano). Infatti, nella terza edizione inglese (almeno nella sua prima stampa) alcuni capitoli sono stati collocati nel posto sbagliato. In generale, la corrispondenza tra capitoli dovrebbe essere chiara dai titoli dei capitoli stessi.

Più precisamente: Normalmente i capitoli corrispondono (ad esempio, 7 inglese con 7 italiano), con queste eccezioni:

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

Sito web del corso

Forum/newsgroup 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:

Regolamento ufficiale del Monopoli


Esami (ordinamento 270)

Modalità d'esame di Analisi e progettazione del software per gli studenti dell'ordinamento 270: 

Esame con progetto

Esame senza progetto

Esame con homework


Esami (ordinamento 509)

E' necessaria una precisazione importante per gli studenti dell'ordinamento 509.
Normalmente, questi studenti devono sostenere l'esame di Analisi e progettazione del software per studenti 509 da 5 cfu.
Tuttavia, studenti dell'ordinamento 509 che avessero inserito l'esame di Analisi e progettazione del software nel loro piano di studi dall'anno accademico 2010-2011 in poi, devono invece probabilmente sostenere l'esame di Analisi e progettazione del software per studenti 270 da 6 cfu.
Nel dubbio, contattare il docente con opportuno anticipo rispetto alle date d'esame.

La modalità d'esame di Analisi e progettazione del software per gli studenti dell'ordinamento 509 è quella dell'anno accademico 2009-2010, come segue: 

Esame con progetto

Esame senza progetto

Esame con homework


Date d'esame

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

Per partecipare agli esami è necessario prenotarsi ad esso presso il portale dello studente (gli studenti dell'ordinamento 270 al corso di codice 20801962, gli studenti dell'ordinamento 509 che devono sostenere l'esame da 5 cfu al corso di codice 20801503, gli studenti dell'ordinamento 509 che devono sostenere l'esame da 6 cfu 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 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.