Questo sito utilizza cookie tecnici propri e di terze parti, necessari al suo funzionamento, e, con il tuo consenso, cookie di profilazione ed altri strumenti di tracciamento di terze parti, utili per esporre video ed analizzare il traffico al fine di misurare l'efficacia delle attività di comunicazione istituzionale. Puoi rifiutare i cookie non necessari e di profilazione cliccando su "Solo cookie tecnici". Puoi scegliere di acconsentirne l'utilizzo cliccando su "Accetta tutti" oppure puoi personalizzare le tue scelte cliccando su "Personalizza".
Per maggiori informazioni consulta la nostra privacy policy.

Solo cookie tecnici Personalizza Accetta tutti

vai al contenuto vai al menu principale vai alla sezione Accessibilità vai alla mappa del sito
Login  Docente | Studente | Personale | Italiano  English
 
Home page Home page

INGEGNERIA DEL SOFTWARE

Corso INGEGNERIA INFORMATICA, ELETTRONICA E DELLE TELECOMUNICAZIONI
Curriculum comune
Anno Accademico 2024/2025
Anno 3
Crediti 6
Ore aula 48
Settore Scientifico Disciplinare ING-INF/05 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
Attività formativa A scelta dello studente
Ambito A scelta dello studente

Docente

Responsabile Vincenzo De Angelis
Crediti 6
Semestre Secondo Ciclo Semestrale

Informazioni dettagliate relative all'attività formativa

Introduzione all'Ingegneria del Software

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

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

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

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

Modelli e Architetture Software

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)

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

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).


Ultimo aggiornamento: 16-04-2025

  • 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

Ultimo aggiornamento: 05-04-2025

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.

Conoscenze e capacità di comprensione:

Conoscenza dei principi fondamentali dell’Ingegneria del Software, ovvero delle tecniche e degli strumenti di supporto per ciascuna fase del ciclo di vita, nonché delle principali architetture software e dei framework di sviluppo.

Autonomia di giudizio:

Per il superamento dell'esame, lo studente deve essere in grado di valutare le diverse alternative in fase di progettazione e verifica del software. Le alternative devono essere analizzate in base ai requisiti funzionali e non funzionali, alla manutenibilità e alle prestazioni richieste.

Abilità comunicative:

Capacità di comunicare con adeguata competenza tecnica e con un linguaggio appropriato, illustrando le motivazioni teoriche e tecniche alla base delle scelte progettuali di un sistema software complesso.

Capacità di apprendimento:

Capacità di apprendere nuove tecniche, tecnologie e strumenti derivanti dal continuo avanzamento dell’Ingegneria del Software moderna, e di applicarli a nuovi progetti.



Ultimo aggiornamento: 05-04-2025

Conoscenza base di Java.


Ultimo aggiornamento: 05-04-2025

Lezioni frontali ed esercitazioni.


Ultimo aggiornamento: 05-04-2025

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 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.



Ultimo aggiornamento: 05-04-2025


Ulteriori informazioni

Nessun materiale didattico inserito per questo insegnamento
Nessun avviso pubblicato
Nessuna lezione pubblicata
Codice insegnamento online non pubblicato

Impostazione cookie

Cerca nel sito

 

Posta Elettronica Certificata

Direzione

Tel +39 0965.1693217/3252

Fax +39 0965.1693247

Indirizzo e-mail


Protocollo

Tel +39 0965.1693422

Fax +39 0965.1693247

Indirizzo e-mail

Didattica e orientamento

Tel +39 0965.16933385

Fax +39 0965.1693247

Indirizzo e-mail

Indirizzo e-mail

Segreteria studenti

Tel +39 0965.1691475

Fax +39 0965.1691474

Indirizzo e-mail

Amministrazione

Tel +39 0965.1693214

Fax +39 0965.1693247

Indirizzo e-mail


Ricerca

Tel +39 0965.1693422

Fax +39 0965.1693247

Indirizzo e-mail

Social

Facebook

Twitter

YouTube

Instagram