programma pubblicato

Transcript

programma pubblicato
Ingegneria del software
-
Programma del corso aggiornato al dicembre 2012
AA 2011-12 – Prof. Michele Marchesi
5 crediti, 50 ore di lezione
3 anno, I semestre
Obiettivi
L'ingegneria del software ha l'obiettivo di studiare e sviluppare strumenti e metodologie per la pianificazione
dello sviluppo, realizzazione e valutazione di applicazioni software complesse.
Il corso ha due obiettivi formativi:
•
Approfondire anche praticamente alcune tecniche specifiche, in particolare legate allo sviluppo di
software ad oggetti.
•
Fornire una panoramica generale di tali strumenti e metodologie;
Programma
●
●
●
●
●
●
●
●
●
●
La disciplina dell'Ingegneria del Software: prospettiva storica, impatto economico, temi principali,
sfide attuali.
Caratteristiche del software come prodotto ingegneristico: corretto, affidabile, efficiente, usabile,
robusto, interoperabile, manutenibile, evolvibile, verificabile, riusabile, portabile. Le tipologie dei sistemi software.
Le fasi del ciclo di vita del software: raccolta dei requisiti, analisi, progetto, codifica, testing, rilascio,
manutenzione. I principali modelli del processo di sviluppo: "waterfall", incrementale-iterativo, a spirale, RUP, agile. La certificazione di qualità nel software.
La raccolta dei requisiti; tipologie dei requisiti; proprietà dei “buoni” requisiti. Requisiti espressi come
casi d'uso. Proprietà dei casi d'uso. Diagrammi UML dei casi d'uso. User stories e raccolta dei requisiti
secondo l'XP. Analisi dei requisiti e problematiche relative.
Il testing: tipi di test: black e white box, unitari, funzionali, di accettazione, di integrazione, stress test.
Testing automatico.
Il linguaggio di modellazione standard UML. Regole e costrutti fondamentali. Modello statico e dinamico e diagrammi relativi. Cenni ai diagrammi dei pacchetti, dei componenti, di deployment, di attività, di temporizzazione, di “interaction overview”. UML e cliclo di vita del software. Diagramma
UML di stato e suo uso.
Analisi e progettazione a oggetti. I principi dell'OOA: astrazione procedurale e dei dati, incapsulamento, ereditarietà. Metodo CRC (Class, Responsibility, Collaboration). Identificare le classi, tipologie
delle classi, verifica delle classi. Definizione e assegnazione delle responsabilità e collaborazioni. Diagramma delle classi UML e suo uso nel contesto dell'analisi e progettazione OO. Identificazione, assegnazione e verifica di attributi e operazioni. Descrizione degli scenari di funzionamento del sistema
con i diagrammi sequenziali e di collaborazione. Le relazioni tra le classi: ereditarietà, associazione,
aggregazione, composizione, dipendenza. Cardinalità e navigabilità.
Principi e pratiche di buona progettazione del software: astrazione, raffinamento successivo, occultamento dell'informazione, accoppiamento, coesione, semplicità, refactoring, Test Driven Development.
Metodologie Agili e Lean. L'Agile Manifesto. La programmazione estrema: motivazioni, valori e
pratiche. Scrum. I principi del Lean Software Development e l'approccio Kanban.
Ingegneria del software per Internet: il WWW: ipertesti, architettura, il Client, il Server, il protocollo
HTTP; programmazione WWW: tipi di pagine (statiche, dinamiche, attive), CGI; i Servizi Internet ed
il loro funzionamento: DNS ed e-mail.
Testi di riferimento
Metodi di valutazione
Lucidi del corso, reperibili su Internet nel sito: agile.diee.unica.it/corsi.
M. Fowler, UML Distilled-Terza Edizione, Pearson Education Italia, 2004.
Prova scritta con domande di teoria ed esercizi di analisi OO.
Eccezionalmente, compilazione di una tesina.