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: 
2016/2017
Anno di corso: 
3
Anno accademico di erogazione: 
2018/2019
Tipo di attività: 
Obbligatorio a scelta
Lingua: 
Italiano
Crediti: 
8
Ciclo: 
Primo Semestre
Ore di attivita' didattica: 
76
Prerequisiti: 

Analisi e Progettazione orientata agli oggetti.

I corsi di Prograammazione.

Moduli

Metodi di valutazione

Modalita' di verifica dell'apprendimento: 

La verifica dell'apprendimento comprende lo sviluppo di un progetto software in gruppo o anche individualmente ed una discussione sul progetto e su alcuni argomenti del corso.

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 architetturali durante lo sviluppo del software. Identificare e rimuovere violazioni del codice attraverso l’utilizzo ed il supporto fornito da alcuni tool.

Contenuti

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

Programma esteso

1 Presentazione del corso. Obiettivi e contenuti.

Ingegneria del software: model-driven software engineering, component-based software engineering, aspect-oriented software engineering, distributed software engineering.

2 Architetture software. Progettazione dell’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. Utilizzo del tool Understand.

8. Identificazione e rimozione di violazioni nel codice attraverso SonarQube.

9. Utilizzo di Git e GitHub, cooperazione in team durante lo sviluppo di un progetto.

10. Gestione dei progetti software: concetti base. Pianificazione dei progetti: diagrammi Gantt e PERT. Gestione dei rischi, gestione della qualitá.

Bibliografia consigliata

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.

Slide e tutorial di approfondimento su vari argomenti.

Metodi didattici

Lezioni ed esercitazioni in aula. Il materiale didattico sarà disponibile nella piattaforma di e-learning.

Attività ed esercizi di sviluppo software in laboratorio. Uso di Git, GitHub e SonaQube in laboratorio.