Ingegneria del Software - Progettazione e Laboratorio

 

(ex Ingegneria del Software II 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