Anno accademico 2023-2024

INGEGNERIA DEL SOFTWARE

Docenti

Vincenzo Riccio
Anno di corso
3
Totale crediti
6
Periodo didattico
Primo Periodo
Tipologia
Caratterizzante
Prerequisiti. Conoscenza della programmazione orientata agli oggetti, degli algoritmi e delle strutture dati.
Metodi didattici. Lezioni frontali ed esercitazioni al calcolatore. Gli argomenti delle lezioni frontali e delle esercitazioni sono esposti con l’ausilio di trasparenze dettagliate, messe a disposizione dello studente nel materiale didattico tramite il sito web ufficiale del docente.
Modalità di verifica. Esame scritto diviso in 3 parti: 1. esercizi di analisi e modellizzazione; 2. esercizi su qualità del software; 3. domande di teoria.
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
* Introduzione all’ingegneria del software: Breve storia dell’ingegneria del software. Processo e prodotto. Fattori di qualità del software. Principi dell’ingegneria del software.

* Il ciclo di vita del software: Modello a cascata; modello con retroazione. Modelli evolutivi. Modello trasformazionale. Modello a ‘V’. Metodologie Agili.

* Stima dei costi. Generalità sulla stima dei costi.

* Analisi e specifica dei requisiti. Tipologie di requisiti: d’utente, di sistema e di dominio, funzionali e non funzionali. Completezza, consistenza, verificabilità e tracciabilità dei requisiti. Il documento di specifica dei requisiti (SRS). Modellazione dei casi d’uso.

* Modellazione a oggetti: Il linguaggio UML: diagrammi delle classi, di interazione, di stato, di attività, dei componenti, dei package, di deployment. Analisi e progettazione in UML. Pattern architetturali e di progettazione.

* Verifica e validazione del software: Principi base. Obiettivi e pianificazione del testing. Tecniche di testing black-box e white-box. Test di unità, di integrazione, di sistema, di accettazione, di regressione. Test strutturale, criteri di copertura. Complessità ciclomatica. Test combinatoriale.

* Metriche e modelli di qualità del software. Metriche del software. Modelli di qualità del software; lo standard ISO 9126.

Testi di riferimento
* I. Sommerville, Ingegneria del Software, 10° edizione, Pearson, 2017

* M. Fowler, Uml Distilled: Guida rapida al linguaggio di modellazione standard, Pearson, 3rd Ed – 2015