Sicurezza di prodotto o di processo?

Se passi davanti a un negozio IKEA, ti potrà capitare di trovare questo strano dispositivo.

È una scatola di plexiglas trasparente, contenente una poltrona IKEA, uno strano braccio robotico con due grandi pistoni che spingono la sedia e un contatore. È una specie di esperimento di simulazione di una persona di 80 kg. seduto e in piedi, ripetuto per migliaia e migliaia di volte.

Probabilmente hai guardato il bancone, hai visto un numero come 999.999-1.000.000- … e hai fatto un po’ di matematica mentale…

 “Probabilmente io e la mia famiglia potremmo sederci e alzarci in media 10 volte al giorno, 3.650 totali all’anno … quindi questa sedia durerà almeno 300 anni “ 

E con la giusta fiducia nella sua robustezza, hai deciso di comprarla.

Ora pensiamo a un software critico per la sicurezza: ti potrebbe essere richiesto di certificare secondo il severo standard DO-178C, fino al livello A. Bene, guardando questa o altre normative di sicurezza correlate, potresti trovare che associato al livello A, hai una probabilità di errore 10E-9 ore di volo. Ok, ancora matematica… significa:

1 miliardo di ore senza problemi, o meglio 115.740 anni

Centoquindicimila anni! Sembra abbastanza buono, non è vero? Tranne il fatto che… per il software, in realtà non funziona così. Cosa significa veramente DAL-A? Letteralmente, significa Design Assurance Level: garanzia del DESIGN.

Ma la vera probabilità di un guasto del software è molto più alta … alcuni esperti dicono che la probabilità è 1 ovvero il 100%! Potresti essere abbastanza sicuro che il tuo software fallirà! Pensa al tuo sistema operativo desktop o mobile … puoi immaginare un’app per il tuo smartphone o computer che resista migliaia di anni senza crash o bug?

 E pensi che il software avionico possa essere reso così solido per millenni? Possa davvero essere rilasciato fin dall’inizio totalmente senza bug? 

NON È COSÌ

ed ora ti spiego perché.

Read More

Christine, la macchina (a guida autonoma) infernale

Come forse avrai letto, a Marzo 2018 un’auto a guida autonoma di Uber ha investito una donna di 49 anni in Arizona, uccidendola


Esatto: come nei migliori (e peggiori) film di fantascienza se non horror, una macchina dotata di intelligenza artificiale apparentemente è impazzita e ha ucciso un essere umano, uno dei peggiori incubi dell’evoluzione tecnologica dell’uomo. La cosa come immagini ha creato grande scalpore e polemiche, provocando la sospensione di qualunque test su strada. 


In questo articolo, cerco di spiegarti in maniera semplice cosa è successo, di chi è precisamente la colpa (e non è quello che raccontano i giornali, neanche la stampa specializzata!), qual è l’errore di fondo e cosa c’entra un vecchio col cappello. 


Capirai perché tutto questo ha a che fare con i progetti software, con il gioco del poker e soprattutto comprenderai che, molto probabilmente, c’entri anche tu. Sì, proprio TU.


Ma andiamo con ordine. 

Read More
Sticky

Incidenti aerei del Boeing 737 MAX: le vere cause segrete

“A fool with a tool, is a more powerfool fool”

Oramai è sulla bocca di tutti: un secondo aereo 737 MAX della Boeing è caduto nel giro di pochi mesi in Etiopia, pochi mesi dopo quello di fine 2018 in Indonesia. A questo si è aggiunto poi un mancato incidente sullo stesso identico aereo etiope, il giorno prima, che è stato evitato per puro caso dall’intervento di pilota a riposo che si trovava per caso nello stesso aereo e che è corso in cabina per evitare una tragedia, fornendo una delle chiavi di volta per comprendere meglio le due tragedie.

Non è mia abitudine commentare incidenti appena avvenuti, perché le indagini per stabilirne le vere cause possono durare anche mesi: ma questa volta forse forse si sa già chi potrebbe essere il colpevole: infatti, in tutti gli incidenti sia quelli realmente accaduti che in quello mancato, si è evidenziato come i piloti stessero combattendo invano contro i sistemi a bordo del loro stesso aereo:  precisamente, lottavano contro un sistema “demoniaco” di stabilizzazione chiamato M.C.A.S., basato su un software di correzione delle manovre potenzialmente pericolose che paradossalmente ha contribuito a creare i presupposti delle due tragedie.

Bene, abbiamo finalmente il responsabile?

Il software ha veramente ammazzato centinaia di persone?

