INGEGNERIA DEL SOFTWARE II

Anno accademico e docente
Non hai trovato la Scheda dell'insegnamento riferita all’anno accademico di tuo interesse? Ecco come fare >>
English course description
Anno accademico
2017/2018
Docente
EVELINA LAMMA
Crediti formativi
6
Periodo didattico
Primo Semestre
SSD
ING-INF/05

Obiettivi formativi

Il corso è il secondo insegnamento di Ingegneria del Software. Ha in particolare l’obiettivo di presentare il processo di sviluppo del software ed alcuni metodi e strumenti disponibili nelle fasi di:
- analisi e specifica dei requisiti
- progettazione
- verifica
- manutenzione
- misura
dei sistemi software.
Per approfondire alcuni argomenti, nell'ambito dell’insegnamento sono previsti seminari tematici, presentati da esperti (anche aziendali) su invito del docente.

Le principali conoscenze acquisite sono relative alle metodologie utilizzabili per le fasi di sviluppo software sopra elencate, in particolare:
- strutturazione di un progetto di sviluppo software e relative fasi di sviluppo;
- definizione dell'architettura di sistema e dell'applicazione
- tecnologie software per lo sviluppo dei componenti
- convalida e verifica dei componenti e dell'applicazione
- pianificazione e misura di un progetto di sviluppo software.
Le principali abilità (ossia la capacità di applicare le conoscenze acquisite) saranno:
- capacità di condurre le fasi di analisi e specifica, progetto e testing del software, e capacità di misurarne il costo applicando metriche; capacità di utilizzare strumenti per il lavoro cooperativo, sistemi di modellazione orientata agli oggetti, sistemi di gestione delle versioni, sistemi di verifica e testing per codice a oggetti, e capacità di dare una valutazione preliminare del costo del software utilizzando metriche del software.

Prerequisiti

Questo insegnamento richiede come prerequisito la conoscenza di almeno un linguaggio di programmazione di alto livello (imperativo, o preferibilmente a oggetti), e capacità di programmazione.

Contenuti del corso

- Introduzione all’Ingegneria del Software: visione d'insieme, qualità del software, principi dell'ingegneria del software
- Modelli di sviluppo, metodi Agile
- Specifica: qualità e stili, specifiche operazionali, specifiche descrittive
- Progettazione: modularizzazione, progettazione orientata agli oggetti, architetture, UML, design pattern
- Convalida (verifica): obiettivi e requisiti, test, analisi, esecuzione simbolica, integrazione, debugging
- Produzione: attività, processi software, manutenzione (evoluzione)
- Gestione: pianificazione di progetto, metriche del software, controllo di progetto, organizzazione, gestione dei rischi
- Strumenti: lavoro cooperativo, controllo delle versioni e delle dipendenze, di sviluppo. Relativamente a questi argomenti, si terranno esercitazioni laboratoriali pratiche e guidate su strumenti di comunicazione e condivisione (Slack, Trello), UML per NetBeans e easyUML plug-in, Git come sistema di versioning, Maven come sistema di gestione delle dipendenze di un progetto, JUnit e Mockito come strumenti per il testing
- Seminari tematici invitati, tenuti da esperti aziendali

Metodi didattici

Il corso comprende lezioni frontali in aula per alcuni argomenti, ed esercitazioni pratiche laboratoriali svolte in Laboratorio per gli argomenti legati agli strumenti di lavoro cooperativo, di progettazione con UML, di gestione delle versioni, di verifica e testing.

Modalità di verifica dell'apprendimento

L’obiettivo della prova d’esame e’ la verifica del livello di raggiungimento degli obiettivi formativi precedentemente indicati.
L'esame puo' essere sostenuto in lingua inglese, con avviso al docente almeno 7 giorni prima.
L’esame e’ organizzato in due parti:
- una prova scritta, con domande aperte sui contenuti del corso, ed esercizi su specifiche, testing, e metriche. Durante lo svolgimento di tale prova non è concesso consultare testi, appunti o altra fonte di informazione. La prova scritta consiste di esercizi tesi a verificare il livello di conoscenza raggiunto su speficiche, tecniche di verifica e testing, metriche, modelli di sviuppo. Il punteggio massimo assegnato per tale prova è di 16 punti, con una soglia di sufficienza posta a 9/16;
- una presentazione e discussione di un progetto di sviluppo software (da concordare con il docente). Il punteggio assegnato e’ fino a ulteriori 16 punti. Il progetto può essere svolto congiuntamente con altri insegnamenti, e realizzabile singolarmente o in gruppo. La presentazione riguarda le metodologie e gli strumenti utilizzati pertinenti agli argomenti del corso, e la documentazione a corredo prodotta nello sviluppo del progetto software. Preventivamente alla discussione va consegnata una breve relazione o un file di presentazione. La valutazione di tale prova verifica il livello ragggiunto nella capacita' di condurre un (limitato) progetto software, definirne le specifiche, il progetto, lo sviluppo e la documentazione.

Il voto finale e’ dato dalla somma dei due punteggi ottenuti. Con punteggio superiore o uguale a 31, il voto finale è 30/30 e Lode.

Testi di riferimento

Le diapositive proiettate e discusse a lezione saranno pubblicate nel sito Web del corso. Sono disponibili anche testi e soluzioni di prove d'esame degli anni accademici precedenti, utili allo studente per raffinare e auto-valutare la propria preparazione.

Sono consigliati i seguenti testi:

Ghezzi Carlo, Jazayeri Mehdi, Mandrioli Dino: Ingegneria del software. Fondamenti e principi; Seconda edizione, Pearson Education Italia, 2004, ISBN: 88-7192-204-2.

Sommerville Ian: Ingegneria del Software. Decima Edizione, Pearson Education Italia, 2017, ISBN: 978-8891902245.