Analisi e progettazione del software

Anno accademico 2009-2010

Prof. Luca Cabibbo

Attenzione, alcune sezioni di questo sito (in particolare, quelle scritte in grigio) potrebbero ancora riferirsi all'edizione 2008-2009 del corso.


Avvisi

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


E' stato pubblicato il testo del secondo homework.

Il secondo homework, per chi vuole, andrà consegnato entro la lezione di lunedì 29 marzo.


Lunedì 22 marzo, nell'orario consueto (9:45-11:15) ci sarà un'esercitazione di analisi orientata agli oggetti basata sullo studio di caso ERedit (requisiti - si noti che si fa riferimento allo studio di caso, e NON al testo del compito d'esame dell'11 luglio 2003).

Gli studenti sono invitati a guardare con anticipo il testo dello studio di caso, e provare a fare l'analisi orientata agli oggetti (modello di dominio e contratti delle operazioni di sistema) per il sistema ERedit.


Sono stati pubblicati i requisiti ed il testo del primo homework. (Notare che si tratta di due documenti diversi, e non di un singolo file.)

Il primo homework, per chi vuole, andrà consegnato entro la lezione di lunedì 22 marzo.


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

Dunque, il corso avrà inizio lunedì 1 marzo 2010.


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

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

Argomenti delle lezioni svolte 

Attenzione, alcune delle informazioni che seguono (in particolare, quelle scritte in grigio) potrebbero ancora riferirsi all'edizione 2008-2009 del corso.

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

1 marzo 2010

*. Introduzione al corso di Analisi e progettazione del software

aps00

1. Introduzione all'analisi e alla progettazione orientata agli oggetti (Capitolo 1)

aps01

3 marzo 2010 Dalla progettazione concettuale alla modellazione di dominio apsER2MD
  Esercitazione: Modellazione di dominio: VideoRental (requisiti, pagine 1 e 2) esercitazione 3/3/2010

5 marzo 2010

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

aps02

  3. Studi di caso (Capitolo 3)

aps03

 

 

8 marzo 2010

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

10 marzo 2010

6. Casi d'uso (Capitolo 6, sez. 6.17, 6.20 e 6.21)  
  7. Altri requisiti (Capitolo 7, cenni) aps07
  8. Iterazione 1: Concetti fondamentali (Capitolo 8, cenni) aps08
  9. Modelli di dominio (Cap.9, da 9.1 a 9.4, più alcune parti delle sezioni successive) aps09

12 marzo 2010

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

 

 

15 marzo 2010

9. Modelli di dominio (Cap. 9, da 9.15 a 9.19)  
  10. Diagrammi di sequenza di sistema (Cap. 10) aps10

17 marzo 2010

11. Contratti delle operazioni (Cap. 11) aps11

 

9. Modelli di dominio (Cap. 31, par 31.11 e 31.17)  
  12. Dai requisiti alla progettazione, iterativamente (Cap. 12) aps12
19 marzo 2010 13. Architettura logica e diagrammi dei package di UML (Cap. 13) aps13
  15. Diagrammi di interazione di UML (Cap. 15, da 15.1 a 15.4) aps15

 

 

22 marzo 2010 Esercitazione OOA: ERedit (requisiti)  
24 marzo 2010 15. Diagrammi di interazione di UML (Cap. 15, 15.5) 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
  14. Verso la progettazione a oggetti (Cap. 14) aps14
  17. GRASP: Progettazione di oggetti con responsabilità (Cap. 17, da 17.1 a 17.8) aps17a
26 marzo 2010 17. GRASP: Progettazione di oggetti con responsabilità (Cap. 17, da 17.9 a 17.12)  

 

 

29 marzo 2010 Esercitazione OOA: AcmeU (requisiti)  
31 marzo 2010 Esercitazione OOA: AcmeU (requisiti)  
  17. GRASP: Progettazione di oggetti con responsabilità (Cap. 17, 17.13 e 17.14)  
  18. Esempi di progettazione a oggetti con i pattern GRASP (Cap. 18, da 18.1 a 18.4 (fino a makeNewSale))  
  Interruzione  
7 aprile 2010 18. Esempi di progettazione a oggetti con i pattern GRASP (Cap. 18, 18.4, da enterItem a getTotal)  
  19. Progettare per la visibilità (Cap. 19)  
9 aprile 2010 18. Esempi di progettazione a oggetti con i pattern GRASP (Cap. 18, 18.4 (da makePayment), e da 18.6 a 18.7)  
  20. Trasformare i progetti in codice (Cap. 20, tranne 20.12)  
  21. Sviluppo guidato dai test e Refactoring (Cap. 21, cenni)  

 

 

12 aprile 2010 Esercitazione OOD: ERedit (requisiti), prima parte  
14 aprile 2010 18. Esempi di progettazione a oggetti con i pattern GRASP (Cap. 18, 18.5)  
  Esercitazione OOD: ERedit (requisiti), seconda parte  
16 aprile 2010 22. Strumenti per UML e UML come progetto (Cap. 22, cenni)    
  23. Iterazione 2: Altri pattern (Cap. 23)  
  24. Rapido aggiornamento dell'analisi (Cap. 24)  
  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)  
  Interruzione  
12 maggio 2009 25. GRASP: altri oggetti con responsabilità (Cap. 25)  
  Esercitazione OOD/OOP: ERedit (requisiti)  
19 maggio 2009 Esercitazione OOA/OOD: AcmeU (requisiti)  
21 maggio 2009 26. Applicare i design pattern GoF: Adapter, Factory, Singleton, Strategy (Cap. 26, da 26.1 a 26.7, e da 26.11 a 26.12)  
22 maggio 2009 26. Applicare i design pattern GoF: ancora su Strategy, Facade, Observer (Cap. 26, 26.7, da 26.9 a 26.10, e da 26.11 a 26.12)  
  34. Raffinamento dell'architettura logica: collaborazioni tra strati (Cap. 34, 34.2 e 34.4)  
26 maggio 2009 Esercitazione OOA: abcBid (requisiti)

  questionari di valutazione della didattica  
28 maggio 2009 Esercitazione OOD: abcBid (requisiti)  
29 maggio 2009 Esercitazione OOD: abcBid (requisiti)  
xx yyy 2009 Introduzione a Domain-Driven Design ed alla persistenza di oggetti  

 


Homework

Gli homework, scritti individualmente e a mano, vanno fatti 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 PortaleEsami: Analisi - Modellazione di dominio PortaleEsami venerdì 12 marzo lunedì 22 marzo
2 PortaleEsami: Analisi - Operazioni di sistema PortaleEsami mercoledì 17 marzo lunedì 29 marzo
3 PortaleEsami: Progettazione      
         

 


Programma 

Programma preliminare del corso di Analisi e progettazione del software per l'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 - Modalità in vigore dall'anno accademico 2009-2010

A partire dall'anno accademico 2009-2010, la modalità d'esame di Analisi e progettazione del software varierà leggermente rispetto agli anni accademici passati. Ecco le nuove modalità d'esame, con le rispettive regole:

Esame con progetto

Esame senza progetto

Esame con homework


Date d'esame

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

Per partecipare agli esami è necessario prenotarsi ad esso presso il sito prenota.uniroma3.it oppure presso il portale dello studente. La prenotazione va 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)