Skip to Main Content (Press Enter)

Logo UNIRC
  • ×
  • Home
  • Corsi
  • Insegnamenti
  • Professioni
  • Persone
  • Pubblicazioni
  • Strutture
  • Attività
  • Competenze

UNI-FIND
Logo UNIRC

|

UNI-FIND

unirc.it
  • ×
  • Home
  • Corsi
  • Insegnamenti
  • Professioni
  • Persone
  • Pubblicazioni
  • Strutture
  • Attività
  • Competenze
  1. Insegnamenti

1000135 - Ingegneria del software

insegnamento
ID:
1000135
Durata (ore):
48
CFU:
6
SSD:
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
Sede:
REGGIO DI CALABRIA
Url:
Dettaglio Insegnamento:
INGEGNERIA INFORMATICA, ELETTRONICA E DELLE TELECOMUNICAZIONI/INTERNET E CYBERSECURITY Anno: 3
INGEGNERIA INFORMATICA, ELETTRONICA E DELLE TELECOMUNICAZIONI/GENERALE Anno: 3
Anno:
2025
  • Dati Generali
  • Syllabus
  • Corsi
  • Persone
  • Altre Info

Dati Generali

Periodo di attività

Secondo Ciclo Semestrale (23/02/2026 - 29/05/2026)

Syllabus

Obiettivi Formativi

Il corso di Ingegneria del Software mira a fornire i principi, le metodologie e le tecniche alla base delle diverse fasi di sviluppo e produzione del codice: pianificazione, modellazione e specifica, progettazione, implementazione, collaudo e verifica, valutazione, manutenzione. Gli studenti sono messi in condizione di condurre le principali attività previste dal ciclo di vita del software, a partire dalla specifica e/o dagli artefatti prodotti nelle fasi precedenti. Il corso fornisce gli strumenti teorici e le relative linee guida per affrontare ciascuna fase del ciclo di vita. È inoltre prevista una parte esercitativa, con l’obiettivo di fornire agli studenti elementi pratici per la progettazione di software complessi.



Prerequisiti

Conoscenza base di Java.



Metodi didattici

L'insegnamento è organizzato secondo la seguente ripartizione:

Lezioni frontali (26 ore): Esposizione dei concetti teorici con l'ausilio di slide e lavagna.

Esercitazioni in aula (22 ore): risoluzione guidata di problemi di progettazione software mediante l’uso di diagrammi UML, in particolare use case diagram, class diagram e sequence diagram; esercitazioni sull’uso di strumenti per la gestione e la condivisione del codice sorgente basati su Git; esercitazioni sui criteri di copertura del codice, svolte sia alla lavagna sia in ambiente Java mediante appositi strumenti di analisi della copertura; esercitazioni sui concetti di ereditarietà e polimorfismo; esercitazioni introduttive di analisi formale di protocolli di sicurezza tramite BAN Logic.


Verifica Apprendimento

Gli esami di accertamento e di valutazione consistono in:

- un progetto, da svolgersi singolarmente o in gruppo, per la progettazione di un sistema software secondo i principi illustrati nel corso;

- una prova scritta (2,5 ore) comprensiva di esercizi e domande teoriche, volta ad accertare la capacità di progettazione e di validazione dei sistemi software e di semplici protocolli di sicurezza;

- una prova orale, volta a discutere il progetto realizzato e la prova scritta ed accertare la comprensione degli argomenti teorici del corso.

Al termine della prova orale, allo studente viene attribuito un voto massimo 30/30.

Il voto finale sarà attribuito secondo il seguente criterio di valutazione:

30 e lode: conoscenza completa, approfondita e critica degli argomenti, eccellente proprietà di linguaggio, completa ed originale capacità interpretativa, piena capacità di applicare autonomamente le conoscenze per risolvere i problemi proposti;

28 - 30: conoscenza completa e approfondita degli argomenti, ottima proprietà di linguaggio, completa ed efficace capacità interpretativa, in grado di applicare autonomamente le conoscenze per risolvere i problemi proposti;

24 - 27: conoscenza degli argomenti con un buon grado di padronanza, buona proprietà di linguaggio, corretta e sicura capacità interpretativa, buona capacità di applicare in modo corretto la maggior parte delle conoscenze per risolvere i problemi proposti;

20 - 23: conoscenza adeguata degli argomenti ma limitata padronanza degli stessi, soddisfacente proprietà di linguaggio, corretta capacità interpretativa, più che sufficiente capacità di applicare autonomamente le conoscenze per risolvere i problemi proposti;

18 - 19: conoscenza di base degli argomenti principali, conoscenza di base del linguaggio tecnico, sufficiente capacità interpretativa, sufficiente capacità di applicare le conoscenze di base acquisite;

Insufficiente: non possiede una conoscenza accettabile degli argomenti trattati durante il corso.


Testi

  • I. Sommerville. Ingegneria del Software, decima edizione., Pearson 2017.
  • C. Larman, Applicare UML e i Pattern - Analisi e Progettazione orientata agli Oggetti, III ed. Prentice-Hall, 2005.
  • Applicare UML e i pattern. Analisi e progettazione orientata agli oggetti. Ediz. MyLab, Object-Oriented Software Engineering Using UML, Patterns, and Java: Pearson New International Edition
  • Bruegge, Bernd, and Allen A. Dutoit. Object-oriented software engineering; conquering complex and changing systems. Prentice Hall 
  • Usare UML. Ingegneria del software con oggetti e componenti
  • P. Amman, J. Offutt. Introduction to software testing, Cambrigde Univerisity Press
  • E. Gamma, R. Helm, R.Johnson, J.Vissides. Design patterns, Addison Wesley
  • SRC Research Report 39. A Logic of Authentication. Michael Burrows, Martin Abadi, and Roger Needham. February 28, 1989



