Perché un saggio su Affidabilità e Sicurezza

dei Sistemi e del Software

Capitolo 1° - Abstract

di A. Autino e V. de Val


Le motivazioni etico-filosofiche

Non dovrebbe apparire strano che due softwaristi sentano, ad un certo punto della loro esperienza lavorativa, la necessità di puntualizzare alcuni aspetti che, da tanti angoli di visuale, ritengono importanti e prioritari. Se a questo si aggiunge che, per percorsi diversi, ognuno con una propria accentuazione di certi concetti rispetto ad altri, i due softwaristi in questione sono giunti ad una elaborazione filosofico-politica inerente il cammino di sviluppo della Civiltà Umana, il quadro dovrebbe chiarirsi ulteriormente.

Può anche apparire arbitraria la connessione tra percorsi professionali, sia pure in settori tecnologici chiave, ed il destino dell’Umanità. Ma chi può negare che l’Informatica, in generale, rappresenti la tecnologia cardine dello sviluppo umano nella nostra epoca? Per mezzo dell’Informatica - e dell’Elettronica, suo imprescindibile supporto – l’Umanità (o almeno la sua parte tecnologicamente più evoluta) ha superato la fase industriale dello sviluppo. La rivoluzione elettronica ha portato alla completa dissoluzione del quadro sociale che si era formato in epoca industriale. L’Elettronica e l’Informatica sono, alle soglie del terzo millennio, utilizzate praticamente in tutte le attività umane, come supporto migliorativo o come dorsale essenziale. Molte delle attività produttive, e di quelle culturali ancor più, semplicemente non potrebbero avere luogo, senza queste due discipline.

Mediante l’Informatica, dunque, l’uomo è finalmente in grado di affidare ad una macchina parte di quel processo di valutazione e controllo che costituisce l’essenza del proprio agire specifico (cioè in quanto specie) sull’ambiente circostante, al fine di modificarlo ed utilizzarlo a proprio specifico vantaggio. Vi sono, in questo atto, sorretto dall’enorme complessità della macchina, elementi di emancipazione culturale e sociale che gli antropologhi, i sociologi e buoni ultimi i politici, sono ben lontani dall’aver anche solo iniziato ad analizzare e trarre le conseguenze essenziali. Osserviamo, inoltre, che le attività umane fuori del proprio ambiente natale (il pianeta Terra), semplicemente non sarebbero possibili senza il supporto fondamentale dell’Informatica. Mettere in forse lo sviluppo dell’Informatica significa quindi, in ultima analisi, mettere in forse lo stesso cammino evolutivo della nostra Specie, che tende inevitabilmente a portarci aldilà della Frontiera del pozzo gravitazionale terrestre.

Poiché nessun passo evolutivo va mai dato per scontato ed irreversibile, si rischia che finiscano per prevalere le tante critiche (quelle, per intenderci, che mettono l’enfasi sui pericoli insiti nell’Informatica e nell’Automazione, se non dello Sviluppo Tecnologico tout-court), prima ancora di aver capito e metabolizzato l’enorme potenziale evolutivo delle tecnologie informatiche. Uno degli intenti, forse il primo, nell’accingerci alla stesura di queste note, è quello di contribuire, nel nostro piccolo, ad assicurare la continuazione dell’Informatica, salvandola dai suoi nemici (sia detrattori che banalizzatori), attraverso due operazioni fondamentali:

  1. metterne in luce le enormi potenzialità, ed il suo carattere di "amicizia" nei confronti degli Umani e del loro sviluppo
  2. migliorarne alcuni aspetti essenziali, primo fra tutti l’Affidabilità e la Sicurezza, soprattutto nei settori applicativi ove questa è essenziale.

Il lettore si potrà chiedere divertito come si possa pensare al giorno d'oggi che l'informatica sia "una specie in via di estinzione", visto che oramai computer e microprocessori sono usati ovunque (probabilmente anche a sproposito)! In realtà, quello che interessa e preoccupa gli autori non è l'informatica "consumer", quella dei PC di casa o di altri generi di largo consumo. Il nostro interesse si rivolge all'utilizzo dell'informatica quale strumento tecnologico indispensabile per portarci al di là della Frontiera del pozzo gravitazionale terrestre. Per fare questo si dovranno sviluppare sistemi tecnologicamente avanzati quasi interamente controllati dal software, dal cui corretto funzionamento dipenderanno le vite dei futuri abitanti della Frontiera. E' chiaro che tale software, altamente critico, dovrà avere un grado di affidabilità e sicurezza elevatissimo. Diremmo anzi che l'affidabilità e la sicurezza dovrebbero essere i requisiti più importanti che guidano lo sviluppo dell'applicazione.

