INGEGNERIA DEL SOFTWARE
cod. 06015

Anno accademico 2024/25
3° anno di corso - Primo semestre
Docente
Vincenzo BONNICI
Settore scientifico disciplinare
Informatica (INF/01)
Ambito
Discipline informatiche
Tipologia attività formativa
Caratterizzante
72 ore
di attività frontali
9 crediti
sede:
insegnamento
in ITALIANO

Obiettivi formativi

Proporre un percorso che, partendo dall'analisi della Software Crisis e passando per lo studio dei tradizionali modelli di sviluppo, arrivi a definire i fondamentali aspetti architetturali dei moderni sistemi software con particolare attenzione alle applicazioni web.

Con riferimento agli Indicatori di Dublino:

Conoscenza e capacità di comprensione
Il corso introduce i primi concetti relativi all'ingegneria del software. Particolare enfasi è data alla comprensione delle metodologie classiche. Il testo di riferimento è in italiano, ma viene altresì utilizzata durante le lezioni la terminologia in lingua inglese come avviamento alla consultazione di letteratura scientifica internazionale.

Capacità di applicare conoscenza e comprensione
Le conoscenze teoriche presentate vengono sempre applicate alla risoluzione di problemi specifici. Il progetto assegnato che affianca il corso è incentrato sulla realizzazione di applicazioni Web. Spesso i metodi risolutivi vengono presentati sotto forma algoritmica, sviluppando negli studenti la capacità di strutturare procedure utili in numerose parti dell'informatica e non solo nello studio dell'ingegneria del software.

Autonomia di giudizio
Gli esercizi, che vengono proposti relativamente alla parte teorica svolta a lezione, possono venire risolti individualmente o in gruppo. Il confronto con i compagni di corso, nel lavoro a casa o durante discussioni sullo stato di aggiornamento del progetto in aula, favorisce lo sviluppo di capacità specifiche per poter a chiarire ai compagni o ai docenti le proprie argomentazioni. Spesso le problematiche che scaturiscono dallo sviluppo del progetto possono venire risolti in modi molto diversi e l'ascolto delle soluzioni proposte da altri permette di sviluppare la capacità di individuare strutture comuni, al di là delle apparenti differenze superficiali.

Abilità comunicative
Le numerose discussioni sui diversi metodi per risolvere i problemi proposti consentono di migliorare le capacità di comunicazione. Vengono inoltre abitualmente utilizzate durante le spiegazioni (ed esplicitamente evidenziate in classe) alcune modalità di comunicazione specifiche della tecnologia informatica.

Capacità di apprendimento
Lo studio delle origini delle soluzioni tecnologiche e la loro introduzione motivata da considerazioni qualitative e quantitative contribuisce a realizzare negli studenti la capacità di apprendere in modo profondo e non soltanto superficiale e ripetitivo. Le conoscenze così acquisite non sono mai rigide e definitive, ma sono perfettamente adattabili ad ogni evoluzione e cambiamento di prospettiva e di contesto.

Prerequisiti

Esperienze di programmazione

Contenuti dell'insegnamento

Il corso offre le basi per la progettazione di software complessi con particolare enfasi sulle applicazioni web.

Programma esteso

Introduzione ai sistemi software complessi e all'ingegneria del software
Gestione delle configurazioni dei sistemi software
Metodologie per lo sviluppo web
Processi di sviluppo software strutturati e agili
Progettazione per il riuso e design pattern
Techniche per il testing del software

Bibliografia

I. Sommerville, Ingegneria del software, 10 ed, Pearson
I. Sommerville, Introduzione all'ingegneria del software moderna, Pearson
M. Fowler, UML Distilled, 4 ed, Pearson
C. Ghezzi, A. Fuggetta, S. Morasca, A. Morzenti, M. Pezze, Ingegneria del Software, Mondadori Informatica, II edizione
Simon Bennett, John Skelton, Ken Lunn, UML, McGraw-Hill
E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns, Addison-Wesley
Lorna Jana Mitchell. PHP web services: APIs for the modern web. O'Reilly.
Nick Rozanski, Eoin Woods. Software Systems Architecture. Addison-Wesley.

Metodi didattici

Lezioni frontali

Modalità verifica apprendimento

Risultati dell'apprendimento e modalità di verifica
Saper comprendere e utilizzare in modo appropriato le tecniche relative all'analisi, progettazione, realizzazione, testing e validazione del software. Saper lavorare in ambiente web per la realizzazione di semplici architetture software. Conoscere le basi del project management. Conoscere e saper utilizzare le principali tecniche per la realizzazione di applicazioni complesse.

Modalità di verifica/esame
L'esame consiste in una prova scritta e in un progetto.

Altre informazioni

- - -

Obiettivi agenda 2030 per lo sviluppo sostenibile