del software Generalità Leggi dell evoluzione del software Classi di manutenzione Legacy systems Modelli di processo per la manutenzione 1 Generalità La manutenzione del software è il processo di modifica di un prodotto software dopo il suo rilascio in esercizio per eliminare malfunzionamenti migliorare prestazioni o altri attributi di qualità adattarlo a modifiche dell ambiente operativo Il termine manutenzione del software (o evoluzione del software) include spesso anche estensioni delle funzionalità originarie per soddisfare nuovi bisogni degli utenti 70 % del budget software è speso in manutenzione 75% del personale software svolge attività di manutenzione 2 1
Leggi dell evoluzione del software Basate sull osservazione di un S.O. IBM su 4 cicli di versioni maggiori Lehman e Belady, 1976 I legge: Cambiamento continuo un programma utilizzato in un ambiente del mondo reale deve cambiare, oppure diventa progressivamente meno utile in quell ambiente II legge: Entropia crescente Man mano che un programma cambia, la sua struttura degrada e la dimensione cresce, con il risultato di una complessità crescente Risorse addizionali sono richieste per preservarne la semantica e semplificarne la struttura 3 Classi di manutenzione correttiva Modifiche per correggere difetti adattativa Modifiche per adattare il software a cambiamenti dell ambiente operativo (hardware, software di base, interfacce, organizzazione, legislazione, ecc.) perfettiva Estensione dei funzionali, o migliorie di non funzionali in risposta a richieste dell utente preventiva Modifiche che rendono più semplici le correzioni, gli adattamenti e le migliorie 4 2
Distribuzione dello sforzo di manutenzione Adattativa 25% Correttiva 21% Preventiva 4% Perfettiva 50% 5 Problemi della manutenzione In gran parte dipendono dalla mancanza di controllo e disciplina nelle fasi di analisi e del c del CVS Alcuni fattori tecnici: difficoltà nel comprendere un programma scritto da altri mancanza di documentazione completa/ consistente software non progettato per modifiche future difficoltà nel tradurre una richiesta di modifica di funzionamento del sistema in una modifica del software valutazione dell impatto di ciascuna modifica sull intero sistema la gestione della configurazione del software la necessità di riare il sistema dopo le modifiche 6 3
Il problema dei Legacy Systems a legacy system is often old (more than 10 years old); is large, typically comprising hundreds of thousands of lines of code might be written in assembly or an early version of a third-generation language was probably developed before the widespread use of modern software engineering methods has been maintained to accommodate changing requirements and thus, according to the universal law of entropy, its disorder has increased is difficult to maintain, and thus absorbs a lot of money for maintenance; performs crucial work for its organization may represent years of accumulated experience and knowledge in a specific domain 7 La manutenzione dei Legacy Systems Alcuni approcci: Discarding the system and developing a replacement one that meets new requirements Simplifying the system by throwing away unused parts, old and redundant code, and dead data Saving the most critical parts and replacing the rest with COTS Freezing the system (or parts of it) and using it as a component of a new larger system (tecniche di wrapping) Continuing with ordinary maintenance or Performing preventive maintenance to improve the quality of the system Reengineering the system Migrating to new platforms 8 4
Modelli di processo per la manutenzione del software Modello di riparazione veloce (Quick-fix model) modifiche al in termini di patches ( pezze ) veloce ed economico sul breve termine degradazione delle struttura documentazione modificata a posteriori Modello di miglioramento iterativo (iterative-enhancement model) valutazione preventiva dell impatto della modifica decisione se lavorare su componenti esistenti o sviluppare nuove componenti preserva la struttura lento e costoso sul breve termine documentazione modificata in anticipo 9 Modello di riparazione veloce (quick- fix model) Vecchio sistema Nuovo sistema 10 5
Modello di miglioramento iterativo (iterative-enhancement) Vecchio sistema Nuovo sistema analizza 11 Il processo di manutenzione secondo lo Standard IEEE 1219, 1993 Problem/ Modification Identification and Classification Analysis Design Acceptance Testing Regression/ SystemTesting Implementation 12 6