MA0493 - INGEGNERIA DEL SOFTWARE - PROGETTAZIONE E LABORATORIO

Anno Accademico 2016/2017

Docente

MAURIZIO PIGHIN (Tit.)
DANTE DEGL'INNOCENTI

Periodo

Annualità Singola 

Modalità d'Erogazione

Convenzionale 

Lingua Insegnamento

 ITALIANO

 

 

Informazioni aggiuntive

Corso

Percorso

CFU

Durata(h)

[766-9999 - Ord. 2011]  CORSO GENERICO

9

72

[785-9999 - Ord. 2011]  CORSO GENERICO

9

72

[785-9999 - Ord. 2016]  CORSO GENERICO

9

72

Obiettivi

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.

Capacità relative alle discipline
Conoscenza e comprensione: l’insegnamento si propone di fornire le conoscenze
per organizzare, trattare e gestire processi di sviluppo del software
Al termine del corso lo studente dovrà essere in grado di:
• gestire l’organizzazione di un processo ingegnerizzato di sviluppo del software e di un gruppo di lavoro;
• utilizzare tecniche avanzate di test
• utilizzare le principali metriche operative del software
• utilizzare strumenti di valutazione della qualità di processo e di prodotto nell’ambito del software
• conoscere le caratteristiche le caratteristiche principali degli strumenti CASE di sviluppo del software.

Capacità trasversali:
Autonomia di giudizio: lo studente dovrà essere in grado di valutare autonomamente quali siano le caratteristiche degli strumenti e delle metodologie applicate nei diversi contesti gestione e organizzazione di un progetto di sviluppo e manutenzione del software.
Abilità comunicative: lo studente dovrà acquisire la capacità e le tecniche di interazione in un gruppo di lavoro per lo sviluppo del software.
Capacità di apprendimento: lo studente dovrà essere in grado di apprendere in maniera autonoma tecniche di processo, di misurazione e di qualità alternative a quelle descritte nel corso

Prerequisiti

PREREQUISITI: Sono richiesti come prerequisiti, oltre ai contenuti del corso di Ingegneria del Software, buone capacità di modellazione di dati e processi e di sviluppo di procedure applicative
PROPEDEUTICITA’: E’ propedeutico il corso di Ingegneria del Software

Contenuti

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.

Metodi Didattici

Le slide delle lezioni frontali coprono l'intero programma dell’insegnamento e sono disponibili sul portale di E-learning
Alle lezioni frontali teoriche è affiancato un case-study completo sulla sviluppo di un’applicazione software

Verifica dell'apprendimento

L’esame consiste in alcune provette di verifica sulla parte teorica durante l’anno, eventualmente recuperabili, e nello sviluppo autonomo o a gruppi di 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)

Testi

Libri di testo
• R.S. Pressman, Software Engineering – a practioner’s Approach , McGrawHill, 7° ed., 2010
N.E.Fenton, J.Bieman, Software Metrics - A rigorous and practical Approach, 3° Edition, Champam and Hall,2014
I.Sommerville, Software Engineering, 9° Ed., Addison Wesley, 2011

Altri testi di consultazione
• Bertrand Meyer: Agile! The Good, the Hype and the Ugly, Springer, 2014
• Binato, A. Fuggetta, L. Sfardini, Ingegneria del Software, creatività e metodo, Pearson-Addison Wesley, 2006
C.Ghezzi, M.Jazayeri, D.Mandrioli, Ingegneria del Software – Fondamenti e Principi, 2° ed., Pearson-PrenticeHall, 2004
Various Authors, Metriche del software - esperienze e ricerche, Franco Angeli, 2006

Altre Informazioni

Il corso è svolto in modalità E-learning Blended. Le lezioni sono tutte in presenza, il materiale didattico è disponibile sul sito di E-Learning dove sono attivati forum di discussione.

MA0493 - Software Engineering and Laboratory

Academic Year 2016/2017

Free text for the University

Professor

MAURIZIO PIGHIN (Tit.)
DANTE DEGL'INNOCENTI

Period

Annualità Singola 

Teaching style

Convenzionale 

Lingua Insegnamento

 ITALIAN

 

 


