Anno di corso: 1

Crediti: 8
Crediti: 8
Crediti: 8
Crediti: 3
Tipo: Lingua/Prova Finale
Crediti: 3
Tipo: Lingua/Prova Finale
Crediti: 3
Tipo: Lingua/Prova Finale
Crediti: 3
Tipo: Lingua/Prova Finale

Anno di corso: 2

Anno di corso: 3

INGEGNERIA DEL SOFTWARE

Scheda dell'insegnamento

Anno accademico di regolamento: 
2015/2016
Anno di corso: 
3
Anno accademico di erogazione: 
2017/2018
Tipo di attività: 
Obbligatorio a scelta
Crediti: 
8
Ciclo: 
Primo Semestre
Ore di attivita' didattica: 
76
Prerequisiti: 

Nozioni base di programmazione (vedi insegnamento "Programmazione 1" e Programmazione 2") e di ingegneria del software (vedi insegnamento "Analisi e progettazione del software").

Moduli

Metodi di valutazione

Modalita' di verifica dell'apprendimento: 

La verifica dell'apprendimento comprende una prova scritta (e.g., sviluppo di un progetto software) e una discussione del risultato.

Valutazione: 
Voto Finale

Obiettivi formativi

Acquisire conoscenze più avanzate di sviluppo del software rispetto a quelle acquisite durante il corso del II anno di analisi e progettazione del software. Conoscere ed applicare i pattern durante lo sviluppo del software. Imparare numerose best practices in Java. Conoscere ed utilizzare metriche di valutazione della qualità del codice.

Contenuti

Principi, tecniche e strumenti per lo sviluppo di software. Pattern ed esempi della loro applicazione nello sviluppo del software. Best practices in Java. Valutazione della qualità del codice. Esempi di progetti software e le problematiche affrontate.

Programma esteso

1 Presentazione del corso. Obiettivi e contenuti. Varietá in ingegneria del software: model-driven software engineering, component-based software engineering, aspect-oriented software engineering, distributed software engineering.
2 Architetture software. Progettazione di architetture software. Pattern architetturali. Diagramma dei package, dei componenti e di deployment.
3 Applicazione dei design pattern nello sviluppo del software. Modellazione di un framework di persistenza con i design pattern. Sviluppo di un sistema di gestione di risorse con i design pattern.
4 Best practices in Java. Reflessivitá in Java. Sviluppo di strumenti come plug-in di Eclipse.
5 Sistemi self-managed e self-adaptive: concetti fondamentali, domini applicativi, e case study. Model-driven engineering.
6 Aspect-oriented software engineering: concetti fondamentali. Aspect-oriented design e programmazione.
7 Valutazione della qualita' del software. Metriche per la valutazione del software. Antipattern.
8 Gestione dei progetti software: concetti base. Piannificazione dei progetti: diagrammi Gantt e PERT. Gestione dei rischi, gestione della qualitá

Bibliografia consigliata

I. Sommerville, Ingegneria del Software, Pearson, 8° ed, 2007. C. Larman, Applicare UML e i Pattern – analisi e progettazione orientata agli oggetti, Pearson, 3° ed, 2005.

Metodi didattici

Lezioni ed esercitazioni in aula. Il materiale didattico sarà disponibile nella piattaforma di e-learning per approfondimenti. Attività di esercizi di sviluppo software in laboratorio.