Gli aerei non sono più sicuri?

Forse, ma la realtà invece è molto diversa da quella che appare in prima istanza. E la lezione imparata oggi, può essere utile anche a te e alla tua azienda…

Seguimi in queste considerazioni in cui cercherò di non scendere troppo nel tecnico e vedrai che questa analisi ti sarà molto utile, qualunque tipo di software tu stia producendo.

Cosa è successo?

Allora, al di là del motivo originario per cui sia successo un fenomeno del genere, appare evidente dalle scatole nere e dall’episodio dell’incidente mancato che l’aereo sembrava essere completamente impazzito: dai cambi di quota repentini, dalle manovre effettuate dai piloti, dalle loro voci registrate nel cockpit sembrava proprio che l’avionica di bordo avesse deciso di puntare l’aereo con decisione verso terra, quasi a scansare un imminente pericolo.

Il problema è che questo pericolo non c’era e che puntare verso terra subito dopo il decollo, ancora a bassa quota e bassa velocità, è molto intuitivamente una cosa molto pericolosa… e se fatta in maniera repentina e più volte, può provocare una tale instabilità e perdita di quota da provocare i disastri poi avvenuti.

Ma perché quindi questo tipo specifico di aereo ogni tanto (troppo spesso!) impazzisce, fa quello che vuole, punta il muso verso terra ammazzando tutti? E perché i piloti sono impotenti in tutto questo?

Soprattutto: è vero che non potevano fare nulla per evitare il disastro? Qui ci sono molti, molti dubbi…

Aereo o bus?

Parte tutto da una famosa diatriba ben nota tra addetti ai lavori o appassionati di aerei: Boeing o Airbus?

Il motivo del contendere è un oggetto ben preciso: UN JOYSTICK.

Esatto: gli Airbus da molti anni non si guidano più con la classica cloche a due mani che tutti conoscono, ma con un joystick identico a quello dei videogiochi. Quando è stato introdotto il concetto di Fly-by-Wire, il controllo degli elementi di comando di un aereo tramite sistemi elettronico e non più solamente meccanico-idraulici, è stato un salto quantico, nella sensazione di guida di un aereo e nell’avionica in generale, con un sacco di critici e un crescente numero di appassionati, le cui opinioni ovviamente si ribaltano radicalmente nel momento in cui si parla del Boeing che invece ha una cloche di guida più tradizionale:

Ma anche l’avionica di un Airbus è molto diversa: per non farla troppo lunga e tecnica, esiste una cosa in tutti gli aerei chiamata “INVILUPPO”, che rappresenta una specie di cuscinetto di sicurezza intorno alla posizione dell’aereo, una zona di prudenza in cui il velivolo deve sempre trovarsi per essere in una condizione stabile senza rischi. Un insieme di dati complessi di velocità, inclinazione, accelerazione con dei limiti che non devono mai essere oltrepassati per non mettere in pericolo l’aereo stesso e il suo equipaggio.

Ecco, la grande differenza tra i due colossi dell’aria è che negli Airbus, l’avionica di bordo esercita un controllo molto forte  per assicurare che l’aereo si trovi sempre correttamente all’interno dell’inviluppo e che soprattutto evitare che il pilota faccia mai, neanche volontariamente, delle azioni o delle manovre pericolose, a meno di disabilitare volontariamente alcune funzionalità del cosiddetto “pilota automatico”.

Di fatto, l’aereo guida quasi sempre da solo, scegliendo in ogni condizione la manovra migliore per evitare (in teoria) qualunque tipo di problema. Questo fatto, secondo alcuni, rende i piloti di Airbus così abituati all’aereo che manovri quasi sempre da solo ed eviti autonomamente qualunque rischio, da diventare pigri e disimparare come si guida veramente un velivolo manualmente, tanto da essere chiamati “bus drivers”, guidatori di (Air)bus.

Un pilota Boeing invece, con la cloche tradizionale, prima di tutto ha una sensazione tattile e visiva di quello che sta facendo lui e il co-pilota, visto che le cloche si muovono insieme. Ma soprattutto, anche se alcuni sistemi elettronici di ausilio alla guida sono stati introdotti pure in questi aerei, può escludere istantaneamente il pilota automatico con una semplice pressione sui comandi più decisa del solito, e riprendere totale controllo dell’aereo. Questo significa ovviamente esserne anche capaci e infatti i piloti di Boeing normalmente vengono ritenuti più abili proprio a guidare l’aereo in maniera manuale e a “sentirne” il comportamento, visto che lo praticano molto più spesso, piuttosto che fidarsi e lasciarlo pilotare da solo.

