Il corso 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 corso 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.
Conoscenza e comprensione
Conoscere i principi, le metodologie e gli strumenti principali nei processi di sviluppo del software, con particolare riferimento all’analisi ed alla specifica dei requisiti, alla definizione dell'architettura di sistema, al progetto, ed al testing. Conoscere alcuni dei più diffusi design pattern e comprendere il loro ruolo nella progettazione e sviluppo del software. Conoscere la notazione standard UML per la modellazione dei sistemi software.
Capacità di applicare conoscenza e comprensione
Saper progettare un sistema informatico con architettura mediamente complessa, pianificando le varie attività dei processi del ciclo di vita del software e producendo documenti in accordo agli standard del settore. Saper modellare le diverse viste di un sistema software utilizzando la notazione standard UML.
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.
Frequenza non obbligatoria ma fortemente consigliata
Il materiale didattico è disponibile sul sito di Ateneo Studium
Argomenti | Riferimenti testi | |
1 | Introduzione all'Ingegneria del Software | [SOM] Cap. 1 |
2 | Overview Analisi e Progettazione orientata agli oggetti | [LAR] Cap. 1 |
3 | Ciclo di vita e Processi di sviluppo del Software | [LAR] Cap. 2 e 3 - [FOW] Cap. 2 |
4 | La modellazione del software. Introduzione a UML | [FOW] Cap. 1 |
5 | Generalità sulla fase di ideazione | [LAR] Cap. 4 e 5 |
6 | Requisiti | [LAR] Cap. 6 - [SOM] Cap. 6 |
7 | Casi d'uso | [LAR] Cap. 7 - [FOW] Cap. 9 |
8 | Ulteriori Elaborati sui requisiti | [LAR] Cap. 8 |
9 | La fase di elaborazione | [LAR] Cap. 10-11 |
10 | Modelli di Dominio | [LAR] Cap. 12 - [FOW] Cap. 3 |
11 | Diagrammi di sequenza di sistema | [LAR] Cap. 13 |
12 | Contratti delle Operazioni | [LAR] Cap. 14 |
13 | Verso la Progettazione. Cenni su Architetture Software | [LAR] Cap. 15-16-17 |
14 | Diagrammi di Interazione in UML | [LAR] Cap. 18 - [FOW] Cap. 4-12 |
15 | Diagrammi delle Classi in UML | [LAR] Cap. 19 - [FOW] Cap. 3-5 |
16 | Pattern GRASP: progettazione di oggetti con responsabilità | [LAR] Cap. 20 |
17 | Esempi di progettazione di oggetti con i pattern GRASP | [LAR] Cap. 21 |
18 | Trasformare i progetti in codice | [LAR] Cap. 22 - 23 |
19 | Dall'iterazione 1 all'iterazione 2 | [LAR] Cap. 26 - 27 |
20 | Ulteriori pattern GRASP | [LAR] Cap. 28 |
21 | Raffinamento Modello di Dominio | [LAR] Cap. 34 - [FOW] Cap. 5 |
22 | Diagrammi di attività in UML | [LAR] Cap. 31 - [FOW] Cap. 11 |
23 | Diagrammi di macchina a stati in UML | [LAR] Cap. 32 - [FOW] Cap. 10 |
24 | Introduzione ai Design Pattern GoF | [GAM] Cap. 1 |
25 | Pattern creazionali | [GAM] Cap. 3 |
26 | Pattern strutturali | [GAM] Cap. 4 |
27 | Pattern comportamentali | [GAM] Cap. 5 |
28 | Esempi sui pattern | [LAR] Cap. 29 |
29 | Correlare i casi d'uso. Use Case Diagram in UML | [LAR] Cap. 33 - [FOW] Cap. 9 |
30 | Diagrammi di deployment e dei componenti in UML | [LAR] Cap. 41 - [FOW] Cap. 8-14 |
31 | Introduzione al testing del Software | Dispense del docente - [SOM] Cap. 22 |
32 | Criteri di testing | Dispense del docente - [SOM] Cap. 23 |
33 | Automazione dei test | Dispense del docente |
34 | JUnit | Dispense del docente |
35 | Gestione della configurazione del software. Sistemi di controllo delle versioni | Dispense del docente |
36 | SVN | Dispense del docente |
37 | Git | Dispense del docente |
38 | Evoluzione dei sistemi distribuiti e tecnologie di middleware | Dispense del docente |
39 | Cenni su Web Service e Architetture Orientate ai Servizi | Dispense del docente |
L'esame consiste in:
Valutazione esame complessivo: Elaborato 70% - Prova orale 30%
Esercizi tipici ed esempi di elaborati sono presenti sul portale di Ateneo Studium.