Ingegneria del Software - Progettazione e Laboratorio
Docente: prof. Maurizio Pighin
CREDITI: 9
Finalità del corso
Obiettivo del corso è l'approfondimento delle principali tematiche dell’Ingegneria del Software. Viene richiamato il ciclo di progettazione e di vita di un prodotto software. Vengono poi studiati e approfonditi gli argomenti più avanzati, quali l’ingegneria del software esistente, il configuration management, le metodologie di test, la progettazione dei sistemi, le metriche teoriche ed operative, i più noti modelli di qualità di prodotto e di processo, le metodiche di pianificazione e controllo, i principali strumenti di lavoro.
Durante il corso viene svolto un case-study completo, seguendo un processo di sviluppo di un progetto software in tutte le fasi sia del ciclo di vita (specifiche, progetto, codifica, test, rilascio, manutenzione) che operativo (pianificazione, analisi costi, metriche, organizzazione del lavoro, consuntivazioni economiche)
Programma
Introduzione e Richiami Generali: Le motivazioni del Software Engineering. Richiami alle definizioni di base. La dimensione economica del problema. I fattori di complessità del processo di sviluppo.
Configuration Management: Le motivazioni del Configuration Management. Il CM-Planning. Trattamento delle versioni. Assemblaggio dei componenti e System Building.
Ingegneria del Software Esistente: L'I.S.E: definizioni e problematiche. Le metodologie di re-engineering. Le metodologie di riuso. Lo sviluppo per il riuso e tramite il riuso.
Verifica e Validazione: I risultati teorici negativi. Strategie di test. Test dinamico. Le catene di test. I test di regressione. L'automazione del test e l’analisi mutazionale. Il Risk-based test. Il test statico. Cenni sui metodi formali di test.
Metriche: Le definizioni generali. Gli obiettivi delle misure. Le scale di misurazione. Le misure di controllo e predittive. Il data collection. Gli attributi interni e le loro misurazioni. La metrica di Halstead. La metrica di Albrecht. La metrica di McCabe ed altre metriche di complessità. Gli attributi esterni e le loro misurazioni
Modelli di qualità: La certificazione di qualità, problematiche metodologie. Certificazione di processo: il modello CMM; certificazione di prodotto: i modelli di McCall, Bohem e IS0 9126.
Valutazione e stima dei costi: L’analisi prestazioni/costo e l’analisi delle decisioni. La stima dei costi del Software. Richiamo modello COCOMO. Altri modelli di stima.
Pianificazione e Controllo del Processo Produttivo: L’organizzazione e gestione dei gruppi di lavoro. La pianificazione ed i suoi obiettivi. I diagrammi di Pert e gli schemi di Gantt.
Manutenzione: Costi, stime, misurazioni, dinamica del processo manutentivo. Il modello COCOMO.
Metodologie Agili: Confronto con le metodologie classiche. Elementi di base dell’Extreme Programming
Strumenti di lavoro: La tecnologia CASE: Tools, Ambienti. Le funzionalità. Gli strumenti di supporto nelle varie fasi del processo di sviluppo.
Modalità d'esame
L’esame consiste in una parte di teoria e nello sviluppo e discussione di un progetto.
Bibliografia
1. R.S. Pressman, Principi di Ingegneria del Software, McGrawHill, 5° ed., 2008
2. I.Sommerville, Software
Engineering, 7° Ed., Addison Wesley P.C., 2004.
3. N.E.Fenton, S.L.Pfleeger, Software Metrics - A rigorous and
practical Approach, 2° Edition, PWS Publishing Company, 1997.
4. A. Binato, A. Fuggetta, L. Sfardini, Ingegneria del Software, creatività e metodo, Pearson-Addison Wesley, 2006
5.
C.Ghezzi,
M.Jazayeri, D.Mandrioli, Ingegneria
del Software – Fondamenti e Principi, 2° ed., Pearson-PrenticeHall,
2004
6. Autori Vari, Metriche del software - esperienze e ricerche, Franco Angeli, 2006
7. Materiale didattico disponibile sul sito d’Ateneo
Software Engineering – Design and Laboratory
TEACHER: Maurizio Pighin
CREDITS: 9 CFU
AIMS OF COURSE:
The target of the course is to examine
closely the principal elements of Software Engineering. We consider the design
and life cycle of a software product studying the more advanced arguments: the
configuration management, the existing software engineering, the test
methodologies, the theoretic and practical metrics, the most famous product and
process quality models, the planning and control methodologies, the principal
working tools.
In the course we develop a
complete case-study, following the whole software development process in the
life cycle phases (specifications, design, coding, test, release, metrics,
maintenance) and management phases (planning, cost analysis, metrics, work
organisation).
PROGRAM
Introduction: The
Software Engineering motivations. The basic definitions. The economic dimension
of the problem. The development process complexity factors.
Configuration
Management: The motivations of Configuration Management. The
CM-Planning and the versioning/variants techniques. Assembly of components and
system building.
Existing
Software Engineering: The motivation of ESE. The methodologies of
re-engineering. The methodologies of reuse. The development with and for reuse.
Verification
and Validation: The negative theoretic results. The test strategies.
The dynamic test. The test chains. The regression test. The automatic test and
the mutational analysis. The Risk-based test. The static test. Formal test
methodologies.
Metrics: The
software metric concept. The target of measure. The measurement scale. The
control and predictive measure. The data collection. The internal attributes
ant their measure. The Halstead metric. The Albrecht metric. The McCabe metric
and other complexity metrics. The external attributes and their measure
Quality Models:
The quality certification methodologies. Process certification: CMM. Product
certification: McCall, Bohem and ISO 9126 models.
Cost
Evaluation: The performance/cost analysis and the decision
analysis. The software cost evaluation. The COCOMO model. Other evaluation
models.
Production
Process Evaluation and Planning: The work-group organisation. The
planning methodologies. The Pert Diagram and the Gantt Scheme.
Maintenance: The
maintenance: costs, estimations, metrics. The COCOMO model.
Agile Methodologies:
Comparison with classical methodologies. Extreme
Programing base elements
Tools: The
CASE technology: Tools and Environments. The functionality. The tools in the
different phases of the development process.
EXAMS
The exams consists in a theory
part and in the development and discussion of a project.
TEXTBOOKS
1. R.S. Pressman, Principi di Ingegneria del Software, McGrawHill, 5° ed., 2008
2. I.Sommerville, Software
Engineering, 7° Ed., Addison Wesley P.C., 2004.
3. N.E.Fenton, S.L.Pfleeger, Software Metrics - A rigorous and
practical Approach, 2° Edition, PWS Publishing Company, 1997.
4. A. Binato, A. Fuggetta, L. Sfardini, Ingegneria del Software, creatività e metodo, Pearson-Addison Wesley, 2006
5.
C.Ghezzi,
M.Jazayeri, D.Mandrioli, Ingegneria
del Software – Fondamenti e Principi, 2° ed., Pearson-PrenticeHall,
2004
6. Autori Vari, Metriche del software - esperienze e ricerche, Franco Angeli, 2006
7. Materiale didattico disponibile sul sito d’Ateneo