Obiettivi formativi:
Questo insegnamento ha lo scopo di presentare 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. |
Settori scientifico-disciplinari:
INF/01, ING-INF/05. |
Crediti:
12. |
Modulo:
Unico. |
Durata:
Annuale, 112 ore (80 di lezione frontale + 32 di esercitazione guidata). |
Frequenza:
Non sono previsti obblighi di frequenza. |
Docente:
Ing. Edoardo Bontà. |
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. 03. Unified modeling language (UML): 03.01 Introduzione a UML. 03.02 Diagrammi di struttura: classi, oggetti, package. 03.03 Diagrammi di comportamento: casi d’uso. 03.04 Analisi di robustezza e interazione fra entità. 03.05 Diagrammi di interazione: comunicazione, sequenza. 03.06 Macchine a stati, attività e altri diagrammi. 04. Programmazione ad oggetti: il linguaggio C++: 04.01 Concetti di base di C++. 04.02 Classi e oggetti. 04.03 Sovraccarico di operatori. 04.04 Ereditarietà. 04.05 Funzioni virtuali e polimorfismo. 04.06 Template. 04.07 Gestione delle eccezioni. 04.08 Introduzione alla Standard Library. 05. Introduzione al linguaggio Java: 05.01 Principali differenze tra Java e C++. 05.02 Interfacce e polimorfismo. 05.03 Package. 05.04 Programmi stand-alone e applet. 06. Design pattern: 06.01 Introduzione ai design pattern. 06.02 Pattern creazionali: Singleton, Factory. 06.03 Pattern strutturali: Proxy. 06.04 Pattern comportamentali: Observer, Visitor. 07. Metodi di ingegneria del software: 07.01 Analisi dei requisiti. 07.02 Principi di progettazione del software. 07.03 Tecniche di collaudo del software. 07.04 Metriche del software. 08. Gestione di progetti software: 08.01 Pianificazione del progetto software. 08.02 Stime di progetto. 08.03 Analisi e gestione dei rischi. 08.04 Pianificazione temporale. 08.05 Gestione delle configurazioni software. 08.06 La documentazione di progetto. 08.07 Strumenti CASE. 09. Argomenti avanzati: 09.01 I metodi formali. 09.02 Ingegneria del software "cleanroom". 09.03 Reingegnerizzazione. 10. Attività di laboratorio: 10.01 C++: classi e oggetti. 10.02 C++: gestione della memoria e sovraccarico di operatori. 10.03 C++: funzioni virtuali e polimorfismo. 10.04 C++: gestione eccezioni e utilizzo della Standard Library. 10.05 C++: implementazione di interfacce grafiche. 10.06 C++: design pattern. 10.07 Java: compilazione/esecuzione programmi. 10.08 Java: programmi stand-alone e applet, file archivio "jar". |
Testi di riferimento:
|
Propedeuticità:
Programmazione degli Elaboratori, Algoritmi e Strutture Dati. |
Modalità didattiche:
Lezioni frontali ed esercitazioni di laboratorio (materiale didattico). |
Modalità di accertamento:
Prova scritta, progetto individuale e prova orale (prove d'esame). |
Commissione d'esame:
Ing. Edoardo Bontà e Prof. Marco Bernardo (supplente: Dott. Alessandro Aldini). |
Note:
Il progetto, da svolgere individualmente su un tema concordato con il docente e da consegnare almeno una
settimana prima della prova scritta, è ritenuto sufficiente se il relativo voto, che rimane valido
per tutti gli appelli, è di almeno 18/30. Qualora il progetto venga riconsegnato in un appello
successivo, il voto del progetto precedentemente consegnato viene annullato e al voto del nuovo progetto
consegnato viene applicata una penale di 5/30. La prova scritta, che può essere sostenuta solo previo superamento del progetto, è ritenuta sufficiente se il relativo voto, che rimane valido per il solo appello in cui la prova viene sostenuta, è di almeno 18/30. La prova orale, che può essere sostenuta solo previo superamento delle altre due prove, comporta un aggiustamento per eccesso o per difetto di al più 5/30 della media aritmetica dei voti delle altre due prove, determinando così il voto finale. |
Ultima modifica: 26/09/2007 | Approvato da: Presidente CCdL |