Anno accademico 2022-2023

INGEGNERIA DEL SOFTWARE

Docenti

Giorgio Brajnik
Anno di corso
3
Totale crediti
6
Periodo didattico
Primo Periodo
Tipologia
Caratterizzante
Prerequisiti. Conoscenza dei sistemi di calcolo, della programmazione, della programmazione orientata agli oggetti, degli algoritmi e delle strutture dati.
Metodi didattici. Lezioni ed esercitazioni
Modalità di verifica. Esame scritto (online e/o in presenza) che include domande chiuse/aperte, esercizi su modellizzazione, principi SOLID e testing.
Obiettivi formativi
Gli obiettivi del corso sono i seguenti:

– introdurre ai concetti di base dell’Ingegneria del Software (IS), ossia il settore ingegneristico dell’informatica dedicato allo studio delle metodologie, delle tecniche e degli strumenti utilizzati in tutti gli aspetti della produzione industriale del software;

– capire quali sono i principali problemi che si incontrano nello sviluppo del software a livello professionale ed industriale;

– conoscere come è organizzato il processo di produzione e di sviluppo del software;

– sapere come organizzare un modello del software e come produrre una specifica software

– sapere come organizzare e svolgere test automatizzati.

CAPACITA’ RELATIVE ALLE DISCIPLINE

Lo studente dovrà:

1. Conoscenza e capacità di comprensione:

Acquisire specifiche conoscenze dei principali concetti e principi dell’IS. Conoscere molteplici modelli del processo di sviluppo del software e le varie fasi del ciclo di vita, con riferimento sia al software tradizionale, che al software avanzato. Conoscere diverse tecniche di analisi e di progettazione del software, ivi comprese le tecniche strutturate e quelle object-oriented e i Principi Solidi di Design OO. Conoscere le notazioni per la modellazione del software inclusi i linguaggi: UML, Data Flow Diagram. Conoscere i maggiori fattori di criticità nello sviluppo del software. Conoscere le principali tecniche di verifica e validazione del software, ivi incluse le tecniche di testing e di software inspection e le relative metriche di qualità. Conoscere le nuove tecniche agili di sviluppo del software.

2. Capacità di applicare conoscenza e comprensione:

Sapere come analizzare e rappresentare i risultati dell’analisi e della progettazione in uno specifico dominio applicativo.

CAPACITA’ TRASVERSALI / SOFT SKILLS

Lo studente dovrà:

1. Autonomia di giudizio:

Saper valutare indipendentemente le caratteristiche ed i requisiti di un’applicazione informatica ed essere in grado di rappresentarne l’analisi e la progettazione.

2. Abilità comunicative:

Saper illustrare con rigore logico e terminologico, a voce e per iscritto mediante varie tecniche di rappresentazione, gli elementi tecnici rilevanti di un progetto software.

3. Capacità di apprendimento:

Essere in grado di apprendere le nozioni base dell’IS, al fine poi all’occorrenza di raffinare e di approfondire specifici settori della disciplina.

Contenuti
Il corso introduce alle metodologie professionali di progettazione e sviluppo dei sistemi software (sw).

In particolare tratta i seguenti contenuti: definizioni di base, modelli dei processi sw; metodologie di analisi dei requisiti e definizione delle specifiche sw; modellizzazione dei sistemi; prototipizzazione; progettazione del sw e Principi Solidi di design OO; testing del software; metriche di qualità, metodi agili.

Testi di riferimento
Ian Sommerville, Ingegneria del software. 10 Ed., Pearson Italia, MI-TO, 2017.

A. Baruzzo, Analisi e Progettazione di Sistemi Software Industriali 2/E– Vol. 1, Create Space, 2022. (disponibile online presso i cataloghi Amazon).

Altri testi per la consultazione:

S.L. Pfleeger, J.M. Atlee, Software Engineering – Theory and Practice. Third Edition, Pearson/Prentice Hall, Upper Saddle River, NJ, USA, 2006. ISBN 0-13-146913-4 (4th Edition – 2010)

R. Pressmann, SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7th EDITION, McGrawHill, 2010 (8th Edition – 2015)

M. Fowler, Uml Distilled: A Brief Guide To The Standard Object Modeling Language, Pearson, 3rd Ed – 2015.