_____________________________________________________________________
Ingegneria del Software -- Laurea Magistrale in Ingegneria Informatica-Automatica, 9 CFU
_____________________________________________________________________________

Obiettivi
  • Il corso presenta gli aspetti fondamentali della modellazione, analisi e progettazione del software, con riferimento alle moderne tecniche di analisi e progettazione orientata agli oggetti e allo sviluppo, iterativo, incrementale e agile. 
    Vengono inoltre analizzate le diverse architetture sottostanti i sistemi da realizzare. In questo contesto vengono presentate problematiche e tecnologie inerenti la realizzazione di sistemi distribuiti ad oggetti. 
    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à.
Prerequisiti
  • Costituiscono un prerequisito fondamentale di questo corso i corsi di "Programmazione ad Oggetti" e di "Basi di Dati".
Modalità d'esame
  • L'esame viene svolto mediante realizzazione di un progetto software funzionante. La progettazione deve essere svolta necessariamente in team. L'obiettivo è quello di mettere in pratica principi e metodologie della progettazione software appresi nel corso. La specifica dell'applicazione da progettare viene fornita dal docente.
Argomenti

      Parte I
  • Ciclo di vita e processo di sviluppo di un sistema software. Sviluppo iterativo e incrementale. Unified Process (UP)
  • Determinazione, specifica e analisi dei requisiti. Casi d'uso
  • Analisi orientata agli oggetti (OOA). Modello di dominio. Diagrammi di sequenza di sistema. Contratti delle operazioni
  • Progettazione orientata agli oggetti (OOD). 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
  • CASE tools come strumenti di modellazione e round-trip engineering
  • Unified Modeling Language (UML)
      Parte II
  • Gestione della persistenza degli oggetti 
  • Tecnologie ORM
    • Hibernate
      Parte III
  • Applicazioni ad oggetti distribuiti
  • Il middleware
  • Internet Communication Engine (ICE)
    • Ciclo di sviluppo di applicazioni ICE
Case Tools
  • Il corso è "Visual Paradigm Academic Partner". Quindi, durante il corso potranno essere utilizzati "UML modeling and CASE tools by Visual Paradigm".
Materiale didattico
   Testi adottati:

   1. Applicare UML e i pattern - Analisi e progettazione orientata agli oggetti
      Craig Larman
      Pearson Education Italia, 2005

   2. Design patterns: elementi per il riuso di software a oggetti.
 
      E. Gamma, R. Helm, R. Johnson, J. Vlissides. 
      Addison Wesley. 2002,
   Riferimento generale:

   1. Ingegneria del Software, 7a ed..
      Ian Sommerville.
      Pearson, Addison Wesley, ottobre 2005.

   Testi integrativi: 

   1. UML e Unified Process .
      J. Arlow, I. Neustadt.
      McGraw-Hilll, 2003.

   3. Ingegneria del Software con UML e Unified Process.
      W. Zuser, S. Biffl, T. Grechenig, M. Kohle.
      McGraw-Hilll, 2004.

   4. Requirements Analysis and System Design, 2a ed.
      L. A. Maciaszek. 
      Addison Wesley, 2004.