Dettaglio insegnamento

INGEGNERIA DEL SOFTWARE

S1730

Insegnamento
INGEGNERIA DEL SOFTWARE
Codice
S1730
Anno Accademico
2024/2025
Anno regolamento
2022/2023
Corso di studio
INFORMATICA
Curriculum
000 - CORSO GENERICO
Responsabile didattico
CFU
6
Ore di lezione
48
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB - Obbligatoria
Anno
3
Periodo
Primo Semestre
Sede
ALESSANDRIA
Lingua insegnamento
Italiano
Contenuti
Il corso tratta le fasi del processo di sviluppo di sistemi software: specifica, progettazione, implementazione, collaudo e manutenzione. Inoltre viene introdotto il linguaggio UML per la specifica e la progettazione di sistemi. L'attività di laboratorio consiste nella preparazione di diagrammi UML tramite un apposito editor.
Testi di riferimento
- I. Sommerville, "Ingegneria del software", Pearson Education Italia
– M. Fowler, "UML distilled", Pearson Education Italia
Obiettivi formativi
Il corso prevede una parte teorica e una parte di laboratorio. La parte teorica tratta il processo dell'Ingegneria strutturato nelle fasi di specifica, progettazione, implementazione, collaudo e manutenzione. Lo scopo e' mostrare come tale processo puo' essere applicato allo sviluppo di sistemi software. La parte di laboratorio introduce il linguaggio UML per la specifica e la progettazione di sistemi. L'attività in laboratorio consiste nella preparazione di diagrammi UML relativi ad un determinato sistema software, attraverso l'uso di un editor UML. Questo permette di prendere confidenza con tali diagrammi e approfondirne la conoscenza. Conoscenza e comprensione: fasi dell'Ingegneria, aspetti formali dei vari tipi di diagrammi UML. Capacità di applicare conoscenza e comprensione: applicazione delle fasi dell'Ingegneria allo sviluppo di un sistema software, ed in particolare, - studio del dominio applicativo; - deduzione dei requisiti dal dominio; - modellazione del dominio e dei requisiti in UML; - definizione e modellazione in UML di un'architettura software adatta a realizzare i requisiti; - definizione e modellazione in UML del comportamento dei componenti del sistema durante l'esecuzione di un certo requisito, con un livello di dettaglio tale da consentire l'implementazione del requisito in un linguaggio di programmazione. Autonomia di giudizio: studio e definizione in modo autonomo del dominio applicativo, dei requisiti, dell'architettura e del comportamento del sistema. Abilità comunicative: - comunicazione e coordinazione all'interno del gruppo di lavoro; - esprimere i requisiti del sistema con diversi gradi di dettaglio; - stesura dei diagrammi UML in modo completo, dettagliato e coerente, al fine di renderli comprensibili a qualunque programmatore. Capacita' di apprendimento: acquisire la terminologia dell'Ingegneria, organizzare lo sviluppo di un sistema secondo le fasi dell'Ingegneria, modellare gli aspetti di specifica e progettazione tramite un linguaggio formale quale UML.
Prerequisiti
Conoscenze acquisite nei corsi di programmazione e basi di dati.
Metodi didattici
Il corso prevede lezioni frontali in aula e lezione pratiche in laboratorio. Modalità: le lezioni frontali si occupano di spiegare le fasi dell'Ingegneria e come queste si possono applicare allo sviluppo di un sistema software. Inoltre si presenta il linguaggio UML sia dal punto di vista formale sia dal punto di vista applicativo mostrando come può essere utilizzato per modellare il dominio applicativo, i requisiti, l'architettura e il comportamento del sistema. Strumenti: Un caso di studio specifico è utilizzato durante le lezioni frontali per mostrare come progettare il sistema a partire dalla deduzione dei requisiti dal dominio applicativo. Il caso di studio viene progressivamente sviluppato durante le lezioni riguardanti l'applicazione pratica delle fasi dell'Ingegneria e di UML. Lo scopo del caso di studio è fornire agli un esempio concreto di applicazione delle procedure viste nel corso. La preparazione da parte delle studentesse e degli studenti di un proprio progetto in UML è richiesto durante le ore in laboratorio. Tale progetto deve avere un dominio diverso rispetto al caso di studio, ma deve avere gli stessi contenuti in termini di specifica e progettazione. Lo scopo del progetto è l'applicazione pratica da parte delle studentesse e degli studenti delle stesse procedure viste durante le lezioni frontali. Un apposito editor UML (Visual Paradigm) è utilizzato sia in aula sia in laboratorio, per modellare il caso di studio e per preparare il progetto, rispettivamente. Il corso ha una propria pagina nella piattaforma DIR (Didattica in Rete) che contiene le slide del corso, i tutorial su UML, i diagrammi UML del caso di studio, le istruzioni per l'editor UML, alcune prove scritte del passato, ecc.
Altre informazioni
Le studentesse e gli studenti con disabilità o con Disturbi Specifici dell’Apprendimento (DSA) o con
Bisogni Educativi Speciali (BES) possono richiedere servizi e strumenti specifici a loro dedicati
rivolgendosi allo Staff Sviluppo e Coordinamento Carriere e Servizi alle Studentesse e agli Studenti e
consultando la pagina dedicata del sito di Ateneo: https://uniupo.it/it/servizi/servizi-studenti-
disabili-e-dsa
Le studentesse e gli studenti con disabilità, DSA, BES, una volta preso contatto con lo Staff di Ateneo,
possono contattare la/il docente titolare dell'insegnamento in relazione alla declinazione delle
modalità di esame, in merito agli aspetti didattici.
Modalità di verifica dell'apprendimento
L'esame prevede una prova scritta riguardante la parte di teoria, ed una prova orale in cui si discute il progetto in linguaggio UML realizzato nelle ore di laboratorio. La partecipazione alla prova scritta è libera; invece la prova orale richiede di aver consegnato il progetto una settimana prima dell'appello. Nella prova scritta si verificano la conososcenza delle varie fasi del processo dell'Ingegneria, l'acquisizione della terminologia dell'Ingegneria e l'applicazione di alcuni metodi. L'esame scritto prevede sia domande (circa 10) sui concetti teorici, sia esercizi applicativi (circa 3) relativi ai metodi. Ad ogni domanda e ad ogni esercizio corrisponde un punteggio dipendente dalla rilevanza, dalla complessità e dalla lunghezza della risposta attesa. Durante la prova scritta non è consetita la consultazione del materiale del corso o di manuali. Sulla piattaforma DIR, nella pagina del corso, ci sono esempi di prove scritte del passato. Durante la discussione del progetto si verificano due aspetti: la qualità dei diagrammi UML realizzati, in termini di precisione, coerenza e completezza; la conoscenza degli aspetti formali di UML. Le domande relative ai diagrammi consegnati hanno lo scopo di chiarire i difetti riscontrati nel progetto. Il numero di tali domande dipende dal numero di difetti. Invece le domande sugli aspetti puramente formali del linguaggio UML sono circa 4. Ad ogni diagramma corrisponde un punteggio dipendendente dalla complessità del tipo di diagramma e dalla sua correttezza. Il voto finale è dato dalla media tra i voti dell'esame scritto e di quello orale.
Programma esteso
- Introduzione all'Ingegneria del Software
- Prodotto software e Processo software
- Specifica dei requisiti di sistemi
- Specifica con UML
- Progettazione di sistemi
- Progettazione con UML
- Collaudo di sistemi
- Manutenzione di sistemi
- Gestione del progetto
- Modelli di processo software
-Introduzione ad alcuni Design Patterns della GoF
Risultati di apprendimento attesi
Conoscenza e capacità di comprensione:
Saper identificare i passi necessari per realizzare un sistema software a partire dalla richiesta di un committente, fino alla consegna, secondo il processo dell'Ingegneria; Saper identificare i vari modelli di processo; saper identificare ed interpretare un diagramma UML. Conoscere le principali architetture software. Conoscere le principali tecniche di verifica e validazione di un software. Conoscere lo scopo ed i passi fondamentali della gestione di un progetto software.