In prima istanza, estremizzando verrebbe da dire che gli Airbus sono più sicuri perché automatici e i Boeing invece necessitano di piloti migliori… in maniera MOLTO superficiale, potremmo per un momento anche dire così.

Ok, ma… non è successo ESATTAMENTE il contrario? Non è stato un aereo Boeing a cadere e per colpa di un sistema automatico? Quindi il contrario di quello che uno si sarebbe aspettato, no?

Beh, ma è PROPRIO quello il problema…

Cos’è il M.C.A.S. e perché non è ancora il vero colpevole

Allora, il nuovo Boeing 737 MAX, come suggerisce il nome stesso, era la versione più grande dello stesso modello di aereo di grande successo e dalla grandissima affidabilità, dotato anche di più potenti.

Il problema è che la potenza dei motori, la loro posizione, i cambiamenti introdotti potevano creare delle situazioni di pericolo, di uscita dal famoso “inviluppo”, in particolari condizioni di volo a bassa velocità e angoli di volo elevati che potevano portare ad uno stallo del velivolo. Per evitare questo grave tipo di pericolo, la Boeing ha avuto la grandissima pensata (!!!) di introdurre un sistema anti-stallo elettronico chiamato M.C.A.S. (Maneuvering Characteristics Augmentation System), molto simile a quelli presenti negli aerei Airbus.

Lo scopo era preciso e anche lodevole, anche se diabolico nella sua attuazione: far volare senza pericolo il nuovo MAX ai piloti già addestrati con il vecchio 737 NG.

Sembra tutto ok, no? Un sistema per rendere i nuovi velivoli più sicuri… andando un po’ a inseguire Airbus nell’automatizzare i sistemi di volo e a ridurre il carico di lavoro e la richiesta di maggior abilità dei piloti.

Allora è vero che il software ha fallito? No: sono stati dei sensori.

La colpa è dei sensori… anzi no

Per funzionare, questo sistema M.C.A.S. ha bisogno, tra gli altri dati, dell’Angolo di Attacco (AoA) forniti da alcuni sensori… che detta in maniera molto semplice indicano l’inclinazione dell’aereo. Bene, sono stati questi dispositivi ad avere avuto un malfunzionamento e ad aver dato indicazioni del tutto errate che hanno fatto impazzire l’autopilota.

In poche parole, i sensori segnalavano che l’aereo si era impennato in maniera pericolosa… e cercavano di ributtare giù il muso. Peccato che non fosse vero, l’aereo stava volando dritto… e come in un vero incubo, il software di bordo continuava a far perdere quota all’aereo nonostante i ripetuti interventi del pilota per rialzarlo.

Vi immaginate che incubo? Siete alla guida di un aereo pieno di passeggeri che impazzisce e vuole precipitare verso terra… voi provate a raddrizzarlo per decine e decine di volte ma niente, punta inesorabile verso la morte.

Finalmente: colpa dei sensori? E no, c’è un motivo per il crash… e ancora una volta non sarà quello definitivo.

Un problema di soldi (o di progetto)

Questo sistema M.C.A.S.aveva in realtà a sua volta un meccanismo di diagnosi interna di tutte le sue componenti, inclusi questi sensori di angolo di attacco, chiamato DLC. Una volta che questo sistema avesse segnalato un problema, i piloti sapevano (in teoria…) che avrebbero dovuto disinserirlo (attenzione che torneremo su questo punto) e tornare a guidare in maniera manuale, come erano stati addestrati a fare.

Peccato che questo dispositivo fosse… opzionale e costoso, per cui alcune compagnie aeree più “povere”, non l’hanno acquistato. E guarda caso, sia gli aerei della flotta Indonesiana che di quella Etiope non erano dotati di questo sistema di diagnosi e di allarme, per cui i piloti si sono trovati in balia di un aereo che faceva di testa sua, inventandosi una situazione di pericolo che non c’era e anzi andandola a creare. Tutto questo per una questione di soldi.

Certo uno potrebbe dire: ma cavoli, in un sistema così delicato e potenzialmente salva-vita, non dovrebbe essere integrato di default un sistema di auto-diagnosi che vada a verificare che tutto funzioni correttamente, dai sensori agli attuatori, dai computer al display?

Per cui anche il costruttore ha le sue colpe… avrebbe dovuto rendere il nuovo sistema di guida automatico sicuro in tutte le situazioni, anche in quelle di guasto.

Facciamo il punto della situazione prima di annunciare chi è… il “maggiordomo”, il colpevole vero di questi tristissimi incidenti.

