Salta ai contenuti. | Salta alla navigazione

Strumenti personali

INGEGNERIA DEL SOFTWARE

Anno accademico e docente
Non hai trovato la Scheda dell'insegnamento riferita a un anno accademico precedente? Ecco come fare >>
English course description
Anno accademico
2022/2023
Docente
FABRIZIO LUGLIO
Crediti formativi
6
Percorso
Ingegneria informatica - Sistemi web
Periodo didattico
Secondo Semestre
SSD
ING-INF/05

Obiettivi formativi

Il corso propone una serie di argomenti per conoscere e definire i fondamentali aspetti architetturali dei moderni sistemi software.
L'obiettivo del corso è quello di fornire una comprensione approfondita dei concetti del paradigma object-oriented e di fornire gli elementi per la progettazione di applicazioni software con metodologie orientate agli oggetti.

Il corso prevede, oltre a lezioni teoriche, una serie di esercitazioni in aula sulla parte relativa ad UML ed al linguaggio Java.

Il corso fornisce allo studente le seguenti conoscenze:

- Il processo di sviluppo del software: aspetti economici, organizzativi e metodologici; il gruppo di lavoro; prodotto software e processo; il ciclo di vita dei sistemi software; modelli di sviluppo software: modello tradizionale a cascata; modello evolutivo e a fontana, altri modelli.
- Modellazione del software: modelli e linguaggi di specifica; il linguaggio UML; uso di UML entro i progetti informatici; gli strumenti CASE.
- Analisi e specifica dei requisiti:l'interazione con il cliente e la formalizzazione dei requisiti; il metodo dei casi d'uso e le sue applicazioni; risultati del processo di analisi.
- Le architetture software: architetture software per piccoli sistemi; architetture client-server, multi-tier e Web; il pattern MVC e le sue applicazioni; riuso delle componenti.
- il linguaggio Java; l'architettura di Java2; Java e le proprietà di oggetti; sistemi multi-tier in Java;
- Progettazione dei sistemi software: principi e metodi di progettazione; principi di modularità ed incapsulamento; la progettazione orientata agli oggetti; i “design patterns” ed il loro uso; regole di scrittura del codice.
- La fase di test e la qualità del software (metriche e metodologie)
- Metodologie di gestione dei progetti software: il project management
- La conduzione operativa di un progetto: impostazione e definizione di obiettivi; analisi dei vincoli; scelta di strumenti e architetture; il lavoro in team; metriche e diagrammi utili (Gantt, PERT, ...); il problema della documentazione; comunicazione entro e fuori un team; evoluzione e manutenibilità dei sistemi, manutenzione evolutiva.

A fine corso lo studente sarà in grado di modellare un sistema software secondo i requisiti raccolti o fare il reverse_engineering di un sistema già realizzato. Sarà inoltre in grado di progettare un sistema complesso attraverso le varie metodologie Object Oriented con l'obiettivo di soddisfare il design for reuse il il design for change.

Prerequisiti

Una buona conoscenza dei fondamenti della programmazione object-oriented e di un linguaggio di programmazione OO, preferibilmente Java o C++

Contenuti del corso

1.Introduzione all'ingegneria del software
2.Il processo di produzione del software
3.Riepilogo dei fondamenti dell'OOP
4.Evoluzione storica dell'OOP
5.OOP, concetti avanzati
6.Implementazione degli oggetti
7.Introduzione a UML8.Elementi di progettazione orientata agli oggeti (OOD)
9.Componenti software: concetti e modelli

Metodi didattici

Durante il corso, gli argomenti verranno illustrati con slide contenenti la parte teorica, con esempi pratici ed esercitazioni in aula.
Per ogni concetto si illustrerà l'obiettivo, la sua evoluzione, come viene implementato attraverso JAVA ed esercitazioni per meglio comprenderne l'applicazione pratica.

Modalità di verifica dell'apprendimento

Il luogo di svolgimento è la sede di Ingegneria di Via Saragat a Ferrara o la sede del tecnopolo di Cento.

L'esame è scritto e orale. Verranno sottoposte al candidato domande a risposta chiusa sulla teoria svolta durante il corso ed esercizi selezionati tra le seguenti possibilità : a) conversione da modelli di classi o di casi d'uso UML a Java e viceversa b) esercizi sui design pattern c) stesura di modelli UML a partire da un problema descritto in linguaggio naturale. Lo scritto durerà circa un'ora e, a seguire, il candidato dovrà fare l'orale, confrontandosi con il docente su quanto fatto nel compito scritto.

Dall'AA 2017-2018 è FACOLTATIVO lo svolgimento di un progetto (consegna della relazione UML) tra quelli presenti sulla pagina del corso o di analoga complessità proposto dallo studente, previa accettazione da parte dei docenti coinvolti. Si può svolgere singolarmente o in coppie. Il progetto facoltativo contribuisce al voto finale con un incremento del punteggio da 1 a 3 a seconda della qualità del documento finale. Il progetto può essere consegnato in un appello o sessione diversa da quella dello scritto. Scritto ed eventuali domande di orale invece avvengono SEMPRE nello stesso appello.

Voto finale = voto scritto con domande di orale + (1,2,3 progetto facoltativo)

Il superamento dell'esame è prova di aver acquisito le conoscenze e le abilità specificate negli obiettivi formativi dell'insegnamento.

Testi di riferimento

Testo principale di riferimento: Ian Sommerville, Ingegneria del software, Pearson Education USA 2014

Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1994 (Versione Italiana, McGraw-Hill, 2003)

Martin Fowler - UML Distilled. Pearson Addison Wesley 2014