INGEGNERIA DEL SOFTWARE

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:

  • Pressman, "Principi di Ingegneria del Software" , McGraw-Hill, 2004.
  • Fowler, "UML Distilled" , Pearson Italia (Addison-Wesley), 2004.
  • Stroustrup, "C++: Linguaggio, Libreria Standard, Principi di Programmazione" , Pearson Italia (Addison-Wesley), 2000.
  • Schildt, "Java(TM) - La Guida Completa" , McGraw-Hill, 2007.
  • Gamma, Helm, Johnson, Vlissides, "Design Patterns: Elementi per il Riuso di Software ad Oggetti" , Pearson Italia (Addison-Wesley), 2002.
  • 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