Qualità del software: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m - bold |
|||
Riga 81:
sono facili da verificare. <br/>
Per aumentare il grado di verificabilità si fa uso di:
* tecniche di [[progettazione modulare]]
* opportuni linguaggi di programmazione
* [[software monitor]]
In alcuni casi diventa una qualità esterna (''Software safety critical'')
==Manutenibilità==
Facilità di apportare modifiche a sistema realizzato.
In origine si pensava che la manutenzione corrispondesse solo al [[bug fixing]], ma oggi la situazione è più complessa infatti la manutenzione riguarda ogni miglioramento del software e andrebbe indicata più precisamente come [[evoluzione del software]].
Ormai 60% dei costi dipende proprio dalla manutenzione.
Per analizzare questi costi occorre suddividere in manutenzione:
* Correttiva
* Adattativa
* Perfettiva
La manutenzione correttiva
* Elimina gli errori presenti sin dall’inizio
* Elimina gli errori introdotti da precedenti interventi di manutenzione
* Rappresenta il 20% del totale della manutenzione
La manutenzione adattativa:
* Modifiche a seguito di cambiamenti nell’ambiente
* Cambiamenti nell’Hardware, nel Sistema operativo, etc.
* 20% del totale
La manutenzione percettiva
* Modifiche per migliorare le qualità del software
* Introduzione di nuove funzionalità
* Miglioramento delle funzionalità esistenti
* E’ la parte più consistente (circa il 60% del totale)
L’ultima parte è così consistente soprattutto per il [[legacy software]] che non può essere sostituito a meno di ingenti spese, per cui viene migliorato e adattato.
La manutenibilità dipende da due aspetti
* Riparabilità per indicare ciò che consente di eliminare difetti
* Evolvibilità per indicare ciò che consente l’implementazione di nuovi requisiti
==Riparabilità==
Un sistema è riparabile se la correzione degli errori è poco faticosa.
E’ una proprietà fondamentale di molti prodotti ingegneristici (automobili, computer,...). Per questi prodotti la tecnica usata è quella di abbassare il prezzo e di favorire la sostituzione piuttosto che la riparazione. Perché ciò possa avvenire si utilizzano delle parti standard che possono essere cambiate con facilità.
Nel software la situazione è diversa.
* Non c’è usura (parti meccaniche);
* Non esistono componenti standard;
* Il costo non dipende dai pezzi ma solo dalla mano d’opera necessaria.
La riparabilità si persegue attraverso la modularizzazione.
Non conta tanto il numero, ma piuttosto il come sono organizzati tra loro e al loro interno.
==Evolvibilità==
Il software, purtroppo, a differenza di altri prodotti ingegneristici è facilmente modificabile:
* Non si fanno mai studi di analisi di fattibilità approfonditi
* Non si progettano le modifiche
Peggio ancora, i cambiamenti effettuati non sempre sono documentati per cui le specifiche non vengono aggiornate e ciò rende i cambiamenti futuri difficili da compiere.
E’ necessario prevedere sin dall’inizio che il software può evolvere e progettare tenendo in mente questa evoluzione per sfruttare al meglio i costi sostenuti in passato.
==Riusabilità==
Affine all’evolvibilità. Tuttavia si ha nell’evolvibilità una modifica per realizzare una nuova versione, mentre nella ricusabilità si usano di parti di sistema per realizzare un prodotto diverso.
Inizialmente si pensava al riuso del software. Oggi si riusa tutto:
* [[Specifiche]]
* Progetti
* [[Testing]]
Indica il livello di maturazione della disciplina.
Vantaggi:
* Diminuzione dei costi
* Aumento della affidabilità
Come fare per rendere i diversi manufatti riusabili?
* Tecniche di progettazione
* Tecniche di specifica
* Metodologie
* Standardizzazione del processo di sviluppo
==Portabilità==
Un sistema è portabile se è in grado di funzionare in ambienti diversi.
E’ diventato un aspetto fondamentale perché consente di avere vantaggi economici perché si possono ammortizzare i costi trasportando l’applicazione in diversi ambienti.
Nel caso delle applicazioni WEB è la chiave di volta.
Si usano strumenti e tecniche appositamente pensate per dare luogo ad oggetti portabili.
[[categoria:software]]
|