Principi di Progettazione del Software a.a. 2016-2017 Introduzione al corso Prof. Luca Mainetti Università del Salento Il GSA Lab (www.gsalab.unisalento.it) ■ Laboratorio di ricerca in ingegneria del software e sistemi interattivi ■ La “mission”: coniugare ricerca e formazione per ottenere innovazione ■ I temi di ricerca – Tecnologie mobili (App) – Tecnologie web – Tecnologie social – Servizi in Cloud – Sistemi di sensori (RFID, NFC) – Sistemi multi-dispositivo ■ Collaborazioni accademia/industria Introduzione al corso 2 Luca Mainetti Contattare il docente ■ Prof. Luca Mainetti ■ Orario di ricevimento: mercoledì 15:00-19:00 ■ (consultare la bacheca elettronica sul sito www.unisalento.it/people/luca.mainetti per eventuali variazioni di orario) ■ [email protected] Introduzione al corso 3 Luca Mainetti Obiettivi del corso ■ Il corso intende fornire agli studenti una visione globale sulla disciplina sull’ingegneria del software per una piena comprensione dei processi che guidano la progettazione, lo sviluppo e il testing di un sistema software complesso. ■ L'approccio didattico è teorico-pratico: ogni concetto esposto è oggetto di applicazione pratica ■ Si illustreranno moderne tecniche e strumenti di progettazione, implementazione e verifica dell'ingegneria del software ■ Si analizzeranno i differenti processi di sviluppo del software ■ Requisiti – Fondamenti di Informatica Introduzione al corso 4 Luca Mainetti Argomenti trattati: lezione ■ I processi di sviluppo del software – Processo a cascata, processi iterativi, processi agili ■ Progettazione dell'architettura software – UML: requisiti, casi d'uso – UML: introduzione operativa ai diagrammi delle classi, sequenza, stato – UML: diagrammi delle classi, diagrammi di sequenza, attività, stato, fisici ■ Progettazione delle classi – Le linee guida: incapsulamento, coesione, coerenza, pre-condizioni, asserzioni, eccezioni, post-condizioni, invarianti, test di unità ■ Fondamenti di basi di dati – Il modello Entità-Relazioni. – Dal modello Entità-Relazioni al modello Relazionale Introduzione al corso 5 Luca Mainetti Argomenti trattati: esercitazione ■ Un corso veloce di Java – Oggetti, classi, tipi di dati fondamentali – Strutture di controllo, riferimenti a oggetti, passaggio parametri – Interfacce, polimorfismo, ereditarietà, eccezioni ■ Creare un'applicazione Java – Predisporre l'ambiente di sviluppo. Progettare le classi – Implementare le classi – Accedere a dati esterni. Verificare le classi Introduzione al corso 6 Luca Mainetti Materiale didattico consigliato ■ Testi consigliati – C. S. Horstmann, Concetti di informatica e fondamenti di Java 5a ed., Apogeo, ISBN 9788850329564, 2010 – M. Fowler, UML Distilled, Pearson Addison-Wesley, 2004 ■ Saranno distribuite copie delle diapositive preparate dal docente – www.unisalento.it/people/luca.mainetti Introduzione al corso 7 Luca Mainetti Calendario del corso: parte 1 Argomento Presentazione del corso, progetti e modalità d'esame. Processi di sviluppo del software: processo a cascata, processi iterativi, processi agili, DevOps. Lezione sospesa per meeting progetto H2020. Lezione sospesa per meeting progetto H2020. Un corso veloce di Java (1): oggetti, classi, tipi di dati fondamentali. Un corso veloce di Java (2): strutture di controllo, riferimenti a oggetti, passaggio parametri. Un corso veloce di Java (3): interfacce, polimorfismo, ereditarietà, eccezioni. Creare un'applicazione Java (1): predisporre l'ambiente di sviluppo. Progettare le classi. La progettazione orientata agli oggetti. Data 27-set-16 28-set-16 Ora Aula Ore lezione 11:30-13:30 M-4 1 08:30-11:30 M-3 3 04-ott-16 05-ott-16 11-ott-16 11:30-13:30 M-4 2 12-ott-16 08:30-11:30 M-3 3 18-ott-16 11:30-13:30 M-4 2 19-ott-16 08:30-11:30 M-3 3 25-ott-16 11:30-13:30 M-2 2 UML (1): requisiti, casi d'uso. 26-ott-16 08:30-11:30 M-2 3 Lezione sospesa. 02-nov-16 Introduzione al corso 8 Luca Mainetti Calendario del corso: parte 2 Argomento UML (2): introduzione operativa ai diagrammi delle classi, sequenza, stato. UML (3): diagrammi delle classi, diagrammi di sequenza, attività, stato, fisici. Fondamenti di basi di dati: il modello Entità-Relazioni. Fondamenti di basi di dati: dal modello Entità-Relazioni al modello Relazionale. MySQL e SQL (1). MySQL e SQL (2). Presentazione traccia elaborato software. Creare un'applicazione Java (2): implementare le classi. Creare un'applicazione Java (3): accedere a dati esterni. Creare un'applicazione Java (4): realizzare l'interfaccia utente. Creare un'applicazione Java (5): realizzare l'interfaccia utente. Creare un'applicazione Java (6): verificare le classi. Assistenza ai progetti (1). Assistenza ai progetti (2). Introduzione al corso 9 Data 08-nov-16 Ora Aula Ore lezione 11:30-13:30 M-2 2 09-nov-16 08:30-11:30 M-2 3 15-nov-16 16-nov-16 11:30-13:30 08:30-11:30 M-2 M-2 2 3 22-nov-16 23-nov-16 29-nov-16 30-nov-16 06-dic-16 07-dic-16 11:30-13:30 08:30-11:30 11:30-13:30 08:30-11:30 11:30-13:30 08:30-11:30 M-2 M-2 M-2 M-2 M-2 M-2 2 3 2 3 2 3 13-dic-16 11:30-13:30 M-2 2 14-dic-16 20-dic-16 21-dic-16 08:30-11:30 11:30-13:30 08:30-11:30 M-2 M-2 M-2 3 2 3 Luca Mainetti Prove di verifica e metodo di valutazione ■ La prova di verifica consiste di due parti – Scritto che concorrerà al punteggio finale per un massimo di 10 su 30 – Elaborato software che concorrerà al punteggio finale per un massimo di 20 su 30 ■ Il progetto software potrà essere svolto in coppia o singolarmente ■ La traccia del progetto software sarà assegnata dal docente e resterà valida per l’intero anno accademico ■ Due giorni solari prima dell’appello d’esame orale devono essere inviati al docente per email la documentazione di progetto in formato PDF e il software realizzato, in un unico file compresso in formato ZIP. I software consegnati saranno sottoposti a test di similarità, utilizzando strumenti automatici (tipo DIFF o più evoluti). ■ La discussione del progetto avviene con una presentazione del codice in esecuzione e del codice sorgente dell’elaborato software. Durante la presentazione sarà richiesto di modificare il codice ai componenti del gruppo Introduzione al corso 10 Luca Mainetti Impegno complessivo studente CFU Impegno complessivo studente 6 150 Ore Totali calcolate Impegno complessivo studente calcolato 103 152 CFU 6,08 Ore di teoria Impegno studente 16 56 CFU 2,24 Ore di esercitazione Impegno studente 12 21 CFU 0,84 Ore di laboratorio Impegno studente 0 0 CFU 0 Ore di progetto Impegno studente 75 75 CFU 3 Introduzione al corso 11 Luca Mainetti