INGEGNERIA DEL SOFTWARE

Crediti: 
9
Settore scientifico disciplinare: 
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI (ING-INF/05)
Anno accademico di offerta: 
2016/2017
Semestre dell'insegnamento: 
Primo Semestre
Lingua di insegnamento: 

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: il processo di produzione del software, le metodologie per lo sviluppo del software, i processi di ingegneria dei requisiti, la progettazione di sistemi software, l'implementazione, il test e la manutenzione del software, UML, l’analisi orientata agli oggetti, la progettazione e l’implementazione di sistemi orientati agli oggetti, i design pattern, gli strumenti per lo sviluppo di sistemi software, e il linguaggio Java.

Programma esteso

Fondamenti di ingegneria del software
- Processo di produzione del software
- Metodologie per lo sviluppo del software
- Processi di ingegneria dei requisiti
- Progettazione di sistemi software
- Implementazione, test e manutenzione del software

Sviluppo di sistemi orientati agli oggetti
- UML
- Analisi dei sistemi orientata agli oggetti
- Progettazione e implementazione di sistemi orientati agli oggetti
- Design pattern

Strumenti per lo sviluppo di sistemi software

Il Linguaggio Java
- Proprietà generali
- Eccezioni
- Input/output
- Collezioni di oggetti
- Interfacce grafiche
- Programmazione funzionale
- Programmazione riflessiva e concorrente

Bibliografia

Ian Sommerville. Ingegneria del Software, 8/ed, Pearson Education, 2007.

Metodi didattici

Il corso si basa su lezioni teoriche ed esercitazioni in laboratorio. In particolare le attività di laboratorio, saranno dedicate allo sviluppo di alcuni sistemi software utilizzando il linguaggio Java e gli strumenti presentati durante il corso. In queste attività, gli studenti opereranno individualmente, chiaramente sotto la guida e con il supporto del docente del corso e senza precludere positive interazioni tra gli studenti.

Modalità verifica apprendimento

Sono previste una prova scritta, con domande a risposta aperta, relative alla parte teorica del corso, ed alcuni esercizi di progettazione, e un progetto software per valutare le capacità pratiche dello studente. Il progetto software sarà valutato per la qualità del sistema realizzato e delle documentazione allegata. Normalmente la prova scritta e il progetto hanno lo stesso peso nel voto finale. Sono previste due prove in itinere con domande a risposta aperta relative alla parte teorica del corso ed alcuni esercizi di progettazione. Il superamento di entrambe le prove in itinere permette di evitare la prova scritta.