La catena di eventi scatenanti

Quindi, abbiamo questa catena di eventi che sembra piuttosto chiara:

  • l’aereo 737 MAX è più grande e monta motori più veloci di quelli precedenti
  • essendo più potente, potrebbe creare situazioni in cui l’impennata del muso provocherebbe situazioni di grave instabilità di volo (stallo)
  • per evitare questo problema ed evitare stress (e nuovo addestramento) ai piloti, è stato introdotto un sistema anti-stallo chiamato M.C.A.S.
  • i sensori dell’Angolo di Attacco (A.o.A.) erano guasti e fornendo informazioni inventate, facevano intervenire a sproposito il M.C.A.S. facendo precipitare l’aereo nonostante le correzioni disperate dei piloti
  • esisteva un sistema di diagnostica di tali sensori che avrebbe avvertito i piloti di disinserire il M.C.A.S.  ma le compagnie aeree indonesiani ed etiope non l’hanno comprato perché troppo caro

Sembra tutto chiaro, ma io come in un giallo ho disseminato degli indizi per il colpevole finale, quello vero.

Infatti, se sei stato attento, ti sarà venuta in mente la domanda fatidica:

Perché i piloti non hanno disinserito il M.C.A.S.?

Eh già, questa è la VERA domanda. Quella fatidica.

La possibilità di disinserire quella trappola mortale c’era, ma i piloti non l’hanno utilizzata nei due voli fatidici. Mentre nel volo etiope del giorno precedente, un pilota a riposo tra i passeggeri ha capito cosa stava succedendo e si è precipitato in cabina per salvare piloti, aereo e passeggeri. Un eroe? No: semplicemente UN PILOTA INFORMATO E ADDESTRATO.

Infatti, i piloti di entrambi gli aerei precipitati, così come molti altri piloti Boeing in giro per il mondo, avevano uno o più di questi gravi problemi di addestramento:

  • NON SAPEVANO CHE ERA STATO INTRODOTTO IL M.C.A.S.
  • NON SAPEVANO COME FUNZIONAVA E QUANDO SCATTAVA
  • NON NE CONOSCEVANO LE REAZIONI ANOMALE IN CASO DI GUASTO
  • NON SAPEVANO NEANCHE COME DISINSERIRLO!!

Vabbè, dirai, cose da PAZZI!! Sembra una follia totale, un film horror, sapere che banalizzando,

bastava schiacciare un bottone, premere un pulsante per disinserire il software mortale M.C.A.S.

Brivido di terrore.

E veniamo all’ultimissima domanda: perché i piloti non sono stati addestrati??

La fretta di arrivare sul mercato

Esatto: è presto per la conferma definitiva, ma sembra che il mancato o scarso addestramento sia stata una strategia precisa per far diventare velocemente operativi i nuovi piloti sul mercato.

Infatti, alcune voci di CBS News raccontano che

ai piloti sono stati fatti soltanto 56 minuti di formazione su un iPAD per il nuovo 737 MAX

Allucinante.

Hanno preso un aereo sicuro, storicamente affidabile, dei piloti bravi e competenti, che sapevano pilotare in condizioni anche rischiose in modalità manuale… e gli hanno infilato dentro un nuovo sistema, un software, un “tool” che doveva rendere la loro vita più facile, ma li ha ammazzati perché non ne sapevano niente. Roba che mi provoca i brividi freddi solo a pensarci.

Ancora una volta, così come per il sistema di diagnosi DLC non acquistato, per risparmiare i costi… i tempi… per comprimere il famigerato TTM (Time to Market), il vero killer di queste due tragedie.

E tu? Lo sai benissimo, se hai letto altri articoli miei, che ti tirerò in mezzo con una bella “lezione” su quanto appreso oggi da applicare alla tua azienda.

La (mancanza di) cultura uccide

Pensaci un attimo, quante volte nella tua azienda, nel tuo team per problemi di budget e/o di tempo:

  • hai introdotto dei cambiamenti in azienda senza informare tutti?
  • hai acquistato un tool senza comprare il corso adeguato?
  • hai cambiato delle procedure senza informare e formare tutte le persone coinvolte?
  • hai magari migliorato dei processi ma senza coinvolgere chi ne era affetto?

Ecco: tutte queste volte, tu hai potenzialmente corso il rischio di:

  • di AMMAZZARE I TUOI CLIENTI, se il tuo software è SAFETY-CRITICAL
  • di FAR FALLIRE I TUOI CLIENTI (E TU CON LORO), se il tuo sistema è BUSINESS-CRITICAL

