In qualsiasi campo ormai al software sono affidate molte operazioni, dalle più semplici alle più complesse, per automatizzare processi ripetitivi o per avere maggiore precisione nell’eseguirle in modo più preciso dell’uomo.

Nella maggior parte dei casi se un’operazione non è eseguita in modo corretto, si corre un elevato rischio e si può incorrere in perdite elevate.

Quando un sistema non fornisce servizi come dovrebbe, possono verificarsi perdite economiche, danni fisici o minacce per la vita, tali sistemi sono detti sistemi critici.

Wallpaper Matrix System Failure

Esistono tre tipi di sistemi critici:

  1. Sistemi safety-crtical (a sicurezza critica): fallimenti possono provocare incidenti, perdite di vite umane e danni ambientali.
  2. Sistemi mission-critical (a missione critica): alcuni malfunzionamenti possono causare fallimenti ad attività a obiettivi diretti.
  3. Sistemi business-critical (a criticità aziendale): i fallimenti possono portare a perdite economiche.

Per tali sistemi la proprietà complessiva più importante è la fidatezza, che comprende le caratteristiche di disponibilità, affidabilità, sicurezza e protezione. I sistemi non affidabili, non sicuri e non protetti sono rifiutati dagli utenti perché i costi di un fallimento del sistema potrebbero essere enormi e sistemi inaffidabili possono causare anche perdite di informazione.

Per tali sistemi si utilizzano tecnologie e metodi fidati e già consolidati e non quelle di nuova generazione anche se portano maggiori vantaggi.

I fallimenti possono essere causati dall’hardware del sistema (errori di progettazione, guasti o fine del ciclo di vita), dal software (errori delle specifiche, di progettazione e d’implementazione) o da errori umani.

Fidatezza di un sistema

La fidatezza è la proprietà del sistema che si equipara alla fiducia che l’utente ripone nel sistema pensando che questo operi secondo le aspettative e che non fallisca nel normale utilizzo. Le principali dimensioni della fidatezza sono:

  1. Disponibilità: è la proprietà che un sistema sia attivo e funzionante e in grado di fornire servizi utili in ogni momento.
  2. Affidabilità: è la probabilità che il sistema fornisca correttamente i servizi come atteso dall’utente in un determinato periodo di tempo. Comprende la correttezza (la garanzia che i servizi di sistema siano quelli dichiarati), la precisione (la garanzia che l’informazione sia fornita nel giusto livello di dettaglio) e la tempestività (la garanzia che le informazioni siano fornite quando richieste).
  3. Sicurezza: è la valutazione di quante possibilità ci sono che il sistema causi danni a persone o al loro ambiente.
  4. Protezione: è una valutazione di quante possibilità ci sono che il sistema resisti alle intrusioni accidentali e non. Comprende l’integrità (la garanzia che le informazioni siano accessibili solo alle persone autorizzate) e la riservatezza (la garanzia che le informazioni siano accessibili solo alle persone autorizzate).

Ci sono anche altre dimensioni di minore rilievo:

  1. Riparabilità: i disturbi causati dai fallimenti possono essere minimizzati se il sistema è riparabile facilmente.
  2. Mantenibilità: il sistema deve essere modificabile per adattarlo a nuovi requisiti.
  3. Sopravvivenza: la capacità di un sistema di continuare a fornire servizi anche mentre si trova sotto attacco o mentre parti del sistema sono disabilitate. È legato alla disponibilità e alla protezione.
  4. Tolleranza agli errori: riflette fino a che punto il sistema è stato progettato in modo da evitare e tollerare errori di immissione. È legato all’usabilità.

Per avere un’elevata fidatezza nei sistemi critici, i costi di sviluppo e convalida sono elevati perché oltre a dover soddisfare i requisiti stringenti bisogna dimostrare anche alle autorità esterne di controllo un elevato livello di fidatezza.