Programmazione II e ingegneria del software (2017/2018)

Codice insegnamento
4S003714
Crediti
12
Coordinatore
Carlo Combi
Altri corsi di studio in cui è offerto
L'insegnamento è organizzato come segue:
Modulo Crediti Settore disciplinare Periodo Docenti
INGEGNERIA DEL SOFTWARE 6 INF/01-INFORMATICA Vedi pagina del modulo Vedi pagina del modulo
PROGRAMMAZIONE II 6 INF/01-INFORMATICA I sem. Nicola Fausto Spoto

Obiettivi formativi

------------------------
MM: INGEGNERIA DEL SOFTWARE
------------------------
------------------------ MM: Teoria ed esercitazioni ------------------------
L'obiettivo dell'insegnamento consiste nell'introdurre i principi scientifici e professionali di base dell'ingegneria del software, affrontando le diverse fasi di sviluppo e produzione del codice: pianificazione, progettazione, modellazione e specifica, implementazione, collaudo e verifica, valutazione, manutenzione. Le esercitazioni in laboratorio compendiano la parte teorica con la progettazione, documentazione e realizzazione di un sistema software. Oltre a possedere le conoscenze di base dell'ingegneria del software, lo studente sarà in grado di realizzare e documentare sistemi software, e di comunicare in modo proficuo con tutti gli attori coinvolti nella realizzazione e uso di un sistema software all'intero di organizzazioni complesse.
------------------------ MM: Laboratorio ------------------------
Scopo di questo modulo è di aiutare lo studente nella progettazione, documentazione e realizzazione di un sistema software con le tecniche introdotte nel modulo di teoria.
------------------------
MM: PROGRAMMAZIONE II
------------------------
Lo scopo di questo modulo è di permettere allo studente di apprendere la programmazione in Java ad oggetti e tecniche di programmazione più avanzate di quelle apprese al corso di Programmazione I. Al termine dell'insegnamento lo studente sarà capace di scrivere algoritmi non banali in un linguaggio a oggetti e di comprendere il codice a oggetti scritto da terzi.

Programma

------------------------
MM: INGEGNERIA DEL SOFTWARE
------------------------
------------------------ MM: Teoria ed esercitazioni ------------------------
* Introduzione all'ingegneria del software
- Definizione di Ingegneria del Software
- Tipi di Software
- Caratteristiche dei software
- Ingegneria del Software e aspetti etici

* Processi software
- Introduzione
- Modelli dei processi software
- Attività dei processi
- Gestione dei cambiamenti

* Sviluppo agile del sotware
- Metodi agili
- La metodologia SCRUM e sue applicazioni

* Ingegneria dei requisiti
- Requisiti funzionali e non funzionali
- Processi di ingegneria dei requisiti
- Ingegneria dei requisiti e UML Use Case

* Progettazione architetturale
- Introduzione
- Pattern di architettura
-- MVC
-- Repository
-- Client server
-- Pipe and filter

* Progettazione e implementazione con approccio agli oggetti
- Caratteristiche principali
- Metodologie ad oggetti: concetti di base
- Modellazione di sistemi orientata agli oggetti con UML
-- UML Class Diagram
-- Use Case diagram
-- Activity Diagram
-- Sequence Diagram
- Fasi della progettazione
- Design pattern
-- Introduzione
-- Singleton
-- Observer
-- Template
-- Iterator
-- Factory
-- Abstract factory
-- Proxy
-- Facade
-- Decorator

* Verifica e Validazione
- Introduzione
- Ispezione e test
- Vari tipi di test
- Progettazione basata su test

* Evoluzione e mantenimento del software
- Gestione del cambiamento del SW
- Sistemi Legacy
- Manutenzione del SW

------------------------ MM: Laboratorio ------------------------
- Introduzione alla libreria Swing per lo sviluppo di interfacce grafiche in Java.
- Introduzione alle librerie TkInter, wxPython, pyGTK/PyGobject, e PyQt/PySide per lo sviluppo di interfacce grafiche in Python.
- Introduzione ai tool Eclipse-Papyrus e StarUML per lo sviluppo di progetti UML. Modalità di erogazione della didattica
- Lezioni frontali ed esercitazioni in laboratorio informatico.

Materiale didattico (lucidi) ed ulteriori esercizi sulla piattaforma eLearning. Ricevimento individuale negli orari concordati con il docente.
------------------------
MM: PROGRAMMAZIONE II
------------------------
Java e bytecode Strutturazione delle classi Array Ereditarietà Metodi e late binding Libreria standard e sue classi di base Eccezioni Input/output Interfacce Classi collezione

Modalità d'esame

------------------------
MM: INGEGNERIA DEL SOFTWARE
------------------------
------------------------ MM: Teoria ed esercitazioni ------------------------
La verifica del profitto, sia per gli studenti frequentanti sia per i non frequentanti, avviene mediante un piccolo progetto, inerente l'attività di laboratorio, e un esame orale sugli argomenti del programma. Oltre alla capacità di presentare correttamente tutti gli aspetti di un progetto software, l'esame farà emergere sia aspetti di conoscenza astratta sia capacità di applicazione dei concetti appresi.

------------------------ MM: Laboratorio ------------------------
La verifica del profitto avviene mediante un piccolo progetto, inerente l'attività di laboratorio, che verrà poi discusso durante l'esame orale.
------------------------
MM: PROGRAMMAZIONE II
------------------------
Esame scritto di sviluppo di codice in Java. Lo studente dovrà completare l'implementazione di alcune classi Java. La valutazione, in trentesimi, sarà basata sulla correttezza generale del codice, sia dal punto di vista sintattico che semantico.

Statistiche per i requisiti di trasparenza (Attuazione Art. 2 del D.M. 31/10/2007, n. 544)

I dati relativi all'AA 2017/2018 non sono ancora disponibili