Corso | INGEGNERIA INFORMATICA, ELETTRONICA E DELLE TELECOMUNICAZIONI |
Curriculum | comune |
Anno Accademico | 2023/2024 |
Anno | 3 |
Crediti | 6 |
Ore aula | 48 |
Settore Scientifico Disciplinare | ING-INF/05 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI |
Attività formativa | A scelta dello studente |
Ambito | A scelta dello studente |
Responsabile | Lorenzo MUSARELLA |
Crediti | 6 |
Semestre | Secondo Ciclo Semestrale |
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. Project management. Diagrammi di Gantt e Pert. 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. Requisiti di sicurezza. 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.
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 strutturale, criteri di copertura. Complessità ciclomatica o numero di Mc Cabe. Test combinatoriale. Model-based testing. Test di robustezza. Metodi formali.
Dependability. Fault-error-failure. Cenni di testing con JUnit.
Modelli e architetture software. Partizioni e Layer. Repository Architecture. Client/Server Architecture. Peer-To-Peer Architecture. Model/View/Controller. Architetture n-tier.
Ultimo aggiornamento: 16-10-2023
I. Sommerville. Ingegneria del Software, decima edizione., Pearson 2017.
C. Larman, Applicare UML e i Pattern - Analisi e Progettazione orientata agli Oggetti, III ed. Prentice-Hall, 2005.
Ultimo aggiornamento: 16-10-2023
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 software: 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.
Conoscenze e capacità di comprensione:
Conoscenza dei principi fondamentali dell’Ingegneria del Software, ovvero delle tecniche e degli strumenti di supporto per ogni fase del ciclo di vita, nonché le principali architetture software e framework di sviluppo.
Autonomia di giudizio:
Per il superamento dell'esame lo studente deve essere in grado di valutare le diverse alternative in fase di progettazione e di verifica del software. Le alternative saranno valutare in base all’analisi dei requisiti funzionali e non funzionali, alla manutenibilità ed alle prestazioni da garantire.
Abilità comunicative:
Capacità di comunicare con adeguata competenza tecnica e con linguaggio appropriato, illustrando le motivazioni teoriche e tecniche che sono alla base delle scelte fondamentali di progettazione di un sistema software complesso.
Capacità di apprendimento:
Capacità di apprendimento di nuove tecniche, tecnologie e strumenti che derivano dal costante avanzamento dell’Ingegneria del Software moderna, e di applicare le stesse a nuovi progetti.
Ultimo aggiornamento: 16-10-2023
Buona conoscenza delle tecniche di progettazione di basi di dati e di un linguaggio di programmazione OOP
Ultimo aggiornamento: 16-10-2023
Erogazione tradizionale ed esercitazioni in classe
Ultimo aggiornamento: 16-10-2023
Prova progettuale (preferibilmente in gruppi da 2 persone) più successiva prova orale
Ultimo aggiornamento: 16-10-2023
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