Informazioni aggiuntive

Course

Curriculum

CFU

Length(h)

[766-9999 - Ord. 2011]  CORSO GENERICO

9

72

[785-9999 - Ord. 2011]  CORSO GENERICO

9

72

[785-9999 - Ord. 2016]  CORSO GENERICO

9

72

Objectives

The target of the course is to examine the principal elements of Software Engineering. We consider the design and life cycle of a software product studying the more advanced topics: configuration management, existing software engineering, test methodologies, theoretic and practical metrics, most famous product and process quality models, planning and control methodologies, principal working tools.
Knowledge and Understanding: The course aims to provide knowledge to organize and manage the software development processes.

Skills related to the disciplines:
After completing the course the student will be able to:
• manage the organization of a software development engineered process and of working group
• use advanced testing techniques
• use the principal software metrics
• use assessment tools of software process and product quality models
• know CASE tools main features.

Soft skills:
Judgment autonomy: students must be able to assess which are the characteristics of the tools and methodologies applied in different management and organization contexts to develop and maintain a software project
Communication skills: the student must acquire the techniques of interaction in a software development working group
Learning skills: the student will be able to learn autonomously technology, measurement and quality processes alternative to those described in the course

Prerequisites

Prerequisites: Good ability of modeling data and processes and developing applicative procedures
Propaedeutic items: The course of Software Engineering is propaedeutic to this course

Contents

Introduction: Software Engineering motivations: basic definitions, economic dimension, development process complexity factors.
Configuration Management: Motivations of Configuration Management. CM-Planning and versioning techniques. Assembly of components and system building.
Existing Software Engineering: Motivation of ESE. Methodologies of re-engineering and reuse. Development with and for reuse.
Verification and Validation: Negative theoretic results. Test strategies. Dynamic test. Test chains. Regression test. Automatic test and mutational analysis. Risk-based test. Static test. Formal test methodologies.
Metrics: Software metric concept. Target of measure. Measurement scales. Control and predictive measures. Data collection. Internal attributes ant their measure. The Halstead metric. The Albrecht metric. The McCabe metric and other complexity metrics. External attributes and their measure
Quality Models: Quality certification methodologies. Process certification: CMM. Product certification: McCall, Bohem and ISO 9126 models.
Cost Evaluation: Performance/cost analysis and the decision analysis. Software cost evaluation. The COCOMO model. Other evaluation models.
Production Process Evaluation and Planning: Work-group organization. Planning methodologies. Pert and Gantt diagrams.
Maintenance: Maintenance: costs, estimations, metrics. The COCOMO model.
Agile Methodologies: Comparison with classical methodologies. Extreme Programming basic elements.
Tools: CASE technology: tools and environments. Tools in the different phases of the development process

Teaching Methods

The lectures slides cover the entire teaching program and are available on the portal of E-learning.
Theoretical lectures are accompanied by a full case study on the development of a software application.

Verification of learning

The exam consists of
• some tests on the theoretical part during the year
• single o group development of a complete case study, following a software project development process at all stages both of the life cycle (specification, design, coding, testing, release, maintenance) and operational (planning costs, metrics analysis, work organization, economic consumptions)

Texts

Textbooks
• R.S. Pressman, Software Engineering – a practioner’s Approach , McGrawHill, 7° ed., 2010
N.E.Fenton, J.Bieman, Software Metrics - A rigorous and practical Approach, 3° Edition, Champam and Hall,2014
I.Sommerville, Software Engineering, 9° Ed., Addison Wesley, 2011

Other reference books
• Bertrand Meyer: Agile!
The Good, the Hype and the Ugly, Springer, 2014
• Binato, A. Fuggetta, L. Sfardini, Ingegneria del Software, creatività e metodo, Pearson-Addison Wesley, 2006
C.Ghezzi, M.Jazayeri, D.Mandrioli, Ingegneria del Software – Fondamenti e Principi, 2° ed., Pearson-PrenticeHall, 2004
Various Authors, Metriche del software - esperienze e ricerche, Franco Angeli, 2006

More Information

The course is conducted in E-learning Blended modality. The lessons are in the presence, the teaching material is available on the E-Learning site where are activated discussion forum.