Ingegneria del Software Introduzione e Concetti Fondamentali Porfirio Tramontana, 2009 Corso di Ingegneria del Software Slide 1
Riferimenti Ian Sommerville, Ingegneria del Software, Capitolo 1 Porfirio Tramontana, 2009 Corso di Ingegneria del Software Slide 2
Software ed Ingegneria del Software Le economie di tutte le nazioni industrializzate dipendono dal software. Sempre più sistemi sono controllati dal software. Gli investimenti per il software rappresentano una parte significativa del PIL di tutte le nazioni industrializzate. L Ingegneria del Software è un insieme di teorie, metodi e strumenti per sviluppare software di qualità in maniera professionale. Porfirio Tramontana, 2009 Corso di Ingegneria del Software Slide 3
Costi del Software I costi del Software spesso dominano i costi complessivi dei sistemi informatici. Addirittura, nel caso di PC, i costi del software sono spesso maggiori dei costi dell hardware stesso. É più costoso manutenere il software piuttosto che svilupparlo, soprattutto per sistemi di vecchia data (i cosiddetti sistemi legacy). L Ingegneria del software ha come obiettivo riuscire a sviluppare software in maniera efficace e con costi contenuti (cost-effective). Porfirio Tramontana, 2009 Corso di Ingegneria del Software Slide 4
Software Una definizione: 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 Electronic Engineers) insieme di programmi, procedure, regole, e ogni altra documentazione relativa al funzionamento di un sistema di elaborazione dati Porfirio Tramontana, 2009 Corso di Ingegneria del Software Slide 5
Che cos è l ingegneria del software? L ingegneria del software è una disciplina ingegneristica che si occupa di tutti gli aspetti relativi allo sviluppo del sofware. Gli ingegneri del software dovrebbero adottare: un approccio sistematico e organizzato per il loro lavoro usando strumenti e tecniche appropriate variabili a seconda del problema da risolvere, dei vincoli di sviluppo, e delle risorse disponibili. Porfirio Tramontana, 2009 Corso di Ingegneria del Software Slide 6
Perchè l ingegneria del software è importante? Il Software deve essere affidabile, sicuro, usabile e manutenibile. L ingegneria del software punta a produrre software con queste caratteristiche e, diversamente dalla programmazione, non si preoccupa solo della funzionalità o di particolari caratteristiche del sistema. L ingegneria del software è particolarmente importante per sistemi da cui dipendono persone e processi di business, e che vengono usati per molti anni. Porfirio Tramontana, 2009 Corso di Ingegneria del Software Slide 7
Quale è la differenza fra ingegneria del software ed informatica? L informatica si occupa delle teorie e dei metodi alla base dei sistemi software ed informatici; l ingegneria del software si occupa degli aspetti pratici relativi alla produzione del software. Anche se le teorie ed i principi informatici sono fondamentali, spesso vengono trascurati dagli ingegneri del software per questioni di praticità (diversamente da quanto accade in altre branche ingegneristiche). Porfirio Tramontana, 2009 Corso di Ingegneria del Software Slide 8
Cos è l ingegneria dei sistemi? L ingegneria dei sistemi si occupa di tutti gli aspetti dello sviluppo ed evoluzione di un sistema informatico, dalla progettazione dell hardware a quella dei processi fino all ingegneria del software stessa. Gli ingegneri dei sistemi si occupano di definire le specifiche del sistema, la sua architettura generale, e di integrarne le varie parti. L ingegneria del software è parte di questo processo e si preoccupa di sviluppare l infrastruttura software, il controllo, le applicazioni ed il database. Porfirio Tramontana, 2009 Corso di Ingegneria del Software Slide 9
Caratteristiche del Software Il Software è intangibile Difficile comprenderne la complessità, la qualità, lo sforzo necessario per lo sviluppo Il Software è facile da riprodurre I Costi maggiori sono nel processo di progettazione e sviluppo, diversamente da altri prodotti industriali L industria del software richiede un grosso impegno intellettivo É difficile da automatizzare Porfirio Tramontana, 2009 Corso di Ingegneria del Software Slide 10
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 Porfirio Tramontana, 2009 Corso di Ingegneria del Software Slide 11
Modelli del CVS a cascata (Waterfall models) Progressione sequenziale (in cascata) di fasi, senza ricicli, al fine di meglio controllare tempi e costi Ogni fase è caratterizzata da attività (tasks), prodotti di tali attività (deliverables), controlli relativi (quality control measures) La fine di ogni attività è un punto rilevante (milestone) del processo I deliverables prodotti in una fase sono input alla fase successiva I prodotti di una fase vengono congelati, ovvero non sono più modificabili se non innescando un processo formale e sistematico di modifica. Porfirio Tramontana, 2009 Corso di Ingegneria del Software Slide 12
Modello a cascata (un esempio ) Studio di fattibilita Analisi e specifica dei requisiti Progettazione Codifica Testing Messa in esercizio Manutenzione Porfirio Tramontana, 2009 Corso di Ingegneria del Software Slide 13
Fasi del modello a cascata Studio di fattibilità stabilire se lo sviluppo debba essere avviato quali le alternative possibili e le scelte più ragionevoli stima delle risorse finanziarie e umane necessarie, per ciascuna possibilie soluzione redazione di un un Documento di Fattibilità Analisi e specifica dei requisiti definizione, tramite interviste con il commitente, di funzioni, vincoli, prestazioni, interfacce e di qualsiasi altra caratteristica che il sistema dovrà soddisfare redazione di un Documento di Specifica dei Requisiti Software, che sia completo, preciso, consistente, non ambiguo, comprensibile in maniera adeguata sia al committente che allo sviluppatore predisposizione di un piano di test e della versione 0 del manuale utente N.B. Definizione di CHE COSA deve essere fatto e NON COME Porfirio Tramontana, 2009 Corso di Ingegneria del Software Slide 14
Le fasi del modello a cascata... Progettazione definizione dell architettura del sistema: componenti del sistema e relazioni tra questi (progetto di alto livello - HLD) definizione della struttura interna di ciascun componente (progetto di dettaglio - LLD) definizione della struttura dei dati e delle interfacce utente redazione di un documento di Specifica di Progetto Codifica Implementazione dei vari componenti definiti nel Progetto Testing Definizione ed esecuzione di casi di prova sia per i singoli componenti che per l intero sistema con l intento di rilevare malfunzionamenti N.B. Il Testing ha lo scopo di rilevare malfunzionamenti Porfirio Tramontana, 2009 Corso di Ingegneria del Software Slide 15
Le fasi del modello a cascata Messa in esercizio Insieme di tutte le operazioni necessarie per il rilascio, l installazione e rendere operativo il sistema realizzato presso il committente Manutenzione Processo di modifica di un sistema o di un componente software dopo il suo rilascio al fine di eliminare anomalie, migliorare le prestazioni o altri attributi di qualità, o adattarlo a mutamenti dell ambiente operativo e/o del dominio applicativo Porfirio Tramontana, 2009 Corso di Ingegneria del Software Slide 16
Vantaggi e limitazioni del modello a cascata Vantaggi la fasi da seguire sono ben definite gli output di ciascuna fase precisamente individuati Svantaggi il modello assume che i requisiti possano essere congelati alla fine della fase di specifica, ma ciò è impensabile per un sistema i cui requisiti non siano ben chiari neanche al committente in alcuni casi è auspicabile sviluppare prima una parte del sistema e poi completarlo (utente finale= mercato) in alcuni casi lo sviluppo di tutta la documentazione richiesta è non necessaria (uso di ambienti di sviluppo visuali) Porfirio Tramontana, 2009 Corso di Ingegneria del Software Slide 17
Quali sono i costi dell ingegneria del software? Circa il 60% dei costi è speso per le attività di sviluppo, il 40% per il testing. Per software personalizzato, I costi per l evoluzione spesso superano quelli di sviluppo. I costi variano in base al tipo di sistema sviluppato e ai requisiti di qualità richiesti quali le prestazioni o l affidabilità. La distribuzione dei costi dipende anche dal tipo di modello di sviluppo adottato. Porfirio Tramontana, 2009 Corso di Ingegneria del Software Slide 18