Studiare
In questa sezione è possibile reperire le informazioni riguardanti l'organizzazione pratica del corso, lo svolgimento delle attività didattiche, le opportunità formative e i contatti utili durante tutto il percorso di studi, fino al conseguimento del titolo finale.
Programmazione II e ingegneria del software (2019/2020)
L'insegnamento è organizzato come segue:
INGEGNERIA DEL SOFTWARE
Crediti
6
Periodo
Vedi pagina del modulo
Docenti
Vedi pagina del modulo
PROGRAMMAZIONE II
Crediti
6
Periodo
Vedi pagina del modulo
Docenti
Vedi pagina del modulo
Obiettivi formativi
Programmazione II
Il corso si propone di fornire le competenze necessarie alla comprensione, allo sviluppo e alla correzione di software realizzato in un linguaggio di programmazione a oggetti. Fornire le competenze relative alla strutturazione di progetti software di medie dimensioni.
Al termine del corso lo studente dovrà dimostrare di avere conoscenze e capacità di comprensione dei principi alla base della programmazione a oggetti e capacità di comprensione della struttura di un progetto software complesso; avere capacità di applicare le conoscenze acquisite e capacità di comprensione sviluppando in modo autonomo software in un linguaggio di programmazione a oggetti, 6 strutturato in un progetto di medie dimensioni; saper sviluppare le competenze necessarie per approfondire autonomamente lo studio di strumenti e tecniche informatiche per lo sviluppo del software in diversi contesti applicativi.
Ingegneria del software
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.
Programma
------------------------
MM: INGEGNERIA DEL SOFTWARE
------------------------
------------------------ 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.
------------------------
MM: PROGRAMMAZIONE II
------------------------
------------------------ MM: Teoria ------------------------ 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. ------------------------ MM: Laboratorio ------------------------ 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.
Bibliografia
Autore | Titolo | Casa editrice | Anno | ISBN | Note |
---|---|---|---|---|---|
Docente del corso | Copia gratuita delle slides proiettate durante le lezioni. | ||||
Ian Sommerville | Ingegneria del software - 10/Ed. (Edizione 10) | Pearson | 2017 | 9788891902245 | |
Martin Fowler | UML Distilled (Edizione 4) | Pearson - Addison Wesley | 2010 | 9788871925981 |
Modalità d'esame
------------------------
MM: INGEGNERIA DEL SOFTWARE
------------------------
------------------------ 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.
------------------------
MM: PROGRAMMAZIONE II
------------------------
------------------------ MM: Teoria ------------------------ Esame al computer sull'intero programma. ------------------------ MM: Laboratorio ------------------------ Si veda la parte di teoria del corso.