MA0493 - INGEGNERIA DEL SOFTWARE - PROGETTAZIONE E
LABORATORIO
Anno
Accademico 2016/2017
Docente
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
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.