Capacità di applicare conoscenza e comprensione:
Applicare le metodologie dello sviluppo di un processo software (deduzione dei requisiti, progettazione, sviluppo, verifica e validazione, manutenzione) in maniera sistematica secondo un modello di processo. Saper modellare il dominio applicativo, i requisiti, l'architettura e il comportamento del sistema tramite diagrammi UML. Saper sviluppare il codice seguendo i diagrammi UML.

Autonomia di giudizio
Identificare il miglior modello di processo da applicare per lo sviluppo di un software. Identificare le migliori tecniche di deduzione dei requisiti. Valutare l'architettura più idonea da utilizzare per lo sviluppo di un software. Identificare le tecniche più appropriate per la verifica e la validazione. Saper scegliere in autonomia come gestire la manutenzione e/o l'evoluzione di un software. Saper valutare i rischi nella gestione del progetto software ed identificare possibili soluzioni. Scegliere in maniera opportuna i diagrammi UML da utilizzare in base alle fasi di sviluppo e alle metodologie coinvolte.

Capacità di apprendere
Durante lo sviluppo del progetto le studentesse e gli studenti acquisiscono la capacità di scegliere e utilizzare in maniera autonoma approcci, tecniche e tecnologie legate alla progettazione e programmazione orientata agli oggetti.
Ultimo aggiornamento:09-09-2026 00:14:31