Introduzione al corso - Facolta di Ingegneria

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