Ingegneria del software
A.A. 2018/2019
Learning objectives
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.
Expected learning outcomes
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.
Course syllabus and organization
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 MattiaProfessor(s)
Ricevimento:
su appuntamento
ufficio 5006 Via Celoria 18 - Milano