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
 CFUOreCicloDocente
1ELEMENTI 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

 
Fonte dati UGOV