Ingegneria del software
A.A. 2018/2019
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
Periodo: Secondo semestre
Modalità di valutazione: Esame
Giudizio di valutazione: voto verbalizzato in trentesimi
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
Responsabile
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
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.
- 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 )
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
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
Lezioni: 72 ore
Docenti:
Bellettini Carlo Nicola Maria, Monga Mattia
Turni:
Docente:
Bellettini Carlo Nicola Maria
Turno A
Docente:
Bellettini Carlo Nicola MariaTurno B
Docente:
Monga MattiaDocente/i
Ricevimento:
su appuntamento
ufficio 5006 Via Celoria 18 - Milano