Syllabus dettagliato del corso di
Prof. Carlo Tasso
A.A. 2000-2001
Finalità del corso
Obiettivo del corso è l'introduzione ai concetti di base dell'Ingegneria del Software, settore dell'informatica dedicato allo studio delle metodologie, delle tecniche e degli strumenti utilizzati nella produzione industriale del software.
In particolare il corso descrive vari modelli del processo di sviluppo del software presentando i problemi relativi alle varie fasi del ciclo di vita, con particolare riferimento allanalisi dei requisiti e alla specifica, al progetto, al testing, alla stme dei costi ed al controllo di qualità. Vengono anche descritti i principali standard per il software.
Parte A. Introduzione
1. Concetti e Definizioni di Base dellIngegneria del Software (6 ore)
Introduzione. Origini e motivazioni dell'Ingegneria del Software. Definizioni di base: prodotti software, caratteristiche generali dei prodotti software. Processi per lo sviluppo del software , modello dei processi: processi primari, di supporto e di gestione; ciclo di vita, metodologia di sviluppo. Modelli generali dei processi: modello a cascata; sviluppo incrementale; modello a spirale di Boehm, gestione del rishio; discussione ed esempi. Visibilità del processo di sviluppo.
Ingegneria dei sistemi. Definizioni e problemi. Ambiente di un sistema. Modello contractor/sub-contractor per lacquisizione del sistema. Fasi del processo di ingegnerizzazione dei sistemi: definizione dei requisiti, progetto, sviluppo dei sotto-sistemi, integrazione, installazione, funzionamento, evoluzione e dismissione. Obiettivi del sistema. Architettura di un sistema, componenti funzionali. Fattori umani, problematiche relative allinterfaccia affidabilità, resilienza.
[Somm] [Gui&Tasso]
2. Gestione di un Progetto Software (3 ore)
Gestione di un progetto software. Attività di gestione. Personale. Pianificazione del progetto: piano di progetto, struttura e contenuti. Concetti di milestone e derivable. Schedulazione del progetto; rappresentazioni grafiche: diagramma delle attività, dei tempi, del personale. Cammino critico.
[Somm]
Parte B. Analisi dei Requisiti e Definizione delle Specifiche
3. Requisiti di un sistema Software (6 ore)
Ingegnerizzazione dei requisiti. Definizione del concetto di requisito. Attività di definizione, analisi e specificazione dei requisiti. Processo di ingegnerizzazione dei requisiti. Documentazione dei requisiti. Validazione dei requisiti: review sui requisiti, parametri di validazione. Evoluzione dei requisiti: requisiti duraturi, volatili, mutabili emergenti, consequenziali, di compatibilità.
Analisi dei requisiti: definizione e processo desecuzione. Analisi basata sui viewpoint. Analisi basata su metodi. Metodo VORD orientato ai viewpoint: struttura generale ed esempi. Analisi del contesto. Analisi etnografica (cenni).
[Somm]
4. Tecniche di modellizzazione dei sistemi (6 ore)
Modellizzazione dei sistemi. Modelli data-flow (DFD): definizioni ed esempi. Modelli semantici; modelli entità-relazioni, modelli SDM secondo Hull & King; definizioni ed esempi. Inadeguatezza dei modelli DFD a rappresentare aspetti di controllo e di sincronizzazione. Automi a stati finiti: definizioni ed esempi. Reti di Petri posti-transizioni: definizioni, esempi, valutazioni. Modelli object oriented: modelli deredità, di aggregazione e di utilizzo dei servizi. Metodologia SADT: definizione dei diagrammi ed esempi. Data dictionary.
[Somm] [Trasp] [Ghezzi] [Mat]
5. Definizione dei requisiti e specificazione del software (3 ore)
Definizione e specificazione dei requisiti: modalità e tecnica di redazione. Uso di linguaggio naturale e di moduli in linguaggio strutturato. Linguaggi per la descrizione dei programmi (PDL). Definizione dei requisiti per interfacce software. Requisiti non funzionali, classificazione.
Specificazione del software: definizione. Criteri di accettazione. Relazioni tra specificazione e progetto. Progetto architetturale. Il ruolo delle specifiche formali.
[Somm] [Gui&Tasso]
6. Prototipizzazione del Software (3 ore)
Prototipizzazione: definizione. Motivazioni, obiettivi, approcci. Prototipizzazione: approccio evolutionary, approccio throw-away, approccio incrementale. Strumenti per la prototipizzazione: linguaggi ad altissimo livello (lisp, prolog, smalltalk), linguaggi di IV^ generazione, riuso del software. Prototipizzazione dellinterfaccia utente.
[Somm]
Parte C. Progetto del software
7. Generalità e Progetto Architetturale (5 ore)
Progetto del software. Stadi del processo di progetto. Metodi di progetto: approccio Top-down, metodi strutturati, strategie funzionali e object oriented. Documentazione del progetto. Parametri di qualità del progetto: coesione, accoppiamento, comprensibilità e adattabilità.
Progetto architetturale: definizione, sistema, sotto-sistema, modulo. Modelli per la strutturazione dei sistemi software: modello basato su data base condiviso, modello client-server, concetto di tipo di dati astratto e modello basato su Macchine Astratte. Modelli del controllo; controllo centralizzato: modello call-return e modello basato su manager di controllo; controllo basato sugli eventi: modello broadcast e modello a interrupt. Modelli di scomposizione in moduli: data-flow e object oriented. Architetture specifiche del dominio: generiche e di riferimento, esempi.
[Somm]
8. Progettazione Object-Oriented (4 ore)
Definizioni di base della tecnologia object-oriented: Oggetto, classe, eredità semplice e multipla, polimorfismo, late binding, gerarchia IS-A. Comunicazione tra oggetti: protocollo, message passing e procedure call. Specializzazione strutturale e comportamentale. Diversi tipi di specializzazione comportamentale. Interpretazione di un linguaggio orientato agli oggetti.
Progettazione object-oriented (OOD): caratteristiche e vantaggi. Analisi object-oriented e OOD: differenze. Identificazione di Oggetti e Classi basata sul linguaggio naturale. Interfacce tra oggetti (esempi in ADA e C++). Il ruolo dellastrazione. Classi riusabili, astrazione, standardizzazione e altri criteri di progettazione delle classi. Gerarchia di Aggregazione. Diagramma dei servizi.
Progettazione dellinterfaccia tra oggetti. Oggetti concorrenti (cenni).
[Somm] [Trasp] [Mat]
9. Progettazione funzionale (2 ore)
Progettazione funzionale: definizione. Progettazione data-flow. Decomposizione strutturale e diagrammi di struttura. Trasformazione dei diagrammi data-flow in diagrammi di struttura. Progetto di dettaglio (o esecutivo). Modello fetch&execute per i sistemi interattivi. Confronto delle diverse strategie di progetto.
[Somm]
10. Interazione Uomo-Macchina e Progetto e Valutazione dellInterfaccia Utente (9)
Introduzione alla Human-Computer Interaction (HCI). Dialogo uomo-computer. Livelli di dialogo: lessicale, sintattico, semantico, pragmatico. Contesto del dialogo. Controllo del dialogo. Stili di dialogo. Modelli Mentali. Conoscenza Mutua. Modello del sistema e modello dellutente. Interfacce utente adattive e adattabili. Metafore di interazione. Errori nel Dialogo.
Progettazione dellinterfaccia utente: principi di progettazione. Interfacce a manipolazione diretta. Interfacce grafiche. Modelli di interfaccia: metafore desktop e control panel. Interfacce a Menù. Interfacce a comandi. Presentazione dellinformazione: testo, grafica, modalità digitale, e analogica, uso dei colori. Sistemi di Help. Progetto dei messaggi di errore. Documentazione utente.
Modelli architetturali di interfacce utente: modello di Cox e di Seeheim.
Valutazione delle interfacce utente. Concetto di usabilità, definizione ISO, attributi di usabilità. Tecniche di valutazione: osservazione naturalistiche ed esperimenti in senso stretto. Progetto di esperimenti: soggetti, procedura sperimentale, variabili dipendenti e variabili indipendenti. Elaborazione dei dati di una sperimentazione di valutazione.
[Somm] [Trasp] [Mat]
Parte D. Affidabilità del Software
11. Introduzione allAffidabilità del Software (3 ore)
Concetto di affidabilità. Fallimenti, guasti, errori. Metriche di affidabilità
Unità di tempo: tempo di esecuzione, di calendario, cronometrico. Confronto del concetto di affidabilità per il software e per lhardware. Distribuzione probabilistica delle misure di affidabilità. Classificazione delle conseguenze dei malfunzionamenti. Possibili usi delle misure di affidabilità. Modelli di crescita dell'affidabilità.
[Somm] [Trasp] [Mat]
Parte E. Verifica e Validazione del Software
12. Verifica e Validazione (2 ore)
Processi di supporto. Il controllo di qualità dei prodotti software: la verifica e la validazione, definizioni secondo ISO 12207. Verifica e validazione statiche e dinamiche. Testing e ispezione. Validazione tecnica e sociale. Obiettivi e problematiche generali del testing. Debugging.
[Somm] [Gui&Tasso]
13. Testing del Software (4 ore)
Processo di debugging. Pianificazione e organizzazione dei test. Strategie di test. Il test incrementale. La metodologia Big Bang. Strategie di testing top down e bottom up. Thread testing, stress testing e back-to-back testing. Testing di identificazione dei difetti. Test dinamico black box (funzionale) e white box (strutturale). Il concetto di test case. Dati di test. Classi di equivalenza. Testing dei cammini, grafi di flusso, complessità ciclotomica. Test dell'interfaccia. La verifica statica. Il processo di ispezione dei programmi.
[Somm]
Parte F. Stima dei Costi del Software (4 ore)
14. Introduzione alla Stima dei Costi del Software
Stime dei costi. Le componenti del costo. Metodiche di pricing. Il concetto di produttività. Metriche di produttività, fattori che influenzano la produttività. Misurazioni e tecniche di stima: giudizio degli esperti, stima per analogia, pricing to win, top down, bottom up, algoritmica. Il modello COCOMO (base e intermedio). Le classi di progetto. Le equazioni di calcolo. Gli attributi correttivi del modello intermedio. Pianificazione, durata del progetto e necessità di personale.
[Somm]
Parte G. Qualità e Standard
15. Qualità del Software (4 ore)
Concetto di standard: standard de jure, defacto, aperto, proprietario. Il ruolo dellISO e delle organizzazioni nazionali.
Definizione di qualità del SW secondo lo standard ISO 8402. Controllo di Qualità secondo ISO 9000. Modello di qualità del software secondo ISO 9126: parametri di funzionalità, affidabilità, usabilità, efficienza, manutenibilità, portabilità. Valutazione del prodotto software secondo Standard ISO 14598. Metriche per la misura della qualità secondo ISO 9126-2. Gestione della qualità. Politica di qualità. Sistema qualità, controllo e assicurazione di qualità. Scope e pianificazione delle attività di assicurazione della qualità. Qualità di un prodotto basata sulla qualità del processo di produzione. Review di qualità. Check di qualità ed azioni correttive. Documentazione dei review di qualità. Processo di valutazione e metriche dei parametri di qualità secondo ISO 9126. Standard ISO 9000 per la gestione ed assicurazione della qualità: ISO 9001, 9002, 9003 e 9004, manuale della qualità. Standard ISO 9000-3: linee guida per lapplicazione dello standard ISO 9001 al software. Certificazione di qualità ed accreditamento. Il concetto di metriche software, metriche di controllo e metriche predittive. Metriche per la qualità del prodotto.
[Trasp] [Somm] [Mat]
16. Standard sul Ciclo di Vita (2 ore)
Standard ISO 12207 . sul ciclo di vita del software. Definizione dei vari processi software. Definizione dei ruoli degli esecutori dei processi: acquirente, fornitore, proprietario, sviluppatore, operatore, manutentore. Prospettiva contrattuale. Processi di monitoraggio e tailoring del ciclo vita. Standard per la documentazione.
[Trasp] [Mat]
BIBLIOGRAFIA
Testo di riferimento
[Somm] I. Sommerville, Software Engineering Fifth Edition. Addison Wesley, 1996.
Alcuni argomenti sono stati tratti da
[Gui&Tasso] G. Guida, C. Tasso. Design and Development of Knowledge-Based Systems: From Life Cycle to Methodology. John Wiley & Sons, Chichester, UK, 1994.
[Ghezzi] C. Ghezzi, A. Fuggetta. Ingegneria del Software: Progettazione e Verifica. Mondadori Informatica, 1994.
Materiale didattico
[Trasp] Trasparenze del corso dal testo di riferimento (ftp://ftp.comp.lancs.ac.uk/pub/SE5/slides.ppt)
Syllabus del corso, comprendente anche le trasparenze realizzate dal docente su argomenti specifici:
http://www.dimi.uniud.it/~tasso/is1italong.html
[Mat] Materiale fornito dal docente
Testi degli esami e criteri di correzione
19 - 2 - 98
Testo
Criteri di correzione
10 -6 - 98
Testo
Criteri di correzione
8 - 7 - 98
Testo
Criteri di correzione
9 - 9 - 98
Testo
Criteri di correzione
30 - 9 - 98
Testo
Criteri di correzione
10 - 2 - 99
Testo
Criteri di correzione
15 - 3 - 99
Testo
Criteri di correzione
8 - 6 - 99
Testo
Criteri di correzione
9 - 7 - 99
Testo
Criteri di correzione
30 - 9 - 99
Testo
Criteri di correzione
26 - 1- 2000
Testo
Criteri di correzione
11 - 2 - 2000
Testo
Criteri di correzione
10 - 4 - 2000
Testo
08 - 6 - 2000
Testo
Criteri di correzione
04 - 7 - 2000
Testo
Criteri di correzione
26 - 7 - 2000
Testo
Criteri di correzione
22 - 9 - 2000
Testo
18 - 12 - 2000
Testo
13 - 3 - 2001
Testo
Consultazione
R. Hull, R. King. Semantic Database Modeling: Survey, applications and research issues. Acm Computing Surveys, 19(3), 1987.
J. Musa, A. Iannino, K. Okumoto. Affidabilità del Software. McGraw Hill Italia, Milano, 1991.
T. Demarco. Structured Analysis and System Specification, Prentice-Hall, 1979.