Corso | Ingegneria dell'Informazione |
Curriculum | Curriculum unico |
Orientamento | Orientamento unico |
Anno Accademico | 2019/2020 |
Crediti | 6 |
Settore Scientifico Disciplinare | ING-INF/05 |
Anno | Terzo anno |
Unità temporale | Secondo semestre |
Ore aula | 48 |
Attività formativa | Attività formative a scelta dello studente (art.10, comma 5, lettera a) |
Docente | ROBERTO NARDONE |
Obiettivi | Obiettivi formativi: Il corso di Ingegneria del Software mira a fornire i principi, le metodologie e le tecniche alla base delle diverse fasi di sviluppo e produzione del codice: pianificazione, modellazione e specifica, progettazione, implementazione, collaudo e verifica, valutazione, manutenzione. Gli studenti sono posti in condizione di condurre le principali attività previste dal ciclo di vita di creazione di un software a partire dalla specifica e/o dagli artefatti previste nelle fasi precedenti. Il corso fornisce gli strumenti teorici e le relative linee guida per affrontare ciascuna fase del ciclo di vita. Il corso prevede inoltre una parte esercitativa con lo scopo di fornire agli studenti gli elementi pratici per la progettazione di software complessi. Conoscenza e comprensione: a seguito del superamento dell’esame, lo studente conosce i principi fondamentali dell’Ingegneria del Software, ovvero le tecniche e gli strumenti di supporto per ogni fase del ciclo di vita, nonché le principali architetture software e framework di sviluppo. Capacità di applicare conoscenze: a seguito del superamento dell’esame, lo studente è in grado di analizzare e progettare sistemi software complessi, definendone anche la relativa architettura, dalle fasi di specifica a quelle di verifica e manutenzione. Autonomia di giudizio: per il superamento dell'esame lo studente deve essere in grado di risolvere semplici esercizi relativi alla progettazione ed alla verifica dei software, oltre a rispondere autonomamente a domande teoriche, analitiche e progettuali a risposta libera. Lo studente, quindi, è portato a sviluppare autonomia di giudizio sulla completezza, la profondità e la correttezza delle risposte liberamente fornite. Abilità comunicative: lo studente è in grado di illustrare le motivazioni teoriche e tecniche che sono alla base delle scelte fondamentali di progettazione di un sistema software complesso. Capacità di apprendimento: a seguito del superamento dell’esame, lo studente è in grado di apprendere in autonomia ulteriori tecniche avanzate che derivano dal costante avanzamento dell’Ingegneria del Software moderna, e di applicare le stesse a nuovi progetti. Modalità di accertamento e valutazione: Gli esami di accertamento e di valutazione consistono: - in un progetto, opzionale e da svolgersi in gruppo, ha lo scopo di approfondire un argomento del corso o di progettare e, possibilmente, realizzare un sistema software la cui il docente svolge il ruolo del committente; - in una prova scritta, volta ad accertare la capacità di progettazione e di validazione dei sistemi software; - in una prova orale, volta a discute l’eventuale progetto realizzato ed accertare la comprensione degli argomenti teorici del corso. Al termine della prova orale, allo studente viene attribuito un voto massimo 30/30. Ai fini del superamento dell’esame con votazione minima di 18/30 è necessario che le conoscenze/competenze della materia siano almeno ad un livello elementare, sia per la parte scritta che per quella orale, ovvero gestire specifiche software di complessità limitata. E’ attribuito un voto compreso fra 19/30 e 24/30 quando lo studente sia in grado di svolgere correttamente la parte scritta ma possegga competenze elementari nella parte teorica. E’ attribuito un voto compreso fra 25/30 e 30/30 quando lo studente dimostra di essere in grado di svolgere correttamente la parte scritta e dimostri buone competenze nella parte teorica, con ottime capacità di gestire specifiche software complesse, individuando e valutando le possibili alternative progettuali. Agli studenti che svolgono il progetto ed abbiano acquisito competenze eccellenti sia nella parte scritta che in quella teorica può essere attribuita la lode. |
Programma | Introduzione all'Ingegneria del software. Processo e prodotto. Fattori di qualità del software. Principi dell’ingegneria del software: formalità, astrazione, separazione degli interessi, modularità, incapsulamento, information hiding, coesione, accoppiamento, anticipazione del cambiamento. Il concetto di modulo software, moduli come astrazione sul controllo e come astrazione sui dati. Relazioni tra moduli. Il ciclo di vita del software. Principali attività della produzione del software. Modello a cascata; modello con retroazione. Modelli evolutivi. Modello a ‘V’. Metodologie Agili. SCRUM. Ingegneria dei requisiti. Concetto di prodotto Software. Generalità sulla stima dei costi. Metriche funzionali (Function Points). Analisi dei punti funzione (FPA). Analisi e specifica dei requisiti. Documento dei requisiti (SRS). Requisiti utente e di sistema. Requisiti funzionali e non funzionali. Tassonomia dei requisiti non funzionali. Completezza e consistenza dei requisiti. Standard per la specifica dei requisiti. Elicitazione, analisi dei requisiti e validazione dei requisiti. Tracciabilità dei requisiti. Modellazione dei casi d’uso in UML. La modellazione a oggetti. Obiettivi della modellazione. La progettazione tradizionale e quella orientata agli oggetti. L’ereditarietà come strumento di progettazione e di riuso. La fase di progettazione. La modellazione a oggetti in linguaggio UML: diagrammi delle classi, di interazione, di stato, di attività, dei componenti, dei package, di deployment. Dalla progettazione a oggetti alla programmazione a oggetti. Realizzazione del contenimento stretto e lasco, delle associazioni e dell’interazione tra gli oggetti. Pattern architetturali e di design. Pattern creazionali, strutturali e comportamentali. I pattern DAO, Observer, Factory, Model-View-Controller, Singleton, Façade, Adapter, Composite. Dal progetto UML alla implementazione in Java. Verifica e validazione del software (V&V). Analisi statica. Obiettivi e pianificazione del testing. Tecniche di testing black-box e white-box. Test di unità, di integrazione, di sistema, di accettazione, di regressione, -test, -test. Test strutturale, criteri di copertura. Complessità ciclomatica o numero di Mc Cabe. Test combinatoriale. Model-based testing. Test di robustezza. Metodi formali. Concetti di affidabilità del software. Testing di applicazioni Java con Junit. Modelli e architetture software. Partizioni e Layer. Pattern architetturali. Repository Architecture. Client/Server Architecture. Peer-To-Peer Architecture. Model/View/Controller. Architetture n-tier. |
Testi docente | I. Sommerville. Software Engineering, X ed., Pearson 2017. Progettazione a oggetti: C. Larman, Applicare UML e i Pattern - Analisi e Progettazione orientata agli Oggetti, III ed. Prentice-Hall, 2005. B. Bruegge, A. Dutoit. Object-Oriented Software Engineering, Pearson, 2008. UML: Stevens Rod Pooley, Usare UML, Addison Wesley, 2008. J. Arlow, Ila Neustadt, UML2 e Unified Process, McGraw-Hill, 2006. Altri: P. Amman, J. Offutt. Introduction to software testing, Cambrigde Univerisity Press, 2008. E. Gamma, R. Helm, R.Johnson, J.Vissides. Design patterns, Addison Wesley |
Erogazione tradizionale | Sì |
Erogazione a distanza | No |
Frequenza obbligatoria | No |
Valutazione prova scritta | Sì |
Valutazione prova orale | Sì |
Valutazione test attitudinale | No |
Valutazione progetto | Sì |
Valutazione tirocinio | No |
Valutazione in itinere | No |
Prova pratica | No |
Cerca nel sito
Posta Elettronica Certificata
Direzione
Tel +39 0965.1693217/3252
Fax +39 0965.1693247
Protocollo
Tel +39 0965.1693422
Fax +39 0965.1693247
Didattica e orientamento
Tel +39 0965.16933385
Fax +39 0965.1693247
Segreteria studenti
Tel +39 0965.1691475
Fax +39 0965.1691474
Amministrazione
Tel +39 0965.1693214
Fax +39 0965.1693247
Ricerca
Tel +39 0965.1693422
Fax +39 0965.1693247