Contenuti

Programma del corso

Introduzione all'Ingegneria del Software (0.5 CFU)

Processo e prodotto. Ciclo di vita del software. Costo dello sviluppo software. Qualità esterna: Correttezza, Affidabilità, Usabilità, Scalabilità, Efficienza, Robustezza. Qualità interna: Riparabilità, Manutenibilità, Riusabilità, Portabilità, Verificabilità.

Ingegneria dei Requisiti (0.5 CFU)

Concetto di prodotto software. Analisi e specifica dei requisiti. Documento dei requisiti (SRS). Requisiti utente e requisiti di sistema. Requisiti funzionali e non funzionali. Requisiti di dominio. Modello FURPS. Completezza e consistenza dei requisiti. Elicitazione, analisi e validazione dei requisiti. Modellazione dei casi d’uso in UML. Diagramma dei casi d’uso. Template di Cockburn.

La Modellazione a Oggetti (1 CFU)

Obiettivi della modellazione. Progettazione tradizionale e progettazione orientata agli oggetti. L’ereditarietà come strumento di progettazione e riuso. La fase di progettazione. Modellazione a oggetti in linguaggio UML. Diagrammi delle classi: attributi, operazioni, responsabilità, associazioni, molteplicità, aggregazione, composizione, classi associative, ereditarietà, interfacce. Dal progetto UML all’implementazione in Java.

Pattern Creazionali, Strutturali e Comportamentali (1 CFU)

I pattern DAO, Observer, Factory, Singleton, Façade, Adapter, Composite, Abstract Factory, Bridge, Builder, Strategy.

Modelli e Architetture Software (0.5 CFU)

Partizioni e layer. Pattern architetturali. Repository architecture. Client/Server architecture. Peer-to-peer architecture. Model/View/Controller. Architetture n-tier.

Verifica e Validazione del Software (V&V) (1 CFU)

Analisi statica. Obiettivi e pianificazione del testing. Tecniche di testing black-box e white-box. Test di unità, integrazione, sistema, accettazione, regressione. Test strutturali, criteri di copertura. Complessità ciclomatica. Test combinatoriale. Model-based testing. Test di robustezza.

Verifica Formale di Protocolli di Sicurezza (1.5 CFU)

Concetti introduttivi di cybersecurity: cifratura simmetrica, cifratura asimmetrica, freshness, autenticazione. BAN Logic: notazioni e postulati (message meaning rule, nonce verification, jurisdiction rule). Analisi formale di protocolli di sicurezza: Otway-Rees, Needham-Schroeder (chiave condivisa), Needham-Schroeder (chiave pubblica).


Risultati attesi

Conoscenza e capacità di comprensione

a seguito del superamento dell’esame, lo studente conosce i principi fondamentali dell’Ingegneria del Software, con particolare riferimento ai processi, ai metodi, alle tecniche e agli strumenti di supporto alle diverse fasi del ciclo di vita del software, nonché alle principali architetture software, ai framework di sviluppo e ai concetti essenziali di sicurezza utili alla progettazione e all’analisi di sistemi software.

Conoscenza e capacità di comprensione applicate

A seguito del superamento dell’esame, lo studente è in grado di applicare metodologie, tecniche e strumenti dell’Ingegneria del Software per l’analisi, la progettazione, lo sviluppo, la verifica e la manutenzione di sistemi software, operando scelte coerenti con i requisiti funzionali e non funzionali del contesto applicativo e tenendo conto, a livello introduttivo, anche degli aspetti di sicurezza e della correttezza delle interazioni tra componenti e protocolli.  

Autonomia di giudizio:

Per il superamento dell’esame, lo studente deve essere in grado di valutare autonomamente diverse alternative nelle fasi di analisi, progettazione e verifica del software, tenendo conto dei requisiti del sistema, della manutenibilità, delle prestazioni, dell’affidabilità e della qualità complessiva della soluzione proposta.  

Abilità comunicative:

il corso e l’esame aiutano lo studente a sviluppare adeguate abilità comunicative, consentendogli di esporre con linguaggio tecnico appropriato le motivazioni teoriche e progettuali alla base delle soluzioni adottate e di descrivere in modo chiaro ed efficace struttura, comportamento, qualità e proprietà rilevanti di un sistema software.

Capacità di apprendimento:

A seguito del superamento dell’esame, lo studente è in grado di apprendere in autonomia nuove tecniche, metodologie, tecnologie e strumenti derivanti dall’evoluzione dell’Ingegneria del Software, e di applicarli criticamente allo sviluppo e alla valutazione di nuovi sistemi software.


Altre informazioni

Codice Teams: o0w4e3c


Il gruppo team contiene il materiale didattico (slide, note ed eserci risolti) utilizzato a lezione


Corsi

Corsi

INGEGNERIA INFORMATICA, ELETTRONICA E DELLE TELECOMUNICAZIONI 
Laurea
3 anni
No Results Found

Persone

Persone

De Angelis Vincenzo
Docenti
No Results Found

Altre Info

Insegnamento principale

INGEGNERIA DEL SOFTWARE
  • Utilizzo dei cookie

Realizzato con VIVO | Designed by Cineca | 26.4.3.0