L’affidabilità nei sistemi software

L’affidabilità nei sistemi software

Introduzione al concetto di affidabilità

Al termine “affidabilità” possono essere dati molteplici significati:

  • Disciplina tecnico-scientifica, intesa come insieme di concetti, teorie e modelli che hanno lo scopo di determinare e descrivere il comportamento degli oggetti nel tempo.
  • Attività pratico-organizzativa, volta ad ottenere l’affidabilità degli oggetti avvalendosi di tecniche specifiche e operando nelle varie fasi del ciclo di vita del prodotto.
  • Proprietà di un oggetto, intesa come la capacità di questo di rispondere a specifiche richieste per un certo periodo di tempo e in determinate condizioni.

L’affidabilità acquisisce sempre più importanza con il passare degli anni esplicitandosi in numerose branche di applicazione che pur essendo molto diverse tra loro presentano comunque la comune concezione dell’affidabilità come qualità del sistema. Tale qualità rappresenta la misura della probabilità che l’oggetto considerato, indifferentemente che sia un sistema complesso o un semplice modulo software, non presenti deviazioni dal comportamento descritto nelle sue specifiche. L’affidabilità è quindi un disciplina ad ampio raggio, in continua evoluzione e strettamente collegata ad altri concetti qualitativi quali: manutenibilità, disponibilità e sicurezza.

L'affidabilità nei sistemi software

Operazioni principali per garantire l’affidabilità

Le operazioni principali che possono essere eseguite sull’affidabilità, intesa come qualità di un oggetto, sono: calcolare, verificare e costruire.

Calcolare e prevedere l’affidabilità è possibile attraverso l’uso di distribuzioni di probabilità. I metodi per il calcolo dell’affidabilità sono molteplici: si va dal più semplice metodo “combinatorio” , che tuttavia è possibile solo se si riesce ad attribuire un valore di affidabilità ad ogni componente elementare dell’oggetto, a modelli più complessi che presentano una più ampia generalità e rendono possibile la misurazione qualora la complessità di calcolo divenisse proibitiva anche avvalendosi dell’utilizzo di calcolatori.

Verificare l’affidabilità del sistema è possibile tramite due approcci differenti: il primo si limita a registrare ed osservare il comportamento del sistema durante il suo funzionamento e più ampio sarà il numero delle osservazioni effettuate tanto più precisa sarà la stima ottenuta. È intuibile, tuttavia, come il risultato ottenuto da queste osservazioni comporti un certo grado di incertezza poiché si è vincolati ad un campione limitato di osservazioni. Il secondo approccio si basa sulla tecnica delle prove accelerate; prove in cui il sistema viene volutamente sollecitato e portato in condizioni di stress per osservare in un tempo minore la risposta del sistema a tali sollecitazioni.

La costruzione dell’affidabilità può essere realizzata sia durante la fase di progettazione del sistema, sia nella fase di produzione dello stesso, attraverso l’utilizzo di particolari tecniche volte al conferimento di un giusto grado di affidabilità agli oggetti trattati.

Queste tecniche possono essere o di valenza generale, come ad esempio l’utilizzo della ridondanza, oppure specifiche. E’ importante sottolineare che il risultato di queste tecniche è trasformare il sistema in un progetto probabilistico dove le varie parti costituiscono le variabili aleatorie ed è quindi possibile calcolare il grado di incertezza e ridurlo.

L’affidabilità nei sistemi software

Il software può essere considerato come l’insieme di programmi e moduli composti a loro volta da un insiemi di istruzioni e dati, su cui si basano gli elaboratori per eseguire le operazioni. Il software è quindi un prodotto che, per raggiungere una certa qualità di realizzazione, può richiedere l’implementazione di determinate strutture atte a fornire al sistema la proprietà di affidabilità. In questo senso possiamo definire l’affidabilità software come:

La misura di quanto un sistema sia in grado di comportarsi secondo ciò che è stabilito nelle sue specifiche.

Lo studio dell’affidabilità, per l’ingegneria del software, si propone quindi di descrivere e misurare la capacità del sistema di adempiere le funzioni e i compiti per i quali il sistema stesso è stato progettato e costruito; tale valutazione serve proprio a definire il grado di “fiducia” che possiamo avere nei confronti del “buon funzionamento” del sistema. Possiamo in tal senso ulteriormente definire l’affidabilità come:

La probabilità che il sistema svolga con continuità le funzioni richieste in determinate condizioni sia operative che   ambientali.

Tuttavia, data la variabilità e l’aleatorietà del sistema e dell’ambiente in cui opera, la corretta esecuzione delle funzioni richieste, a priori, non è totalmente prevedibile. Per poter discutere di affidabilità di un sistema in un’accezione più tecnica del termine, bisogna considerare sia le connessioni dei vari componenti che lo costituiscono (e relative competenze), sia il ruolo che il sistema ricopre nell’ambiente in cui è inserito; difatti, un malfunzionamento può scaturire sia da problemi interni, quali circostanze casuali o fenomeni di invecchiamento, sia da interferenze esterne, come sollecitazioni ambientali o passaggio di informazioni non prevedibili. Per tale motivo lo studio dell’affidabilità di un sistema è strettamente legato al calcolo dell’affidabilità dei suoi componenti e della loro interazione con l’ambiente esterno.

Inoltre la crescente complessità dell’architettura interna ed esterna dei sistemi software e il crescente numero di agenti con cui questi sistemi entrano in rapporto inducono un aumento della probabilità di commettere errori durante la realizzazione del software; ed è oltre modo difficile, proprio a causa di tale aumento di complessità, verificare la presenza o meno di questi errori nell’applicativo. Più la complessità del sistema cresce più diviene facile commettere errori di realizzazione. Partendo dalla consapevolezza di quanto sia difficile ottenere un sistema totalmente privo di difetti, consideriamo allora “affidabile” non il software strettamente privo di difetti di realizzazione ma bensì il software che piuttosto tende a questo stato di perfezione, anche senza magari raggiungerlo pienamente, e che è in grado di procedere nel proprio funzionamento anche qualora si dovessero verificare degli errori sia di natura interna sia di natura ambientale. Infine tutto questo è possibile grazie all’utilizzo di determinate tecniche di tolleranza ai guasti dai diversi punti di vista per il sistema informatico.

Precedente Guasto, errore e fallimento in un sistema informatico Successivo Dependability e affidabilità di un sistema informatico

Lascia un commento

*