Diploma Universitario in Ingegneria Informatica Corso di Ingegneria del Software Docente: ing. Anna Rita Fasolino Dipartimento di Informatica e Sistemistica Università degli Studi di Napoli Federico II e-mail: fasolino@unina.it tel. 081 768 3852 1 Presentazione del corso Obiettivi del corso Far conoscere principi, metodi e tecniche dell'ingegneria del software e sviluppare competenze applicabili allo sviluppo ed evoluzione di grandi sistemi software, aventi caratteristiche di qualità ed economicità. Il corso utilizza lo studio di un caso che illustra i problemi e gli esiti delle differenti attivita' su un sistema software realizzato sia in versione C (mediante approccio orientato alle funzioni) che in versione C++ (mediante approccio orientato agli oggetti). Modalità dell esame Discussione di un progetto sviluppato dagli studenti, organizzati in gruppi di tre persone Accertamento della conoscenza dei contenuti trattati nel corso 2 1
Materiale didattico Libro di testo: Pankaj Jalote, An Integrated Approach to Software Engineering, 2nd edition, 1997, Springer Altri libri consigliati: Roger S. Pressman, Principi di Ingegneria del Software, seconda edizione, Mc Graw Hill C. Ghezzi, et al. Ingegneria del Software, Mondadori Informatica UML -standard: http://www.rational.com Copia dei lucidi e materiale integrativo fornito dal docente 3 Sommario Argomenti della lezione: Software: definizione e caratteristiche essenziali; Ingegneria del software: definizione, fattori caratterizzanti, obiettivo e strategia; sviluppo per fasi: caratteristiche e fasi fondamentali. Modelli di processo software: modello a cascata, modello prototipale, modelli evolutivi ed incrementali. 4 2
Software Software: non solo programmi, ma l insieme degli artifatti che lo compongono, prodotti durante il suo sviluppo un programma verrà usato dal suo autore, che lo ha sviluppato senza preoccuparsi di altri utenti, di portabilità, affidabilità, un sistema software, essendo rivolto ad altri utenti, dovrà essere usabile, portabile, affidabile, etc... la definizione IEEE (Institute of Electrical and Electronics Engineers) insieme di programmi, procedure, regole, e ogni altra documentazione relativa al funzionamento di un sistema di elaborazione dati 5 I problemi del Software costosità, legata alla bassa produttività inaffidabilità: il software non si comporta come ci si aspetta la necessità di una continua evoluzione: una volta rilasciato, il software entra in fase di manutenzione manutenzione correttiva: per correggere difetti riscontrati durante l utilizzo manutenzione adattativa: per adeguare il software alle modifiche dell ambiente operativo manutenzione perfettiva: per aggiungere nuove funzionalità la realtà del rework (modifiche durante lo sviluppo): conseguenza di requisiti poco chiari e mal compresi conseguenza dei lunghi tempi necessari per il rilascio 6 3
Il Problema dell Ingegneria del Software (I.S.) La necessità di approcci sistematici allo sviluppo del software Processi: regole per definire la sequenza delle fasi ed attività per lo sviluppo del sw; i documenti da produrre e rilasciare; i controlli per assicurare la qualità e stimare gli avanzamenti; le risorse da impiegare nello sviluppo Modelli del Processo di Sviluppo del Software Metodi: per definire tecniche da impiegare nello sviluppo del software Metodi per la definizione dei requisiti, per la progettazione, la codifica,. Strumenti: per fornire l adeguato supporto all applicazione di processi e metodi CASE, ambienti di programmazione,. 7 Una definizione di Ingegneria del Software La definizione della IEEE: (1) applicazione di un approccio sistematico, disciplinato, quantificabile allo sviluppo, esercizio e manutenzione del software; cioè, l applicazione dell ingegneria al software. (2) studio degli approcci di cui al punto (1) I fattori che governano l Ingegneria del software: costi delle risorse impiegate per lo sviluppo (umane, hardware, software) tempi di consegna (mercato sempre più esigente) qualità del prodotto finale (svariati aspetti) 8 4
Un modello di qualità del software (modello di McCall) Tre dimensioni e relativi fattori: Product Operation Correttezza, Affidabilità, Efficienza, Usabilità,... Product Transition: Portabilità, Riusabilità, Interoperabilità Product Revision: Manutenibilità, Flessibilità, Testabilità Necessità di metriche (misure quantificabili per valutare le varie caratteristiche del software) Revision Transition Operation 9 L approccio dell Ingegneria del Software Obiettivo dell Ingegneria del software: definire metodi e procedure per lo sviluppo del software, utili ad ottenere sistemi di grandi dimensioni, di alta qualità, a basso costo, ed in breve tempo Per conseguire tali obiettivi occorre puntare sulla qualità del processo di sviluppo del software il software come altre industrie manifatturiere Un processo di sviluppo per fasi: ogni fase è responsabile dei suoi output presenza di punti di verifica della qualità alla fine di ogni fase Vari modelli di processo software 10 5
Le attività fondamentali di un processo di sviluppo software Analisi dei Requisiti identificare cosa si richiede al sistema, al fine di definirne puntualmente i requisiti in un idoneo documento (Specifica dei Requisiti Software -SRS) include 2 attività: analisi del problema e specifica dei requisiti Progettazione (o Design) individuare una soluzione al problema specificato nell SRS e produzione dei documenti di progetto include due attività: top-level design: definizione dell architettura del sistema low-level design: definizione della logica interna dei componenti 11 Le attività fondamentali di un processo di sviluppo software Codifica implementare il progetto usando un linguaggio di codifica, in maniera semplice e comprensibile uso di programmazione strutturata e stili di codifica Testing verifica della qualità del software, individuando gli errori sfuggiti alle fasi precedenti, basandosi su prove di esecuzione del software (casi di test) vari livelli di testing: testing di unità, di integrazione, di sistema, di accettazione richiede la definizione di un documento di specifica del testing e di un rapporto di test 12 6
Il Project Management Un processo di sviluppo a fasi non definisce: Allocazione delle risorse per le varie attività Lo scheduling delle attività ed i tempi da rispettare Come verificare se lo svolgimento delle singole fasi sia corretto... Necessità del project management project planning (def. attività, risorse da allocare, tempi) project monitoring e controllo metriche di prodotto e di processo per misurare e controllare... 13 7