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)
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:
- nel secondo semestre (dal 1 marzo al 5 aprile e dall' 11 aprile all' 8
giugno 2012, anche se probabilmente il corso finirà con qualche giorno di
anticipo),
- lunedì, mercoledì e giovedì, dalle 9:45 alle 11:15
- in aula N1
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
- 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
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
- normalmente c'è una dispensa per ciascun capitolo del libro
- più altre dispense per ulteriori argomenti
- un numero nel titolo di una diapositiva (ad esempio, 3.2)
indica capitolo e paragrafo in cui l'argomento è trattato sul
libro di testo
- un asterisco nel titolo di una diapositiva (*) indica che
quell'argomento non è trattato esplicitamente sul libro
- una farfallina in una diapositiva, in alto a destra, indica
che l'argomento è solo accennato
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:
Per ciascun homework, i requisiti sono descritti in un documento
diverso da quello contenente gli esercizi dell'homework.
Alcune precisazioni sulla consegna degli homework:
- Il termine ultimo per la consegna degli homework va inteso
come "all'inizio della lezione del giorno X" e non "entro la mezzanotte del giorno
X".
- Chi realizza la propria soluzione di un homework nei tempi
stabiliti ma è impossibilitato ad effettuarne la consegna nei
tempi stabiliti, può seguire la seguente procedura (da adottare
solo in casi veramente eccezionali):
- effettuare una scansione dell'elaborato ed inviarla per posta elettronica
al docente comunque entro i
tempi stabiliti;
- consegnare l'elaborato (in originale e
comunque conforme a quello inviato in modo
elettronici) all'inizio della lezione successiva alla
data prevista per la consegna.
Inoltre:
- gli studenti sono pregati di scrivere IN MODO LEGGIBILE, in
particolare il loro nome e cognome
- gli studenti sono invitati a scrivere IN ITALIANO e non in
inglese - ad esempio, a scrivere Utente e non User
- gli studenti sono invitati a NON USARE IL COLORE ROSSO
- che viene usato nella correzione degli elaborati
- gli studenti sono pregati di
scrivere i loro homework su carta in formato standard (foglio
protocollo oppure fogli A4)
- se si scrive su più fogli, è preferibile che i diversi fogli
che costituiscono una consegna vengano messi uno dentro l'altro
(se fogli protocolli) oppure spillati insieme (se fogli singoli)
- alle domande in cui è prevista una risposta binaria (SI/NO)
("è opportuno fare questo?") e una motivazione, gli studenti
sono invitati a scrivere in modo ESPLICITO prima la risposta
binaria (SI oppure NO) e poi a dare la loro motivazione -
anziché discutere sull'argomento senza però rispondere alla
domanda in modo esplicito
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
- 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 (tranne 20.12)
- 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
I concetti introdotti durante il corso sono esemplificati con riferimento
ai seguenti studi di caso, che sono parte integrante del programma d'esame:
- il sistema POS NextGen;
- il sistema Monopoly Game System;
- il sistema ERedit;
- il sistema VideoRental;
- il sistema PortaleEsami;
- il sistema AcmeBay.
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
- 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 (tranne 20.12)
- 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
I concetti introdotti durante il corso sono esemplificati con riferimento
ai seguenti studi di caso, che sono parte integrante del programma d'esame:
- il sistema POS NextGen;
- il sistema Monopoly Game System;
- il sistema ERedit;
- il sistema VideoRental;
- il sistema PortaleEsami;
- il sistema AcmeBay.
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:
- il capitolo 22 inglese fa parte della parte III (non della parte IV)
- i capitoli 23 e 24 vanno scambiati (23 diventa 24 e viceversa)
- i capitoli 31 e 32 vanno scambiati
- i capitoli 35 e 36 vanno scambiati
- i capitoli 37 e 38 vanno scambiati
Ulteriori libri, utili per la consultazione (in ordine sparso)
- Martin Fowler
UML distilled - terza edizione
Pearson Education Italia, 2004
Una introduzione concisa ad UML.
- Eric Gamma, Richard Helm, Ralph Johnson e John Vlissides
Design patterns – elements of reusable object-oriented software
Addison-Wesley, 1995
Il libro fondamentale sui design pattern.
- Eric Gamma, Richard Helm, Ralph Johnson e John Vlissides
Design patterns – elementi per il riuso di software a oggetti
Addison-Wesley, Pearson Education Italia, 2002
Edizione italiana del libro di cui sopra.
- Frank Buchmann, Regine Meunier, Peter Sommerlad e Michael Stal
Pattern-oriented software architecture – a system of patterns
John Wiley & Sons, 1996
Libro fondamentale sui pattern architetturali, in cui viene descritto Layers.
- Robert C. Martin
Agile software development - principles, patterns, and practices
Prentice Hall, 2003
Un altro ottimo libro di progettazione orientata agli oggetti. L'approccio
però è diverso da quello del Larman e di questo corso. Ottimo per chi vuole
approfondire i temi di questo corso.
- Robert C. Martin, M. Martin
Agile principles, patterns, and practices in C#
Prentice Hall, 2007
Ripropone i temi del libro precedente, approfondendoli di più. Fa
riferimento al linguaggio C# e non a Java. (Entrambi i libri sono ricchi di
esempi e di codice.)
- Eric Evans
Domain-Driven Design
Addison-Wesley, 2004
Altro buon libro di analisi e progettazione orientata agli oggetti. Fornisce
un buon contesto (più ampio) in cui applicare i metodi proposti da Larman.
Anche questo molto buono per chi vuole approfondire i temi di questo corso.
- Cheesman & Daniels
UML Components - un semplice processo per la specifica di software
basato su componenti
Addison-Wesley, 2002
Mostra una metodologia per la progettazione di software basto su componenti
- la metodologia, relativa ad un contesto tecnologico più avanzato, ha molti
punti in comune con l'approccio proposto da Larman.
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:
- il sistema POS NextGen;
- Monopoly Game System;
- il sistema ERedit (requisiti);
- il sistema abcBid (requisiti);
- il sistema AcmeU (requisiti);
- la colazione di Rosa
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
- progetto:
- alcuni giorni (2 o 3) prima dello scritto
viene proposto uno studio di caso – con esercizi
di analisi e progettazione
- lo studente consegna, alla prova scritta, un
elaborato relativo a tale studio di caso –
scritto a mano ed individualmente
- il progetto cambia ad ogni appello
- prova scritta, della durata di 160 minuti
circa:
- la prova scritta verte su un ampliamento
oppure su una variante del progetto di cui sopra
- la prova scritta comprende: esercizi di
analisi OO (12 punti circa) nonché esercizi di
progettazione OO + teoria (18 punti circa)
- eventuale prova orale (a discrezione del
docente)
Esame senza progetto
- prova scritta, della durata di 160 minuti
circa:
- la prova scritta comprende: esercizi di
analisi OO (12 punti circa) nonché esercizi di
progettazione OO + teoria (18 punti circa)
- eventuale prova orale (a discrezione del
docente)
- il voto massimo per chi sostiene l'esame
con questa modalità è 24
Esame con homework
- homework:
- lo studente ha partecipa a tutti gli
homework proposti, nei tempi stabiliti - e la
relativa valutazione è complessivamente positiva
progetto:
- alcuni giorni (2 o 3) prima dello scritto
viene proposto uno studio di caso – con esercizi
di analisi e progettazione
- lo studente consegna, alla prova scritta, un
elaborato relativo a tale studio di caso –
scritto a mano ed individualmente
- il progetto cambia ad ogni appello
- prova scritta, della durata di 160 minuti
circa:
- la prova scritta verte su un ampliamento
oppure su una variante del progetto di cui sopra
- la prova scritta comprende: esercizi di
analisi OO (12 punti circa) nonché esercizi di
progettazione OO + teoria (18 punti circa)
- eventuale prova orale (a discrezione del
docente)
- se lo studente ha ottenuto una
valutazione almeno sufficiente alla prova scritta, allora
il risultato della valutazione degli homework (al massimo 4) si
somma al voto della prova scritta
- questa modalità d'esame è valida
esclusivamente per gli studenti che non hanno mai sostenuto in
passato l'esame di Analisi e progettazione del software
ed
esclusivamente al primo appello (giugno-luglio 2011)
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
- progetto:
- alcuni giorni (2 o 3) prima dello scritto
viene proposto uno studio di caso – con esercizi
di analisi e progettazione
- lo studente consegna, alla prova scritta, un
elaborato relativo a tale studio di caso –
scritto a mano ed individualmente
- il progetto cambia ad ogni appello
- prova scritta, della durata di 160 minuti
circa:
- la prova scritta verte su un ampliamento
oppure su una variante del progetto di cui sopra
- la prova scritta comprende: esercizi di
analisi OO (12 punti circa) nonché esercizi di
progettazione OO + teoria (18 punti circa)
- eventuale prova orale (a discrezione del
docente)
Esame senza progetto
- prova scritta, della durata di 160 minuti
circa:
- la prova scritta comprende: esercizi di
analisi OO (12 punti circa) nonché esercizi di
progettazione OO + teoria (18 punti circa)
- eventuale prova orale (a discrezione del
docente)
- il voto massimo per chi sostiene l'esame
con questa modalità è 24
Esame con homework
- homework:
- lo studente ha partecipa a tutti gli
homework proposti, nei tempi stabiliti - e la
relativa valutazione è complessivamente positiva
progetto:
- alcuni giorni (2 o 3) prima dello scritto
viene proposto uno studio di caso – con esercizi
di analisi e progettazione
- lo studente consegna, alla prova scritta, un
elaborato relativo a tale studio di caso –
scritto a mano ed individualmente
- il progetto cambia ad ogni appello
- prova scritta, della durata di 160 minuti
circa:
- la prova scritta verte su un ampliamento
oppure su una variante del progetto di cui sopra
- la prova scritta comprende: esercizi di
analisi OO (12 punti circa) nonché esercizi di
progettazione OO + teoria (18 punti circa)
- eventuale prova orale (a discrezione del
docente)
- se lo studente ha ottenuto una
valutazione almeno sufficiente alla prova scritta, allora
il risultato della valutazione degli homework (al massimo 4) si
somma al voto della prova scritta
- questa modalità d'esame è valida
esclusivamente per gli studenti che non hanno mai sostenuto in
passato l'esame di Analisi e progettazione del software
ed
esclusivamente al primo appello (giugno-luglio 2011)
Date d'esame
Nell'anno accademico 2011-2012 sono previste le seguenti date d'esame
(attenzione, potrebbero ancora cambiare):
- giugno-luglio 2012, data ancora da stabilire
- settembre 2012, data ancora da stabilire
- febbraio 2013, data ancora da stabilire
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:
- contattare il docente per incontrarlo e farsi conoscere, il prima
possibile - per verificare che siano effettivamente interessati al corso e
ne posseggano i prerequisiti necessari - altrimenti (se senza interesse o
senza prerequisiti) è bene che cambino il loro learning agreement
- andare dal docente, a ricevimento studenti, almeno una volta al mese
(fin dall'inizio del corso), e comunque con largo anticipo rispetto
a quando intendono sostenere l'esame - per far sì che la preparazione
proceda in modo corretto - ovvero per verificare che non stiano studiando
poco o male
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:
- contactar el profesor para encontrarlo y conocerlo lo más pronto posible,
para verificar que sean realmente interesados al curso y que posean los
requisitos necesarios – de otra manera (sin interese o sin requisitos) es
mejor que cambien sus learning agreement
- ir dal profesor durante el recibimiento de los estudiantes por lo meno
una vez al mes (desde el principio del curso), y de toda manera bastante
tiempo antes del día del examen – para que sus preparación proceda de una
manera correcta- es decir para verificar que no estudien poco o mal
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.