INGEGNERIA ELETTRICA ELETTRONICA E INFORMATICAIngegneria informaticaAnno accademico 2025/2026

9797565 - SOFTWARE DESIGN AND WEB PROGRAMMING M - Z
Modulo ELEMENTI DI INGEGNERIA DEL SOFTWARE

Docente: Orazio TOMARCHIO

Risultati di apprendimento attesi

Il modulo presenta i principi, i metodi e gli strumenti principali dell’Ingegneria del Software, settore dell’informatica dedicato allo studio delle metodologie, delle ricerche e degli strumenti utilizzati nella produzione industriale del software.

In particolare il modulo descrive vari modelli del processo di sviluppo del software presentando i problemi relativi alle varie fasi del ciclo di vita, con particolare riferimento all’analisi ed alla specifica dei requisiti, alla definizione dell'architettura di sistema, al progetto, ed al testing. Vengono anche descritti alcuni dei più diffusi design pattern ed il loro ruolo nella progettazione e sviluppo del software. Ampio spazio viene dato al linguaggio UML, standard di riferimento per la modellazione visuale dei sistemi software.

Gli obiettivi formativi del modulo, declinati secondo i descrittori di Dublino sono:

Conoscenza e capacità di comprensione (knowledge and understanding)

Capacità di applicare conoscenza e comprensione (applying knowledge and understanding)

Autonomia di giudizio (making judgements)

Abilità comunicative (communication skills)

Capacità di apprendimento (learning skills)

Modalità di svolgimento dell'insegnamento

Il corso prevede come metodo di insegnamento:

Il docente propone, inoltre, delle esercitazioni (homework) che consistono nella soluzione di un problema progettuale che gli studenti devono affrontare in gruppi in modo autonomo, che vengono successivamente corrette e/o discusse in aula.

Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus.

Prerequisiti richiesti

Frequenza lezioni

Frequenza non obbligatoria ma fortemente consigliata

Contenuti del corso


  1. Concetti e definizioni di base dell'Ingegneria del Software (4h teoria)
    • Introduzione. Origini e motivazioni dell'Ingegneria del Software. Definizioni di base: prodotti software, caratteristiche generali dei prodotti software. La modellazione del software con UML.
  2. Ciclo di vita del software. (4h teoria)
    • Processi per lo sviluppo del software: modello a cascata, modelli iterativi,  modelli agile.
  3. Analisi e specifica dei requisiti (2h teoria + 4h esercitazioni)
    • Il concetto di requisito. Requisiti funzionali e non funzionali. Attività di definizione, analisi e specifica dei requisiti. Modellare i requisiti con i casi d'uso.
  4. Analisi e Progettazione software (8h teoria + 14 ore esercitazioni)
    • Analisi orientata agli oggetti. Modello di dominio. La modellazione di dominio con i diagrammi di classe. Diagrammi di sequenza di sistema. Contratti delle operazioni.
    • Cenni su architetture software. Modelli per la strutturazione dei sistemi software (pattern architetturali).
    • Progettazione del software orientata agli oggetti. Diagramma delle classi. Diagrammi di interazione. I pattern GRASP per la progettazione software. Parametri di qualità di un progetto software.
    • Ulteriori diagrammi UML: diagramma degli stati, diagrammi di attività, diagrammi dei componenti e di deployment.
  5. Design pattern (5h teoria + 5 h esercitazioni)
    • Ruolo dei design pattern nella progettazione e sviluppo del software. Pattern GRASP. Pattern GoF: creazionali, strutturali, comportamentali.
  6. Il testing del software (3h teoria + 3h esercitazioni)
    • Il controllo di qualità dei prodotti software: la verifica e la validazione. Il testing: obiettivi e concetti generali. Tipologie di testing: test unitari, tet di integrazione, test di sistema. Strategie di testing: black box testing (funzionale) e white box testing (strutturale). Tool per il testing unitario: jUnit.
  7. Gestione di un progetto software (2h teoria + 4h esercitazioni)
    • Software configuration management. Il concetto di versioning. Strumenti per il versioning: SVN e Git. Gestione delle build, release e branch.
    • Strumenti per il build di un progetto software: Maven.
    • Continuous integration e cenni di DevOps.

Testi di riferimento

Programmazione del corso

 ArgomentiRiferimenti testi
1Introduzione all'Ingegneria del SoftwareDispense del docente
2Overview Analisi e Progettazione orientata agli oggetti[LAR] Cap. 1
3Ciclo di vita e Processi di sviluppo del Software[LAR] Cap. 2 e 3 - [FOW] Cap. 2
4La modellazione del software. Introduzione a UML[FOW] Cap. 1
5Analisi e specifica dei requisiti[LAR] Cap. 6
6Modellare i requisiti con i casi d'uso[LAR] Cap. 7 - [FOW] Cap. 9
7Analisi orientata agli oggetti[LAR] Cap. 12
8Modello di dominio[LAR] Cap. 12 - [FOW] Cap. 3
9Diagrammi di sequenza di sistema[LAR] Cap. 13
10Contratti delle operazioni[LAR] Cap. 14
11Architetture software[LAR] Cap. 15-16
12Progettazione del software orientata agli oggetti[LAR] Cap. 16-17
13Diagrammi di Interazione in UML[LAR] Cap. 18 - [FOW] Cap. 4-12
14Diagrammi delle Classi in UML[LAR] Cap. 19 - [FOW] Cap. 3-5
15I pattern GRASP per la progettazione software[LAR] Cap. 20-21
16Ulteriori diagrammi UML: diagramma degli stati, diagrammi di attività[LAR] Cap. 31-32 - [FOW] Cap. 10-11
17Ulteriori diagrammi UML: diagrammi dei componenti e di deployment[LAR] Cap. 31-32 - [FOW] Cap. 10-11
18I design pattern[GAM] Cap. 1
19Pattern GoF: creazionali, strutturali, comportamentali[GAM] Cap. 3-4-5
20Il testing del softwareDispense del docente
21Tipologie di testing. Strategie di testingDispense del docente
22Tool per il testing unitario: jUnitDispense del docente e riferimenti Web
23Gestione della configurazione del software. GitDispense del docente e riferimenti Web
24Strumenti per il build di un progetto software: MavenDispense del docente e riferimenti Web
25Continuous integration e cenni di DevOpsDispense del docente

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

L’esame consiste in:

Esempi di domande e/o esercizi frequenti

Esercizi tipici saranno pubblicati sul canale MS Teams del corso

English version