NICOLA FELICE CAPECE | ELEMENTI DI INGEGNERIA DEL SOFTWARE
ELEMENTI DI INGEGNERIA DEL SOFTWARE | |
---|---|
DIPARTIMENTO di MATEMATICA,INFORMATICA ed ECONOMIA | |
Laurea | |
SCIENZE E TECNOLOGIE INFORMATICHE | |
6 |
CFU | Ore | Ciclo | Docente | ||||
---|---|---|---|---|---|---|---|
1 | ELEMENTI DI INGEGNERIA DEL SOFTWARE | ||||||
6 | 48 | Secondo Semestre | CAPECE NICOLA FELICE |
Lingua insegnamento | Italiano |
---|
Obiettivi formativi e risultati di apprendimento | Saper costruire modelli di sistemi con procedimento step-by-step. Saper produrre documenti software durante le varie fasi del processo di sviluppo e modificali per produrre versioni successive nell'ambito di processi software iterativi ed incrementali. Saper usare la notazione UML per modellare il software. Saper usare un approccio ingegneristico all'analisi e testing del software. |
---|
Prerequisiti | Essere in grado di risolvere problemi di programmazione semplici (programming in the small) sia utilizzando approcci procedurali che object oriented con opportuna selezione e/o realizzazione di strutture dati efficienti. |
---|
Contenuti del corso | Concetti di base, definizioni e problematiche dell'Ingegneria del Software. Modelli di ciclo di vita del software e metodologie agili. Analisi e specifica dei requisiti. Progettazione e architetture software. Modellazione orientata agli oggetti e introduzione ai design pattern. Unified Modeling Language (UML): class diagram, object diagram, use case diagram, sequence diagram, collaboration diagram; statechart diagram, activity diagram, component diagram; deployment diagram; introduzione al Rational Unified Process. Software testing: livelli di testing, processo e documenti di testing; principali tecniche di testing black box e white box; testing di sistemi object-oriented. |
---|
Programma esteso | Introduzione all'Ingegneria del Software. Definizione del software come prodotto e come processo. Terminologia dell'Ingegneria del Software. Modelli di Ciclo di Vita del Software: come vengono sviluppati e come dovrebbero essere sviluppati i sistemi software. Introduzione alle metodologie agili: Extreme Programming. Introduzione al framework agile Scrum per il ciclo di vita dello sviluppo del software. Project Management: scheduling del Progetto, utilizzo del software Trello. Grafo delle attività (PERT) e diagramma di GANTT. Software Project Managment. Modellazione UML: introduzione alla modellazione Unified Modeling Language e alle sue notazioni fondamentali. Organizzazione dei progetti software: strumenti e metodologie per la comunicazione nelle attività collaborative dello sviluppo del software. Introduzione all'ingegneria dei requisiti: la raccolta dei requisiti. Specifica di un sistema software e struttura del documento di analisi dei requisiti. Attività di analisi dei requisiti dei sistemi software. Formalizzazione dei requisiti e modellazione ad oggetti. Modellazione ad Oggetti: dai casi d'uso ai diagrammi di classe. Attività svolte durante la modellazione ad oggetti, identificazione degli oggetti, denominazione degli oggetti. Tecnica di Abbot. Utenti dei diagrammi di classe. Modellazione dinamica: digrammi di sequenza e di stato. Utilizzo della modellazione dinamica per la progettazione delle interfacce utente. Dettagli sul Requirement Analysis Document (RAD). Introduzione al System Design: scomposizione dei sistemi software e concetti chiave. Raggiungere gli obiettivi del design. Concorrenza, mappig hardware/software, gestione globale e controllo degli accessi, software control, condizioni al contorno. Stili architetturali dei sistemi distribuiti. Documentazione, revisione e gestione del System Design. Struttura del System Design Document (SDD). Object design: concetti di riutilizzo del software, l'uso dell'ereditarietà, l'ereditarietà dell'interfaccia e dell'implementazione, delegazione e componenti. Documentazione dell'Object Design, introduzione a JavaDoc. Panoramica sui design pattern strutturali: Composite design pattern, Facade design pattern, Adapter design pattern, Bridge design pattern, Proxy design pattern. Panoramica sui design pattern comportamentali: Command design pattern, Observer design pattern, Strategy design pattern. Panoramica sui design pattern creazionali: Abstract Factory design pattern, Builder design pattern. Object design: specifica dell'interfaccia. Aggiunta di informazioni sulla visibilità (UML), sulla tipologia di firma (UML) ed euristiche sull'information hiding. Aggiunta di contratti e vincoli, Object Constraint Language (OCL). Mapping dei modelli sul codice. Attività di mapping: ottimizzazioni, realizzazione di associazioni, mapping dei contratti sulle eccezioni, mapping dei class model sugli storage schema. Introduzione al software testing. Tecniche di Unit Testing: black-box e white-box testing. |
---|
Metodi didattici | Lezioni frontali in aula per un totale di almeno 48 ore. |
---|
Modalità di verifica dell'apprendimento | Sranno previste due prove, una scritta e una orale. |
---|
Testi di riferimento e di approfondimento, materiale didattico Online | Object Oriented Software Engineering Using UML Patterns and Java Ian Sommerville Software Engineering, 10th Edition, Pearson Materiale digitale prodotto dal docente che sarà reso disponibile su Moodle. |
---|
Metodi e modalità di gestione dei rapporti con gli studenti | Di persona durante l'orario di ricevimento; mediante posta elettronica. Il docente utilizzerà anche la piattaforma di e-learning Moodle per la condivisione del materiale didattico e pre la comunicazione con gli studenti (e.g. forum). |
---|
Date di esame previste | 01/07/2024; 22/07/2024; 16/09/2024; 09/12/2024; 03/02/2025; 17/02/2025 |
---|
Seminari di esperti esterni | No |
---|