Presentazione del corso - Università degli Studi di Napoli Federico II
Transcript
Presentazione del corso - Università degli Studi di Napoli Federico II
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: [email protected] tel. 081 768 3852 Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 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 Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 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 Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 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. Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 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 Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 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 Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 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, …. Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 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) Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 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 Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 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 Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del 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 Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 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 Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 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... Anna Rita Fasolino- Ingegneria del Software Cenni Introduttivi e Cicli di vita del software 13 7