Ingegneria del software (2019/2020)



Codice insegnamento
4S00032
Crediti
6
Coordinatore
Carlo Combi
Settore disciplinare
INF/01 - INFORMATICA
Lingua di erogazione
Italiano
L'insegnamento è organizzato come segue:
Attività Crediti Periodo Docenti Orario
Teoria ed esercitazioni 5 II semestre Carlo Combi, Barbara Oliboni

Vai all'orario delle lezioni

Laboratorio 1 II semestre Carlo Combi

Vai all'orario delle lezioni

Obiettivi formativi

------------------------
MM: Teoria
------------------------
Il corso si propone di fornire le competenze scientifiche 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. Con le attività di laboratorio sono inoltre fornite le competenze necessarie per lo sviluppo di interfacce grafiche in Java e Python. Al termine del corso lo studente dovrà dimostrare di avere conoscenze e capacità di comprensione del processo di sviluppo di sistemi software e delle inerenti metodologie e tecniche di progettazione; avere capacità di applicare le conoscenze acquisite e capacità di comprensione per realizzare e documentare sistemi software e di sviluppare applicazioni con interfaccia grafica in ambiente Java/Pyhon; saper comunicare in modo proficuo con tutti gli attori coinvolti nella realizzazione e uso di un sistema software all'intero di organizzazioni complesse; saper sviluppare le competenze necessarie per proseguire gli studi in modo autonomo nell’ambito delle tecniche di progettazione e di sviluppo SW e per approfondire autonomamente lo studio di strumenti e tecniche informatiche per lo sviluppo del software in diversi contesti applicativi.
------------------------
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.

Programma

------------------------
MM: Teoria
------------------------
------------------------ 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: Laboratorio
------------------------
- Introduzione alla libreria Swing per lo sviluppo di interfacce grafiche in Java. - Introduzione alle librerie TkInter 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.

Modalità d'esame

------------------------
MM: Teoria
------------------------
------------------------ 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: Laboratorio
------------------------
La verifica del profitto avviene mediante un piccolo progetto, inerente l'attività di laboratorio, che verrà poi discusso durante l'esame orale.