5° Comandamento Software: NON UCCIDERE

Il software è uno dei prodotti più complessi mai prodotti dall’uomo, senza paragoni. Non esiste prodotto letterario, programma scientifico, opera architettonica che possa eguagliare il numero di ore/uomo o anni/uomo necessari a produrre un software di grande complessità come quello che equipaggia un moderno aereo, un’automobile di ultima generazione, il computer o smartphone che state utilizzando, un social come Facebook.

Ed il software è talmente complesso che spesso sbaglia… anzi, uccide.

 

Il software uccide le persone, brucia capitali enormi, fa saltare in aria le aziende, crea irreparabili danni di immagine

 

Nel 1982, si sospetta che la CIA abbia volutamente introdotto un bug (errore software) all’interno del codice di controllo della condotta di gas transiberiana in Russia. Per motivi di contro-spionaggio, gli USA hanno deciso di far esplodere tale condotta una volta operativa con il risultato di provocare la più grande esplosione non-nucleare della storia.

 

Image result for therac 25Tra il 1985 ed il 1987, un acceleratore di particelle chiamato Terac 25 ha provocato diverse morti  in alcune ospedali. Basato su un design precedente, il nuovo apparato era stato dotato di un dispositivo di sicurezza basato su software invece che meccanico ma purtroppo era stato programmato da un tecnico senza nessuna preparazione formale e senza criteri di safety. In alcuni casi di utilizzo maldestro, un bug molto sottile chiamato “race condition” ha provocato l’emissione di raggi X ad alta potenza senza uno schermo protettivo che colpivano direttamente il paziente uccidendolo o ferendolo gravemente.

 

Nel 1996, il razzo Ariane V è stato fatto esplodere in quanto oramai totalmente fuori traiettoria e senza controllo. Il software di navigazione inerziale della precedente versione, Arian IV, era stato ritenuto talmente affidabile da essere utilizzato senza modificarlo e soprattutto senza testarlo con i nuovi requisiti di velocità ed accelerazione del nuovo e più potente vettore. Un banale errore di conversione da 64 a 16 bit ha provocato un overflow che non gestito ha portato all’auto-distruzione con un danno di 370 milioni di dollari.

Image result for mars climate orbiter crash

Nel 1999, il Mars Climate Orbiter della NASA ha oltrepassato il suo obiettivo quando ha cercato di spostarsi in orbita attorno al pianeta rosso. Si è poi polverizzato nell’atmosfera. La ragione: un gruppo di ingegneri che lavoravano alla navicella utilizzava le misure Metriche mentre un’altra squadra usava le unità Imperiali.

 

Image result for knight capital bugIl 1 Agosto 2012, un computer impazzito della Knight Capital ha cominciato ad inviare migliaia di ordini errati di compravendita di azioni al secondo, vendendo a prezzo di mercato invece che sfruttando la forchetta Bid/Ask e rimettendoci sistematicamente ad ogni transazione. In poco più di 30 minuti, l’azienda ha perso 440 milioni di dollari e ha sfiorato il fallimento.

Image result for schiaparelli crash

Il 19 Ottobre 2016, la sonda spaziale Schiaparelli si è schiantata sulla superficie marziana nell’ambito della missione ExoMars di esplorazione di Marte in collaborazione tra ESA e Russia. Il paracadute si è aperto per solo 3 secondi invece che per 30 come avrebbe dovuto, con il risultato di arrivare troppo velocemente e di distruggersi all’impatto. Anche in questo caso, il software non ha saputo gestire delle condizioni eccezionali che si sono verificate.

 

E questi sono solo i danni macroscopici, quelli da centinaia di milioni e che diventano famosi per quello. In realtà, ci sono sicuramente episodi meno eclatanti dove comunque le aziende perdono non soltanto milioni di dollari ed euro, ma soprattutto perdono la fama, l’affidabilità, la posizione di mercato, la fiducia degli utenti e via discorrendo. Tutte cose che possono determinare problemi non soltanto immediati a breve termine, ma un lungo ed inesorabile declino se non al fallimento.

Non preoccupatevi, c’è ancora di peggio: il processo di produzione del software, nella maggior parte delle aziende incluse le migliori, è quantomeno mal gestito se non fuori controllo e le conseguenze prima o poi diventeranno eclatanti e sotto gli occhi di tutti.

Ma cosa capita, nel frattempo?

Capita che, come un’emorragia interna multipla, il ciclo di vita del software faccia perdere “sangue” dagli organi aziendali in maniera inavvertita ed inesorabile, consumando quantità incredibili (e quasi mai misurate) di soldi, allungando a dismisura i tempi di consegna o di arrivo sul mercato, facendo silenziosamente crescere il malcontento dei clienti finali e via discorrendo.

Per anni ed anni, prima che qualcuno se ne possa accorgere. E di solito, quando ci si accorge che i propri “organi” interni sanguinano, comincia ad essere troppo tardi.

E QUINDI? COSA DOBBIAMO FARE?

Le azioni da fare essenzialmente sono:

  • Diffondere una Cultura Continua del Software in tutta l’azienda, in modo che ci sia una crescente consapevolezza dei rischi e delle incredibili opportunità di una sua gestione intelligente
  • Adottare un Metodo per il Ciclo di Vita del Software basato su uno SVILUPPO EFFICIENTE integrandolo con quello tradizionale aziendale dei propri prodotti venduti
  • Introdurre un ecosistema di Tool, Librerie di terze parti nella produzione del software in maniera accurata laddove siano realmente utili e non sia strategico il loro sviluppo interno
  • Attivare delle procedure di Verifica, Monitoraggio e Controllo per essere consapevoli in ogni momento dello stato di salute del vostro software e di conseguenza della vostra azienda
  • Valutare le Metriche adeguate per calcolare il Ritorno dell’Investimento di ogni azione intrapresa in questo processo in modo da rendere sempre più efficiente e sicuro il processo di sviluppo

I prossimi articoli saranno dedicati esattamente a questi capisaldi che potranno determinare la differenza tra il salvataggio e la crescita della vostra azienda da una parte, oppure l’inesorabile declino ed aumento esponenziale del rischio dall’altra.

E voi, da che parte volete stare?

 

Segui questo blog e scrivimi a:
blog@softwaresicuro.it
Ti invierò articoli tecnico-pratici su come rendere più efficiente il tuo Ciclo di Vita del Software e ti manderò Casi di Studio reali di Piccole/Medie Aziende o Grandi Imprese dove viene raccontato nei particolari l’applicazione pratica di questo metodo.

Autore: Massimo Bombino

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

La tua azienda sta producendo pessimo software, bruciando prezioso budget in una spirale che presto ti manderà gambe all’aria. Te ne sei già accorto? E cosa stai facendo per evitarlo?
Tech Nerd theme designed by Siteturner