Disponibilità e affidabilità

Per quanto siano strettamente legate disponibilità e affidabilità, non è detto che un sistema affidabile sia per forza disponibile, o viceversa, un esempio è il sistema telefonico che è molto disponibile ma è poco affidabile.

La disponibilità non dipende solo dal sistema stesso ma anche dal tempo necessario per riparare i difetti che lo rendono indisponibile. L’affidabilità invece dipende anche dall’ambiente in cui è usato tale sistema, ad esempio cambia il modo di utilizzo di uno stesso sistema in due ambienti diversi e quindi può essere ritenuto affidabile per l’uno ma non per l’altro. L’affidabilità dipende anche dalla gravità degli errori e delle loro conseguenze: un errore che avviene sporadicamente ma, che mette in serio pericolo l’utilizzatore del sistema rende molto più insicuro e inaffidabile il sistema rispetto a un errore più frequente con conseguenze lievi. Un sistema è anche affidabile se il suo comportamento rispetta le specifiche, però questo può rendere il sistema inaffidabile perché le specifiche non rispettano le aspettative dell’utente.

Un sistema è reso inaffidabile da:

  • Fallimento del sistema: un evento che capita in un certo punto della vita del sistema durante il quale non fornisce un servizio come ci si aspetta.
  • Errore di sistema: uno stato errato del sistema che può portare a un comportamento inaspettato.
  • Difetto del sistema: caratteristica di un sistema che può portare a un errore del sistema.
  • Errore umano: comportamento umano che porta all’introduzione di difetti del sistema.

Per evitare tali problemi si cerca di evitare i difetti (con l’uso di tecniche di sviluppo che minimizzano la probabilità di errore e aumentano la possibilità di trovarli), ricercare e rimuoverli (Verification & Validation) e di tollerare i difetti (si usano tecniche che evitano ai difetti di produrre errori o che gli errori provochino fallimenti).

I difetti producono errori che provocano fallimenti. Tali fallimenti si hanno quando il codice difettoso è seguito con input che rendono evidente il difetto producendo output sbagliato, se questo codice difettoso fa parte di funzioni poco usate allora si avrà una maggiore affidabilità e quindi rimuovere tali difetti non modifica l’affidabilità complessiva vista dagli utenti.

Sicurezza

Per il controllo hardware dei sistemi a sicurezza critica avviene oggi tramite software che gestiscono sensori e attuatori. I software a sicurezza critica possono essere:

  • Software primario a sicurezza critica: software integrato come controller di un sistema, il cui malfunzionamento provoca malfunzionamento hardware che a sua volta provoca danni umani o ambientali.
  • Software secondario a sicurezza critica: software che può provocare indirettamente danni.

Affidabilità e sicurezza sono correlati ma separati: un sistema affidabile che rispetta le specifiche può non essere sicuro poiché può funzionare in modo anomalo e avere un comportamento che provoca un incidente. I sistemi affidabili non sono sempre certi perché le specifiche possono essere incomplete, i malfunzionamenti hardware provocano comportamenti imprevisti e gli operatori possono inserire input giusti in situazioni poco adeguate.

È possibile identificare i seguenti termini nel campo della sicurezza:

  • Incidente o contrattempo: evento o sequenza di eventi non pianificati che causano incidenti.
  • Pericolo: condizione che, potenzialmente, contribuisce o causa un incidente.
  • Danno: misura della perdita risultante da un contrattempo o incidente.
  • Gravità del danno: stima del danno peggiore che può scaturire da un determinato pericolo.
  • Probabilità di pericolo: probabilità della comparsa di eventi che possono creare un pericolo.
  • Rischio: è la misura della probabilità che il sistema causa un incidente.

Per garantire la sicurezza bisogna evitare i pericoli, ricercare e rimuoverli e limitare i danni quando avviene un incidente. Aumentare la sicurezza, tramite il monitoraggio e il controllo, rende il sistema più complesso e quindi aumenta la possibilità di errore.