Va da sé che gli autori pensano, anche in base alla lunga casistica che hanno potuto osservare durante la propria esperienza professionale, che l’esigenza dell’Affidabilità e della Sicurezza non sia affatto riconosciuta come dovrebbe, e che ad essa non sia dato il giusto valore commerciale, nelle contrattazioni che normalmente si svolgono tra Committenti e Produttori di sistemi informatici. E’ infatti in quella zona di confine, dove l’etica si confronta con il profitto e con la sopravvivenza stessa delle aziende, che si giocano le sorti dell’affidabilità dei sistemi e, se osserviamo il processo da un punto di vista più generale, dello stesso sviluppo economico e sociale. Gli autori intendono qui dare qualche argomento in più a chi difende, nelle contrattazioni, l’esigenza di provvedere una parte di budget specificamente dedicata alla progettazione affidabilistica; e, come tenteremo di dimostrare,

  1. l’affidabilità non è cosa che si possa appiccicare al termine di un progetto, come la ciliegina sulla torta, ma deve informare il progetto sin dall’inizio
  2. l’affidabilità è cosa diversa ed ulteriore, rispetto all’assicurazione di qualità (ISO 9000 e suoi derivati).

Nell’affidare ad una macchina – cioè ad una oggettivizzazione del pensiero creativo – la propria stessa sicurezza, la propria vita ed, in senso più generale, la propria stessa sopravvivenza specifica e la continuazione del proprio sviluppo, l’uomo dovrebbe osservare la massima accuratezza, applicare la massima cura scientifica, ed avere sempre ben presente alcuni criteri etici e deontologici essenziali.

Abbiamo quindi deciso di aprire un filone di ricerca che svilupperemo basandoci innanzitutto sulla nostra esperienza professionale (ambedue operiamo nel mercato dei sistemi Hard-Real-Time per applicazioni aerospaziali ed abbiamo operato nel settore dell’Automazione Industriale) e sullo studio e catalogazione della vasta letteratura esistente a livello planetario, anche sull’internet. Il nostro intento è quello di fornire una sistematizzazione dell’approccio affidabilistico alla progettazione di sistemi Real Time. La ricerca è finalizzata alla formazione, a qualificare le nostre competenze sul mercato, alla partecipazione a simposi internazionali di carattere scientifico, ad interagire con chiunque sia interessato, come produttore di sistemi o come utilizzatore, a questi temi.


I contenuti tecnico-scientifici

L’opera si propone di analizzare il problema della affidabilità e della sicurezza nei progetti software, con particolare attenzione a quella classe di applicazioni in cui il software interagisce con dispositivi fisici (sensori ed attuatori, che acquisiscono segnali ed inviano comandi a dispositivi di vario tipo, quali motori, pompe, valvole, ecc.), monitorandoli e comandandoli. Tale categoria viene spesso identificata con i termini "Embedded Software" oppure "Real Time Software".

In questo tipo di applicazioni un malfunzionamento del software può provocare danni considerevoli (fino alla perdita di vite umane) e pertanto è in queste aree che l'affidabilità e la sicurezza devono essere delle caratteristiche basilari dell'applicazione software.

Detto ciò, ci sembra ancora importante chiarire che, in questo lavoro, non separeremo gli aspetti tecnico-scientifici da quelli etico-economici, come non pensiamo che tali aspetti debbano mai essere separati, nella realtà delle negoziazioni e dello sviluppo dei progetti. Certo è normale che produttori e committenti si pongano, nelle varie fasi decisionali, domande del tipo: "Chi mi pagherà per i contenuti affidabilistici, se decido di svilupparli?", "Ma devo proprio essere io a rimetterci?", "Non è più realistico badare solo agli aspetti strettamente funzionali, quelli che il cliente mi chiede, senza cercare altre gatte da pelare?". "E se il cliente, visti i costi della progettazione affidabilistica, deciderà di dare l’ordine ad altri, meno etici, ma anche meno cari?". Sono domande cui chiunque operi nel mercato delle applicazioni informatiche ha provato a dare risposte le più pragmatiche e realistiche possibile, salvo poi a versare lacrime e sangue quando, a lavoro inoltrato, ben lontani dall’euforia di aver preso l’ordine, mancandogli il budget necessario, ha comunque deciso di rimetterci di suo, per inserire nel sistema quei livelli minimi indispensabili di affidabilità e sicurezza che il contratto non comprendeva.

Lasciatevi mettere quindi, dei "grilli per la testa", e soprattutto siate capaci di metterli in testa ai clienti, se non volete poi rimetterci di tasca vostra. In caso nessuno volesse rimetterci, ed i contenuti affidabilistici fossero ostracizzati dalla vostra progettazione, ci rimetteranno prima o poi gli utenti finali, con conseguente restrizione del vostro mercato. Proprio dagli utenti finali dovrebbe, infine, venire una maggiore domanda di affidabilità e sicurezza, in modo che queste cominciassero ad avere, anche, un loro valore commerciale, e questo è un problema di education, come si dice, o se preferite, di battaglia culturale urgente e necessaria.