Conclusioni

Ti è piaciuto questo articolo? Scopri la mia newsletter gratuita dove periodicamente troverai:

  • analisi dettagliate di incidenti critici (apparentemente) causati dal software
  • strategie ottimali per produrre software Safety- e Business-Critical
  • consigli su come adottare delle tecniche sicure ed efficaci nei tuoi progetti

Lascia la tua email per avere immediatamente accesso alla mia newsletter:

Corso di Certificazione Avionica DO-178C – Roma 14-16 Novembre

AGILE e DO-178: un matrimonio (im)perfetto?

Corso di Certificazione Avionica DO-178C

Roma 14-16 Novembre

 

Sei uno sviluppatore di codice Safety-Critical?

Sei il manager di un team di sviluppo di un’azienda aerospaziale, automotive, medicale?

Hai un’azienda che vorrebbe debuttare nel difficile settore del software certificato?

 

In questo breve video ti spiego alcuni concetti fondamentali, che verranno ampliati durante il corso completo di 3 giorni sulla Certificazione Avionica che si terrà il 14-15-16 Novembre 2018 a Roma.

 

Cosa imparerai da questo corso

Imparerai da esperti a livello mondiale come Vance Hilderman, una delle principali autorità della certificazione

aerospaziale DO-178 e da Massimo Bombino, colui che è riuscito con successo ad applicare le metodologie di sviluppo del codice più efficienti e moderne al software Safety Critical, come fare a:

Read More

Sicurezza di prodotto o di processo?

Se passi davanti a un negozio IKEA, può capitare di trovare questo strano dispositivo:


 

È una scatola di plexiglas trasparente, contenente una poltrona IKEA, uno strano braccio robotico con due grandi pistoni che spingono la sedia e un contatore. È una specie di esperimento di simulazione di una persona di 80 kg. seduto e in piedi, ripetuto per migliaia e migliaia di volte.

Probabilmente hai guardato il bancone, hai visto un numero come 999.999-1.000.000- … e hai fatto un po’ di matematica mentale

“Probabilmente io e la mia famiglia potremmo sederci e alzarci in media 10 volte al giorno, 3.650 totali all’anno … quindi questo la sedia durerà almeno 300 anni “

E con la giusta fiducia nella sua robustezza, hai deciso di comprarla.

Ora pensiamo a un software critico per la sicurezza: ti potrebbe essere richiesto di certificare secondo il severo standard DO-178C, fino al livello A. Bene, guardando questa o altre normative di sicurezza correlate, potresti trovare che associato al livello A, hai una probabilità di errore 10E-9 ore di volo. Ok, ancora matematica… significa:

1 miliardo di ore senza problemi, o meglio 11.574 anni

Undicimila anni! Sembra abbastanza buono, non è vero? Tranne il fatto che… per il software, in realtà non funziona così. Cosa significa veramente DAL-A? Letteralmente, significa Design Assurance Level: garanzia del DESIGN.

Ma la vera probabilità di un guasto del software è molto più alta … alcuni esperti dicono che la probabilità è 1 ovvero il 100%! Potresti essere abbastanza sicuro che il tuo software fallirà! Pensa al tuo sistema operativo desktop o mobile … puoi immaginare un’app per il tuo smartphone o computer che resista migliaia di anni senza crash o bug?

E pensi che il software avionico possa essere reso così solido per millenni? Possa davvero essere rilasciato fin dall’inizio totalmente senza bug?

NON E’ COSI’

ed ora ti spiego perché.

Read More

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.

Read More

SOFTWARE DA INCUBO!

 

“Siamo in ritardo per colpa del software”

“Dovremmo adottare un nuovo processo di sviluppo ma non abbiamo il tempo”

“Un tool molto interessante ma non c’è budget, mi spiace”

“ Il nostro metodo di sviluppo software è molto artigianale”

“Non abbiamo tempo di testare perché dobbiamo uscire col prodotto”

“Il test è noioso e costoso, dobbiamo tagliare i tempi”

“Vogliamo stare concentrati sul nostro core-business”

“Dobbiamo richiamare 10.000 unità dal mercato per un problema”

“Alcune persone si sono ferite utilizzando il nostro dispositivo”

“I parenti dei nostri clienti vittime di incidenti con i nostri veicoli si sono organizzati in una class-action”

 

Se qualcuna di queste frasi ti è nota perché è girata nella tua azienda o in quella di un tuo concorrente, oppure se il solo sentirla ti fa venire un brivido freddo: allora questo blog è per te.

Read More

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