INGEGNERIA DEL SOFTWARE

Anno accademico 2015/2016 - 1° anno
Docente: Orazio TOMARCHIO
Crediti: 9
SSD: ING-INF/05 - Sistemi di elaborazione delle informazioni
Modalità di erogazione: Tradizionale
Organizzazione didattica: 225 ore d'impegno totale, 176 di studio individuale, 49 di lezione frontale
Semestre:
ENGLISH VERSION

Obiettivi formativi

Conoscere i principi, le metodologie e gli strumenti principali nei processi di sviluppo del software, con particolare riferimento all’analisi ed alla specifica dei requisiti, alla definizione dell'architettura di sistema, al progetto, ed al testing.
Conoscere alcuni dei più diffusi design pattern e comprendere il loro ruolo nella progettazione e sviluppo del software.
Conoscere la notazione standard UML per la modellazione dei sistemi software.
Saper progettare un sistema informatico con architettura mediamente complessa, pianificando le varie attività dei processi del ciclo di vita del software e producendo documenti in accordo agli standard del settore.
Saper modellare le diverse viste di un sistema software utilizzando la notazione standard UML.

Prerequisiti richiesti

  • Fondamenti di programmazione
  • Programmazione orientata agli oggetti

Frequenza lezioni

Frequenza non obbligatoria ma fortemente consigliata


Contenuti del corso

  1. Concetti e definizioni di base dell'Ingegneria del Software
    • Introduzione. Origini e motivazioni dell'Ingegneria del Software. Definizioni di base: prodotti software, caratteristiche generali dei prodotti software. Ciclo di vita del software. Processi per lo sviluppo del software: modello a cascata, sviluppo incrementale; modello iterativo/evolutivo, modello prototipale, modello a spirale, unified process.
  2. Analisi e specifica dei requisiti
    • Definizione del concetto di requisito. Requisiti funzionali e non funzionali. Attività di definizione, analisi e specifica dei requisiti. Processo di ingegnerizzazione dei requisiti. Documentazione dei requisiti. Validazione dei requisiti.
  3. Progettazione software
    • Progetto del software. Metodi di progetto: approccio top-down, metodi strutturati, strategie funzionali e object oriented. Documentazione del progetto. Parametri di qualità del progetto: coesione, accoppiamento, comprensibilità e adattabilità. Progetto dell'architettura logica. Modelli per la strutturazione dei sistemi software (pattern architetturali). Principi di analisi e progettazione orientata agli oggetti.
  4. La modellazione del software con UML
    • Generalità su UML (Unified Modeling Language). UML e ciclo di vita. Modellare i requisiti con i casi d'uso. Diagrammi delle classi e degli oggetti. Diagrammi di sequenza e collaborazione. Diagramma degli stati. Diagramma di attività. Diagramma dei componenti e di deployment. Strumenti CASE a supporto di UML.
  5. Design pattern per la progettazione ed il riuso
    • Ruolo dei design pattern nella progettazione e sviluppo del software. Pattern creazionali, strutturali, comportamentali.
  6. Verifica e validazione
    • l controllo di qualità dei prodotti software: la verifica e la validazione. Verifica e validazione statiche e dinamiche. Testing e ispezione. Obiettivi e problematiche generali del testing. Pianificazione e organizzazione dei test. Strategie di test. Test dinamico black box (funzionale) e white box (strutturale). Il concetto di test case. Dati di test. Classi di equivalenza. Testing dei cammini, grafi di flusso, complessità ciclotomica. jUnit.
  7. Software development management
    • Software configuration management. Configuration item, version, configurazioni, repository. Utilizzo di tool di versioning (CVS, SVN, Git). Gestione delle build, release e branch.

Testi di riferimento

  • [LAR]
    • Craig Larman
      Applicare UML e i pattern – Analisi e progettazione orientata agli oggetti
      Pearson Education Italia
  • [FOW]
    • M. Fowler
      UML Distilled
      Pearson Education Italia
  • [GAM]
    • Gamma, E., Helm, R., Johnson, R. e Vlissides, J.
      Design Patterns: elementi per il riuso di software a oggetti
      Addison Wesley

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

L'esame consiste in:

  • sviluppo di un elaborato (progettazione di un sistema software)
  • prova orale (discussione progetto + eventuali domande inerenti parti del programma non coperte dal progetto.)

Valutazione esame complessivo: Elaborato 70% - Prova orale 30%