Ingegneria del software

A.A. 2018/2019
12
Crediti massimi
120
Ore totali
SSD
INF/01
Lingua
Italiano
Obiettivi formativi
Conoscenza dei modelli e degli strumenti per l'analisi, il progetto, lo sviluppo e il collaudo dei sistemi software. Capacità di progetto, sviluppo e collaudo di sistemi software.
Risultati apprendimento attesi
Non definiti
Corso singolo

Questo insegnamento non può essere seguito come corso singolo. Puoi trovare gli insegnamenti disponibili consultando il catalogo corsi singoli.

Programma e organizzazione didattica

Linea Milano

Periodo
Secondo semestre

Programma
Il corso è diviso in 4 parti ed è articolato nella seguente maniera

Processi di sviluppo del software:
- Qualità del software
- Attività del ciclo di sviluppo del software
- Modelli di cicli di vita del software
- Unified Process
- CMMI: maturità dei processi
- Metodologie agili
- eXtreme Programming
- modello di sviluppo open source

Progettazione:
- modello di progettazione orientato agli oggetti
- Polimorfismo e Collegamento Dinamico
- Relazioni tra oggetti
- Identificazione delle classi
- diagrammi UML: Class, Sequence, State, Object, UseCase, Activity, Component, Deployment
- Patterns: Observer, Decorator, Strategy, Singleton, Factory, Adapter, Composite, Facade, State, Command, Model-View-Controller

Verifica e Convalida:
- Introduzione alla verifica e convalida del software e alla terminologia specifica
- Tecniche di analisi Statica
- Tecniche di analisi dinamica
- Criteri di copertura del testing: comandi, decisioni, condizioni, cammini, condizioni modificate, k-copertura cicli
- Testing strutturale
- test doubles: stub, mock, spy, e fake objects
- Testing funzionale
- Analisi statica Data-Flow
- Test mutazionale
- Debugging
- Ispezione del codice di Fagan


Specifiche formali:
- reti di petri
- Definizione formale
- Relazioni tra transizioni: Sequenza, Conflitto, Concorrenza
- Proprietà delle reti: Limitatezza, Conservatività
- Analisi dinamica delle reti: Insieme raggiungibilità, Albero di raggiungibilità, Albero di copertura
- Analisi statica delle reti: P.invarianti e T invarianti
- Reti di Petri Temporizzate: TB nets e varie semantiche temporali
- Analisi Reti di Petri Temporizzate: albero di raggiungibilità simbolico
Propedeuticità
Programmazione, Algoritmi, Logica
Prerequisiti
L'esame consiste in due prove entrambe obbligatorie:
- la prima prova (della durata di 4 ore) viene svolta in laboratorio e prevede di scrivere un programma che risolva delle specifiche date. La valutazione mirerà a accertare l'apprendimento della tecnica di sviluppo Test-Driven Development, dell'uso dei pattern, e delle tecniche di collaudo presentate sia a lezione che durate le esercitazioni in laboratorio.
- la seconda prova è invece orale e verte su tutti gli argomenti trattati nel corso: processi, progettazione, specifiche formali, verifica e convalida del software.
Metodi didattici
Lezioni: frontali con proiezioni delle slide (sul sito del corso è disponibile la videoregistrazione delle lezioni)

Laboratori: esercitazioni guidate in aule informatizzate. ogni esercitazione affronta uno specifico argomento proponendo esercizi concreti, per la cui soluzione è necessario mettere a frutto quanto acquisito durante le ore di lezione. (sul sito del corso è disponibile la videoregistrazione della eventuale parte iniziale frontale di ogni laboratorio )
Materiale di riferimento
lucidi e videoregistrazione delle lezioni disponibili sul sito del corso

link e risorse di rete suggerite durante le lezioni

LIBRI CONSIGLIATI:
- Carlo Ghezzi, Mehdi Jazayeri, Dino Mandrioli - Ingegneria del software. Fondamenti e principi - Pearson
- Eric Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra - Head First Design Patterns - O'Reilly Media
- Albert Endres, Dieter Rombach , H. Dieter Rombach - A Handbook of Software and Systems Engineering: Empirical Observations, Laws and Theories - Addison-Wesley
INF/01 - INFORMATICA - CFU: 12
Laboratori: 48 ore
Lezioni: 72 ore
Turni:
Turno B
Docente: Monga Mattia
Docente/i
Ricevimento:
su appuntamento
ufficio 5006 Via Celoria 18 - Milano
Ricevimento:
Su appuntamento
Uff. 5004, Via Celoria 18, Milano