Ingegneria del SoftwareAnno Accademico 2015-16Corso di Laurea in InformaticaScuola delle Scienze di Base e Applicate Codice insegnamento: 03968; CFU: 6 |
AVVISI |
|
DOCENTE |
Massimo Cossentino (web page) |
DESCRIZIONE DEL CORSO |
Obiettivo del corso: Obiettivo del corso è lo studio del processo di sviluppo del software (con particolare riferimento allo sviluppo di software object-oriented). Verranno esaminate le tecniche di raccolta dei requisiti, stesura delle specifiche, pianificazione, progettazione, implementazione, integrazione e manutenzione. Più in dettaglio gli obiettivi principali sono:
Dal libro di testo, i paragrafi segnalati di seguito, e dalle slide complementate dagli appunti presi a lezione. Una buona definizione di Ingegneria del software è stata fornita da D.L. Parnas: Software engineering is the "multi-person construction of multi-version software" D.L. Parnas. Some Software Engineering Principles. In Structured Analysis and Design, State of the Art Report. Infotech International. (1978). |
PREREQUISITI |
Sono richieste conoscenze di programmazione ad oggetti (linguaggi C++ o, meglio, Java). |
LEZIONI ED ESERCITAZIONI |
Il corso si terrà al secondo semestre. Orario delle lezioni: martedì ore 14:30-17:00 e mercoledì, ore 11-13:30, laboratorio Aula D1 (ex consorzio). Interruzione lezioni: Vacanze pasquali: 24/03/16-29/03/16; Sospensione: 18/04/16-23/04/16 |
ESAMI |
Gli esami si baseranno sulla discussione del progetto di un
software ad oggetti. Ulteriori specifiche verranno fornite in seguito. Chiarimenti sulle regole d'esame:
Documenti utili:
|
DATE ESAMI |
|
MATERIALE DIDATTICO |
Libro di testo: B. Bruegge, A. H. Dutoit. Object-Oriented Software Engineering: Using UML, Patterns and Java. Third edition. International edition. ISBN: 0-13-606125-7. Prentice Hall Introduzione a Java: Bruce Eckel. Thinking in Java 3rd edition. Scaricabile gratuitamente Oracle. Learning the Java Language. M. Tarquini, A. Ligi. http://javamattone.4it.it/javamattone.pdf. Scaricabile gratuitamente. Libri di consultazione: I. Sommerville. Software Engineering. Prentice Hall UML e Unified Process. Analisi e Progettazione Object Oriented. J. Arlow e I. Neustadt. McGraw-Hill J. Rumbaugh,I. Jacobson, G. Booch. The Unified Modeling Languge Reference Manual. Addison Wesley ESERCITAZIONI Le seguenti esercitazioni sono fornite come spunto per la applicazione di quanto studiato durante il corso. Gli studenti possono svolgerle volontariamente, si suggerisce di farlo in gruppo. La correzione avverrà durante l'orario di ricevimento o su appuntamento in altre date. Bancomat Aeromodello |
ORGANIZZAZIONE DEL CORSO | |||||
Settim. | Giorno | Capitolo | Paragr. | Argomento | Presentazione |
---|---|---|---|---|---|
1 | 01/03 | Cap. 1 | par. 1.1-1.4, 1.6 | Sinossi del corso. Introduzione all'Ingegneria del Software Concetti di: progetto, attività, risorsa, task, workproduct, sistema, modello, documento, obiettivi (goal), requisiti, vincoli, notazioni, metodi e metodologie. |
0-Introduzione al corso L1_Introduction_ch01lect1 |
02/03 |
Cap.2 |
par. 2.1-2.4 |
Le fasi principali dello
sviluppo: raccolta requisiti, analisi dei requisiti, progetto di
sistema, progetto esecutivo o degli oggetti, implementazione, gestione
del progetto, testing, ciclo di vita del software. |
L1_Introduction_ch01lect1 | |
Linguaggi di Modellazione del Software Introduzione all’UML. Organizzazione dei diagrammi, estensione dei diagrammi, concetti di sistema, modello e vista. Modellazione object-oriented. |
L2_ModelingwithUML_ch02lect1 | ||||
"Linguaggi di Modellazione del Software diagrammi principali: 1. diagrammi dei casi d’uso, " |
L3_ModelingWithUML_ch02lect2 |
||||
2 | 08/03 | UML (parte 2). Diagrammi dei casi d'uso UML parte 3: Diagrammi delle classi |
L3_ModelingWithUML_ch02lect2 |
||
09/03 | Linguaggi di Modellazione del Software diagrammi principali (continuazione): 3. diagrammi di sequenza, strutturazione dei diagrammi di sequenza, ordine oggetti, 4.diagrammi di stato |
L3_ModelingWithUML_ch02lect2 | |||
3 |
15/03 |
|
5. diagrammi di attività, 6. diagrammi dei componenti e di dislocazione. |
L3_ModelingWithUML_ch02lect2 L5_ModelingwithUML_ch02lect4 |
|
Cap.4 | par. 4.1-4.6 | La raccolta dei requisiti Il ciclo di vita del software. Introduzione alla raccolta dei requisiti. Definizione di scenario |
|
||
16/03 |
Raccolta dei requisiti: Definizione di scenario e design basato su
scenari. Identificazione degli scenari. Requisiti funzionali e non
funzionali. Modello FURPS+. Validazione dei requisiti. Template di
documento di analisi dei requisiti |
||||
Documentazione dei casi d'uso. Identificare i casi d'uso. Esempi. Attributi dei casi d'uso. Documentazione di tipo request-response. Linee guida per la documentazione dei casi d'uso | L11_Functional_Modeling_ch04lect3 | ||||
4 |
22/03 |
Cap. 5 |
par. 5.1-5.6 |
L'analisi dei requisiti Introduzione. Modelli di analisi: funzionale, degli oggetti, dinamico. Concetti di analisi: oggetti di tipo entità, di confine e di controllo. Associazioni multiple (uno a uno, uno a molti, molti a molti). La relazione di generalizzazione. Dai casi d'uso agli oggetti. La tecnica di Abbott |
L12_ObjectModeling_ch05lect2 |
23/03 |
|
Attività di analisi: • dai casi d’uso agli oggetti, • identificazione degli oggetti entità, • identificazione degli oggetti di confine, • identificazione degli oggetti di controllo, • modellazione delle interazioni, • identificazione delle associazioni e degli attributi. |
L13_DynamicModeling_ch05lect3 | ||
5 |
05/04 |
Cap. 5 | par. 5.1-5.6 | Stati degli oggetti, diagrammi di stato e navigation path. Validazione dei requisiti. Template di documentazione dell’analisi dei requisiti. Diagramma di interconnessione delle attività di analisi. Esempio di analisi dei requisiti (Toy car) |
L13_DynamicModeling_ch05lect3 |
06/04 |
Cap. 6 |
par. tutti |
Progettazione di sistema La progettazione di sistema e le sue otto attività. Definizione dei goal di progetto, decomposizione in sottosistemi. Definizione dell'interfaccia dei sottosistemi e API. Relazioni tra sottosistemi (accoppiamento e coerenza). Architetture di sistema: layer e partizioni, virtual machine (aperta e chiusa), SOA, client/server, peer-to-peer, three-tier, four-tier. |
L14_SystemDes_ch06lect1-short | |
6 |
12/04 |
- | - |
Lezione sospesa per disposizione del Presidente del corso di studi
per permettere la partecipazione degli studenti all'open day e per la
non disponibilità dell'aula D1 |
|
13/04 | Cap. 6 |
par. tutti |
Architetture di sistema (continuazione): repository, model-view-controller, pipe and filter. |
||
Cap. 8 |
par. 1-3 (escluso sottopar. 3.5) |
Identificazione della concorrenza. Mappatura hardware/software. Diagrammi UML di deployment e dei componenti. |
L15_Addressing Design Goals_ch07lect1 | ||
7 |
26/04 |
Gestione dei dati persistenti. gestione delle risorse globali:
controllo degli accessi, matrice di accesso, lista di controllo degli
accessi. Controllo del software: implicito e esplicito (centralizzato o
decentralizzato). Condizioni limite di funzionamento: inizializzazione,
terminazione, guasto. |
|||
Template di documentazione della progettazione di sistema |
SDD_template | ||||
Esercitazione Bancomat |
Esercitazione Bancomat |
||||
Cap. 9 |
par. 1-6 |
Progetto degli oggetti. Le attività: identificare i componenti, aggiustarli, identificare pattern, aggiustarli, identificare attributi e operazioni mancanti, specificare la visibilità, specificare tipi e firme (signature), specificare i vincoli e le eccezioni. |
|||
27/04 |
Identificare attributi e operazioni mancanti, specificare la
visibilità, specificare tipi e firme (signature), specificare i vincoli
e le eccezioni. Rivisitare le gerarchie di ereditarietà, collassare le
classi, realizzare le associazioni, ottimizzare i percorsi di
accesso, caching/ritardo dei calcoli complessi. Component-based
software engineering, approccio COTS (Commercial-off-the-shelf),
definizione di design pattern. Riuso del codice: white box
(ereditarietà) e black box (composizione). Uso dell'ereditarietà:
descrizione di tassonomie e specifica delle interfacce. Ereditarietà di
implementazione e specifica. Delegazione al posto dell'ereditarietà di
implementazione. Operazioni e classi astratte. Ereditarietà di
implementazione: Metodi riscrivibili e ereditarietà stretta,
contrazione. |
||||
8 |
03/05 |
Cap. 9 |
par. 1-6 (continuazione) |
Specializzazioni dell'attore Developer: Class user, implementor,
extender. Specificare le interfacce, implementzione in Java della
visibilità UML, informatin hiding, specificare la signature. Il
contratto object-oriented, invarianti, precondizioni, postcondizioni,
rappresentare i contratti nei modelli UML. |
L19_SpecifyingInterfaces_ch09lect1 |
Progetto a.a. 2015-16 |
Presentazione progetto a.a. 2015/2016, vedasi sezione ESAMI sopra | ||||
9 |
10/05 |
Cap. 10 | par. 1-6 | Linguaggio OCL. Semplici predicati OCL: context, inv, pre, post. Javadoc, commenti in javadoc, contratti come insieme di commenti Javadoc. | L20_OCL_ch09lect2-short |
Esercitazione Aeromodello |
Aeromodello | ||||
Problemi nella implementazione di un modello ad oggetti, trasformazione
del modello, forward engineering, collassamento degli oggetti,
mappatura della ereditarieta (realizzazione in java di specializzazione
e generalizzazione, ereditarietà semplice, ereditarietà implementativa,
ereditarietà di specifica delle interfacce), mappatura associazioni
(uno ad uno unidirezionale e bidirezionale, uno a molti bidirezionale,
molti a molti bidirezionale). |
L21_MappingModelsToCode_ch10lect1-short | ||||
11/05 | mappatura contratti su eccezioni (meccanismo try-throw-catch, esempi, linee guida) | ||||
Conversione di un modello ad oggetti in un database (criteri generali), conversione di una classe in una tabella, conversione delle relazioni uno ad uno, uno a molti, molti a molti, realizzazione dell'ereditarietà in tabelle separate (mappatura verticale), in colonne duplicate (mappatura orizzontale), confronto tra i metodi di realizzazione dell'ereditarietà in tabelle/colonne | L22_MappingModelsToTRelationalSchema_ch10lect2 | ||||
Template Object Design Document (ODD) | ODD_template | ||||
Cap. 11 |
par. 1-4 |
Testing Introduzione, terminologia (failure, error, fault, validation), tassonomia per la gestione dei guasti. Modello del test (test driver, input data, oracle, test harness). |
L23_UnitTesting_ch11lect1 | ||
10 |
17/05 |
Modello del test case (test driver, input data, oracle, test
harness). Il modello del test ad oggetti. Test doubles:
dummy/fake/Stub/Mock object. Attività di testing (unit, integration,
system, acceptance testing). Black box testing. White box testing,
branch testing, euristica per lo unit testing. |
|||
18/05 |
Il test di integrazione (integration testing), stub e driver,
approccio big-bang, strategie di integrazione (bottom-up, top-down,
sandwich, modified sandwich, continuous integration), i passi del test
di integrazione. |
L24_SystemTesting_ch11lect2 | |||
11 |
24/05 |
Seminario su Design Pattern |
pdf |
||
25/05 |
Esercitazioni |
Esempi di progetto |
tesina 1, tesina 2, tesina 3, esempio di documento RAD. | ||
Project Management |
tutto il sito | Introduzione al Project Management Elementi fondamentali del project management • Caratteristiche fondamentali del progetto • Attività (ordinarie, di riepilogo, cardine) • Struttura delle attività • Relazioni tra attività • Le risorse (il calendario, i costi) • I costi fissi del progetto |
|||
12 |
31/05 |
I diagrammi fondamentali del project management • Diagramma di Gantt • Diagramma di Pert • Report fondamentali di tempi, costi e risorse |
|||
Template di documento di software project Management |
Template di Software Project Management Plan (SPMP) | ||||
01/06 |