INGEGNERIA DEL SOFTWARE
cod. 06015

Anno accademico 2024/25
1° anno di corso - Primo semestre
Docente
Agostino POGGI
Settore scientifico disciplinare
Sistemi di elaborazione delle informazioni (ING-INF/05)
Ambito
A scelta dello studente
Tipologia attività formativa
A scelta dello studente
48 ore
di attività frontali
6 crediti
sede:
insegnamento
in ITALIANO

Obiettivi formativi

Il corso intende fornire una conoscenza approfondita sulle metodologie e tecniche per lo sviluppo del software, sul linguaggio di programmazione Java e sugli strumenti che possono semplificare lo sviluppo e la gestione di sistemi software.
Inoltre, il corso ha l’obiettivo di fornire la capacità di utilizzare la conoscenza acquisita e l’esperienza accumulata durante le esercitazioni per individuare le migliori soluzioni per progettare dei sistemi software e per realizzarne delle implementazioni soddisfacenti sia per quanto riguarda la qualità dei sistemi realizzati e sia per quanto riguarda il costo dello sviluppo.

Prerequisiti

Fondamenti di informatica, Fondamenti di programmazione.

Contenuti dell'insegnamento

Il corso presenta le principali tecniche e metodologie per lo sviluppo di sistemi software, con particolare riferimento ai sistemi orientati agli oggetti, e introduce il linguaggio di programmazione Java. In particolare, il corso affronta i seguenti argomenti:
Introduzione
Processi e modelli di sviluppo
Ingegneria dei Requisiti
Progettazione
Implementazione e il testing
Installazione e manutenzione
Gestione dei progetti
Java

Programma esteso

Introduzione
Processi e modelli di sviluppo
- Processi di sviluppo del software
- Modelli per lo sviluppo del software
- UML
Ingegneria dei Requisiti
- Introduzione
- UML e OCL per l'ingegneria dei requisiti
- Raccolta dei requisiti
- Analisi dei requisiti
- Valutazione e gestione dei requisiti
Progettazione
- Processo di progettazione
- Principi di progettazione
- Progettazione architetturale
- Progettazione interfacce utente
- Software Pattern
- Progettazione orientata agli oggetti
Implementazione e il test
- Implementazione del software
- Test del software
Installazione e manutenzione
- Installazione del software
- Manutenzione deò software
Gestione dei progetti
Java
- Introduzione
- Classi e interfacce
- Eccezioni
- Input e output
- Tipi generici
- Collezioni di oggetti
- Interfacce grafiche
- Programmazione funzionale
- Programmazione riflessiva e concorrente
Tecniche, strumenti e modelli per i sistemi software

Bibliografia

Ian Sommerville. Ingegneria del Software, 10/ed, Pearson Education, 2017.

Tecnologie Internet
M. Amoretti, dispense in inglese sugli argomenti del corso.
J. Kurose, K. Ross, "Computer Networking: A Top Down Approach", ed. Addison-Wesley, 2016.
D. Flanagan, "JavaScript - The Definitive Guide", ed. O’Reilly, 2020.
W. Stallings, "Cryptography and Network Security: Principles and Practice", 7th edition, 2017.

Metodi didattici

Il corso si basa su lezioni teoriche ed esercitazioni in laboratorio. In particolare, le attività di laboratorio, saranno dedicate allo sviluppo di alcune applicazioni e sistemi software utilizzando il linguaggio Java e gli strumenti presentati durante il corso. In queste attività, gli studenti opereranno individualmente o a coppie, sotto la guida e il supporto del docente del corso e senza precludere positive interazioni tra gli studenti. Le slide utilizzate a supporto delle lezioni verranno caricate sulla piattaforma Elly, prima di ogni lezione, e per ogni lezione verrà fornita una dispensa. Per scaricare le slide di un insegnamento è necessaria l’iscrizione all'insegnamento tramite Elly . Le slide vengono considerate parte integrante del materiale didattico. Quindi gli studenti non frequentanti devono controllare il materiale didattico e le indicazioni fornite dal docente disponibili sulla piattaforma Elly

Modalità verifica apprendimento

Sono previste delle prove scritte e delle prove pratiche. Le prove scritte si basano su domande a risposte aperte sulla teoria a cui bisogna rispondere senza l'aiuto di appunti e libri. Queste domande hanno lo scopo di valutare la conoscenza acquisita sugli argomenti discussi durante il corso. La prova pratica consiste nello sviluppo di un sistema software e può essere svolta dagli studenti in modo individuale o in gruppi con massimo 2 persone. Questa prova ha lo scopo principale di valutare la capacità di applicare la conoscenza acquisita durante il corso. Inoltre, la valutazione della prova dipenderà dalla qualità delle applicazioni e dei sistemi sviluppati, della relativa documentazione. La durata della prova scritta è pari a 1 ora e trenta minuti e la prova è valutata con scala 0-30. L’esame è superato se il risultato delle prove è maggiore o uguale a 18. Il voto finale è uguale alla media aritmetica dei voti delle prove. La lode può essere assegnata nel caso del raggiungimento del massimo punteggio su tutte le prove.

Tecnologie Internet

La valutazione dell’apprendimento prevede due momenti:
1) una prova scritta della durata di 1 ora, articolata su domande aperte relative alla parte di Cybersecurity;
2) un progetto di sviluppo software basato sulle tecnologie illustrate nella parte 1 del programma; è prevista la stesura di una breve relazione e la presentazione orale del lavoro svolto.
La prova scritta è valutata con scala 0-30. Il progetto è valutato con scala 0-30. I punteggi vengono mediati a formare il voto finale.
E’ prevista una prova scritta in itinere equivalente al momento 1) della valutazione dell’apprendimento, quindi relativa alla parte di cybersecurity.

Altre informazioni

- - -