Syllabus dettagliato del corso di

Ingegneria del Software 1

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 all’analisi 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 dell’Ingegneria 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 l’acquisizione 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 all’interfaccia 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 d’esecuzione. 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 d’eredità, 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 dell’interfaccia 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 dell’astrazione. Classi riusabili, astrazione, standardizzazione e altri criteri di progettazione delle classi. Gerarchia di Aggregazione. Diagramma dei servizi.

Progettazione dell’interfaccia 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 dell’Interfaccia 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 dell’utente. Interfacce utente adattive e adattabili. Metafore di interazione. Errori nel Dialogo.

Progettazione dell’interfaccia 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 dell’informazione: 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 all’Affidabilità 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 l’hardware. 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 dell’ISO 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 l’applicazione 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.