Giorno |
Orario |
Sessione |
Aula |
Obiettivi Formativi
Il Corso presenta le metodologie, le tecniche e gli strumenti fondamentali per la gestione delle varie fasi del processo di sviluppo di sistemi software complessi, con particolare riferimento al paradigma di progettazione e programmazione orientato agli oggetti.
Programma
01. Fondamenti di ingegneria del software:
01.01 Concetti di base dell'ingegneria del software.
01.02 La qualit? del software.
01.03 Il processo di sviluppo software.
02. Analisi e progettazione ad oggetti:
02.01 Il paradigma ad oggetti.
02.02 Introduzione alla modellazione del software.
02.03 Unified Process.
02.04 UML.
03. Programmazione ad oggetti: il linguaggio C++:
03.01 Nozioni di base.
03.02 Tipi di dati fondamentali.
03.03 Puntatori.
03.04 Gestione della memoria.
03.05 Classi e oggetti.
03.06 Overloading di operatori.
03.07 Ereditariet?.
03.08 Funzioni virtuali e polimorfismo.
03.09 Template.
03.10 Run time type identification.
03.11 Gestione delle eccezioni.
03.12 Introduzione alla Standard Library.
04. Design pattern:
04.01 Introduzione ai design pattern.
04.02 Pattern creazionali: Singleton, Factory.
04.03 Pattern strutturali: Proxy.
04.04 Pattern comportamentali: Observer, Visitor.
05. Metodi di ingegneria del software:
05.01 Ingegneria dei sistemi informatici.
05.02 Analisi dei requisiti.
05.03 Principi di progettazione del software.
05.04 Tecniche di testing del software.
05.05 Metriche del software.
06. Gestione di progetti software:
06.01 Pianificazione del progetto software.
06.02 Stime di progetto.
06.03 Analisi e gestione dei rischi.
06.04 Pianificazione temporale e controllo dei progetti.
06.05 Gestione delle configurazioni software.
06.06 La documentazione di progetto.
06.07 Strumenti CASE.
07. Argomenti avanzati:
07.01 I metodi formali.
07.02 Ingegneria del software "clean room".
07.03 Reingegnerizzazione.
08. Attivit? di laboratorio:
08.01 Esercitazioni C++: classi e oggetti.
08.02 Esercitazioni C++: gestione della memoria.
08.03 Esercitazioni C++: overloading di operatori.
08.04 Esercitazioni C++: template.
08.05 Esercitazioni C++: utilizzo della Standard Library.
08.06 Esercitazioni C++: gestione delle eccezioni.
08.07 Esercitazioni C++: funzioni virtuali.
08.08 Esercitazioni C++: design pattern.
Modalità Didattiche, Obblighi, Testi di Studio e Modalità di Accertamento
- Modalità didattiche
- Lezioni frontali ed esercitazioni di laboratorio
- Obblighi
- Nessuno.
- Testi di studio
- Testi su argomenti di base:
- Pressman, "Principi di Ingegneria del Software", McGraw-Hill, 2004.
- Fowler, "UML Distilled", Addison-Wesley, 2004.
- Schildt, "Guida al C++", McGraw-Hill, 2003.
- Stroustrup, "C++: Linguaggio, Libreria Standard, Principi di Programmazione", Addison-Wesley, 2000.
- Gamma, Helm, Johnson, Vlissides, "Design Patterns", Addison-Wesley, 2002.
Testi su argomenti avanzati:
- Beck, "Programmazione Estrema - Introduzione", Addison-Wesley, 2000.
- Arlow, Neustadt, "UML e Unified Process", McGraw-Hill, 2003.
- Meyers, "Effective C++", Addison-Wesley, 1998.
- Meyers, "More Effective C++", Addison-Wesley, 1996.
- Bernardo, Inverardi, "Formal Methods for Software Architectures", LNCS 2804, Springer, 2003
- Modalità di
accertamento
- Prova scritta, progetto individuale di laboratorio e prova orale
- Disabilità e DSA
Le studentesse e gli studenti che hanno registrato la certificazione di disabilità o la certificazione di DSA presso l'Ufficio Inclusione e diritto allo studio, possono chiedere di utilizzare le mappe concettuali (per parole chiave) durante la prova di esame.
A tal fine, è necessario inviare le mappe, due settimane prima dell’appello di esame, alla o al docente del corso, che ne verificherà la coerenza con le indicazioni delle linee guida di ateneo e potrà chiederne la modifica.