Il saggio si indirizza, in primo luogo, a tutti coloro che si occupano di sviluppo software real-time, siano essi programmatori, analisti o responsabili di gruppi di sviluppo. Ci rivolgiamo anche agli utilizzatori di sistemi real-time, con l’intento di stimolarne le osservazioni ed i commenti, per arricchire ulteriormente il quadro analitico. Le categorie utenti non si limitano, ovviamente, ai diretti committenti dei progetti, bensì comprendono gli utilizzatori finali: ad esempio i passeggeri di un qualsiasi sistema di trasporto. L’obiettivo è quello di dare una visione sistematica del problema dell’affidabilità del software, un argomento di cui spesso si accetta la relativa "fumosità", a scapito della sicurezza degli utenti.

L'opera verrà sviluppata secondo la seguente logica:

  1. Innanzitutto verranno definiti in modo generale i concetti di affidabilità e di sicurezza di un qualsiasi dispositivo. Vedremo le varie tipologie di affidabilità (la sicurezza è uno di queste).
  2. Analizzeremo quindi le peculiarità di un’applicazione software. Vedremo come la progettazione software differisca sostanzialmente dalla progettazione di altri componenti (elettronici, meccanici o altro) e vedremo perché sia necessario sviluppare un insieme di tecniche ad-hoc nel campo dell'affidabilità.
  3. Entreremo quindi nel dettaglio della progettazione di un'applicazione software affidabile, analizzando i vari aspetti:
  1. Vedremo infine quali caratteristiche siano richieste agli strumenti di sviluppo software affinché supportino adeguatamente i progettisti nello sviluppo di un'applicazione affidabile. Analizzeremo principalmente i sistemi operativi ed i linguaggi di programmazione, ma discuteremo anche di tools CASE di supporto alle varie fasi di progetto quali il design ed il testing.

I contenuti umanistici

Se quanto sopra costituisce il core tecnico dell’opera, lungo il cammino e/o in capitoli appositi copriremo anche altri aspetti, che riguardano il mercato e gli attori che creano le tendenze in atto; cercando anche di analizzare se queste ultime portano ad una maggiore o minore affidabilità e sicurezza dei sistemi. Particolare cura sarà posta nell’analizzare gli aspetti umani della negoziazione, progettazione, sviluppo ed uso dei sistemi informatici. Poiché grande è il contributo che l’Informatica dà allo sviluppo della cultura umana in tutti i suoi aspetti, ci sembra giusto che:

  1. sia ricercato il contributo di discipline umanistiche allo sviluppo della stessa Informatica;
  2. si confrontino le metodologie di sviluppo ed uso dei sistemi informatici con i principi umanistici fondamentali, vale a dire le libertà ed i diritti fondamentali dell’individuo, e la loro applicazione su sempre più vasta scala;
  3. si cerchi di capire fino a che limite il mercato può favorire lo sviluppo di un’Informatica umanista, e dove occorre aiutare tale processo con mezzi politici e/o di education.

Gli aspetti umani sono di importanza fondamentale nello sviluppo di sistemi informatici, ed impattano su tutta la vita del sistema, dalla sua concezione sino all’utilizzo. I sistemi informatici vengono infatti concepiti, sviluppati ed infine utilizzati da umani (anche una sonda spaziale completamente robotizzata, viene comunque sempre utilizzata a beneficio umano, quale che sia il suo grado di autonomia operativa). Vediamo alcune indicazioni metodologiche fondamentali, per il buon esito di un progetto:

La mancanza di uno o più degli elementi sopra-elencati può spiegare la maggior parte dei casi di inefficienza di sistemi o di molti risultati clamorosamente diseconomici.

Cercheremo inoltre di definire i contorni del mercato dell’affidabilità e sicurezza dei sistemi, di afferrarne la consistenza, l’articolazione -- quali settori sono per loro natura maggiormente ricettivi ad una proposta seria e qualificata di A&S -- ed i possibili trend di crescita.

Formuleremo quindi alcune domande ultime, e forse più inquietanti, cui siamo tutt’altro che certi di poter dare una risposta, ma che suggeriamo a chiunque operi nel settore informatico. Saremmo già soddisfatti di noi stessi se, in queste note, fossimo capaci di fornire elementi di giudizio per aiutare un’elaborazione in proposito. Diamo di seguito quelli che ci sembrano i parametri fondamentali di una ricerca.

Crediamo che al mercato si possano e debbano innanzitutto proporre regole deontologiche e di qualità, e contenuti educativi. Certo, anche una normativa di legge più attenta agli aspetti della sicurezza degli utenti potrebbe essere d’aiuto, ed è qui che la politica può venire in aiuto al mercato. Tuttavia la risposta più ovvia, capace anche di stimolare l’inziativa di singoli e di piccoli gruppi imprenditoriali, è auspicare che nascano aziende che assumono in sé la missione di invertire la tendenza. Possono sperare, tali aziende, di trovare nicchie iniziali di mercato e di cominciare a fare scuola?

In altre parole, esiste, alle soglie del Terzo Millennio, un mercato di partenza, per una proposta culturale affidabilistica? È la domanda fondamentale, cui cercheremo di dare risposta.

Torna alla Home Page