Il soft­ware del 737: quan­do un baco met­te a rischio le vite

Quan­do ho comin­cia­to a scri­ve­re soft­ware, qua­si 45 anni fa, esi­ste­va il lin­guag­gio mac­chi­na e poco di più: For­tran, Basic, Pascal, C. L’ap­pli­ca­zio­ne era abba­stan­za ristret­ta ad ambien­ti scien­ti­fi­ci, didat­ti­ci e com­mer­cia­li. Tec­ni­ca­men­te par­lan­do la distan­za tra uomo e mac­chi­na era mol­to più ridot­ta allo­ra e, per fare un esem­pio, i con­trol­li fly-by-wire sugli aerei era­no da pochi anni pre­sen­ti su aerei com­mer­cia­li e peral­tro comun­que anco­ra sot­to il con­trol­lo tota­le dei pilo­ti. Nel tem­po ovvia­men­te la tec­no­lo­gia elet­tro­ni­ca e l’in­for­ma­ti­ca avia­to­ria  (in bre­ve: navio­ni­ca), si sono evo­lu­te a gran­de velo­ci­tà e nel­lo stes­so modo è cre­sciu­ta la fidu­cia in taa­li siste­mi di con­trol­lo da par­te degli esse­ri umani.

Ad oggi non esi­ste un aereo che non sia con­trol­la­to da soft­ware, ovvia­men­te dedi­ca­to, in qua­si ogni fun­zio­ne. La cre­sci­ta del­la poten­za di cal­co­lo e la ridu­zio­ne con­co­mi­tan­te di spa­zi, peso e volu­mi degli ela­bo­ra­to­ri ha por­ta­to ad una sem­pre mag­gio­re distan­za tra uomo e mac­chi­na, qual­co­sa di indub­bia­men­te uti­le e pre­zio­so, sen­za cui oggi mol­ti aerei fareb­be­ro dav­ve­ro fati­ca a volare.

Ma… anche per la tec­no­lo­gia esi­sto­no sem­pre due fac­ce del­la stes­sa meda­glia, come di han­no dimo­stra­to le recen­ti, mul­ti­ple disgra­zie occor­se ai veli­vo­li pre­ci­pi­ta­ti a cau­sa di un difet­to di pro­get­ta­zio­ne del soft­ware, i Boeing 737.

La cau­sa, ormai cre­do ampia­men­te asso­da­ta di que­sti inci­den­ti è in un soft­ware che pren­de il con­trol­lo del­l’ae­reo, in par­ti­co­la­re per gesti­re velo­ci­tà e ango­lo di attac­co, due infor­ma­zio­ni che pro­ven­go­no da altret­tan­ti sen­so­ri e che sono vita­li per man­te­ne­re un aereo in volo.

In paro­le sem­pli­ci, un aereo vola gra­zie alla cosid­det­ta “por­tan­za”, ovve­ro alla dif­fe­ren­za tra le pres­sio­ni del­l’a­ria sopra e sot­to l’a­la. Quan­do la pres­sio­ne sul­la super­fi­cie infe­rio­re è mag­gio­re di quel­la sul­la super­fi­cie supe­rio­re e la dif­fe­ren­za tra le due è suf­fi­cien­te a com­pen­sa­re il peso del­l’ae­reo, ecco che que­sto “decol­la”.  Sen­za scen­de­re trop­po in par­ti­co­la­ri di cui non sono par­ti­co­lar­men­te fer­ra­to, dicia­mo che mag­gio­re è la velo­ci­tà di un aereo, mag­gio­re è la por­tan­za. La velo­ci­tà di cui par­lia­mo però non è stret­ta­men­te rife­ri­ta al suo­lo, quan­to a quel­la rela­ti­va nel­l’a­ria. Quin­di, come sa chiun­que abbia fat­to vola­re un aqui­lo­ne, con un ven­to con­tra­rio alla dire­zio­ne di moto, è suf­fi­cien­te una velo­ci­tà rela­ti­va al suo­lo infe­rio­re, in quan­to il ven­to che si muo­ve con­tro l’ae­reo va a som­ma­re la pro­pria velo­ci­tà a quel­la del­l’ae­reo che si muo­ve appun­to in dire­zio­ne con­tra­ria. Per que­sto moti­vo (e per tan­ti altri), mol­to spes­so è suf­fi­cien­te una velo­ci­tà infe­rio­re a quel­la nomi­na­le per con­sen­ti­re un decol­lo o un volo.

L’al­tra gran­dez­za che entra in azio­ne è pro­prio l’an­go­lo di attac­co, ovve­ro l’an­go­lo con cui il veli­vo­lo affron­ta la sua “sali­ta” nel­l’a­ria, una dimen­sio­ne che va ad influen­za­re for­te­men­te la por­tan­za, deter­mi­nan­do un diver­so flus­so di aria intor­no alle super­fi­ci alari.

Il soft­ware che ha cau­sa­to gli inci­den­ti sui 737 pare aves­se un serio pro­ble­ma di cal­co­lo pro­prio nel con­si­de­ra­re il ven­to rela­ti­vo e la velo­ci­tà rispet­to al suo­lo, cal­co­lan­do in modo erro­neo la velo­ci­tà mini­ma di sosten­ta­men­to pro­prio per­chè non tene­va in ade­gua­ta con­si­de­ra­zio­ne la velo­ci­tà del ven­to rispet­to all’ae­reo. Sul­la base di que­sti cal­co­li erra­ti il soft­ware sareb­be inter­ve­nu­to sul­l’an­go­lo di attac­co in modo total­men­te incon­trol­la­bi­le dai pilo­ti, cosa che ha deter­mi­na­to lo schian­to dell’aereo.

Un erro­re di pro­get­ta­zio­ne del soft­ware anche mar­chia­no se voglia­mo, ma che non sapre­mo mai da cosa sia sta­to dav­ve­ro cau­sa­to, se da una incom­pe­ten­za nel cam­po degli ana­li­sti che han­no redat­to le spe­ci­fi­che o se da un’er­ra­ta scrit­tu­ra da par­te dei pro­gram­ma­to­ri. Fat­to sta che, qua­lo­ra fos­se dav­ve­ro quel­lo ipo­tiz­za­to il pro­ble­ma, non si trat­te­reb­be di un erro­re da poco, e comun­que total­men­te umano.

Per­chè ricor­dia­mo­ci che, per quan­to com­ples­so, il soft­ware vie­ne sem­pre scrit­to da esse­ri uma­ni. Ma se a fal­li­re è quel­lo di un tele­fo­no, al mas­si­mo potre­mo non riu­sci­re a comu­ni­ca­re in deter­mi­na­te occa­sio­ni. Quan­do a fal­li­re è inve­ce un siste­ma di con­trol­lo del volo pur­trop­po, come si è visto, la gen­te muore.

Con il cre­sce­re del­la pene­tra­zio­ne del soft­ware all’in­ter­no del­le atti­vi­tà uma­ne, cre­sce obbli­ga­to­ria­men­te la respon­sa­bi­li­tà di chi lo scri­ve e pro­get­ta, così come cre­sce la pos­si­bi­li­tà di inte­ra­zio­ni sco­no­sciu­te tra soft­ware maga­ri pro­dot­ti da socie­tà diverse.

Mol­ti anni fa, per fare un esem­pio, nel­l’e­po­ca del­lo “scu­do stel­la­re” for­te­men­te volu­to dal­l’am­mi­ni­stra­zio­ne ame­ri­ca­na, uno dei pri­mi espe­ri­men­ti per veri­fi­ca­re se un rag­gio laser di suf­fi­cien­te poten­za pote­va esse­re usa­to per inter­cet­ta­re un mis­si­le bali­sti­co, accad­de un epi­so­dio al limi­te del­l’as­sur­do che for­tu­na­ta­men­te non ebbe con­se­guen­ze, se non copri­re di ridi­co­lo la squa­dra ce se n’e­ra occu­pa­ta. L’e­spe­ri­men­to infat­ti con­si­ste­va nel col­pi­re con un laser pro­iet­ta­to da ter­ra (a sostan­zial­men­te bas­sa poten­za, appun­to per evi­ta­re peri­co­li) uno spec­chio posto su uno shut­tle in orbi­ta. In bre­ve, l’e­spe­ri­men­to fal­lì mise­ra­men­te e il laser non si avvi­ci­nò nep­pu­re al ber­sa­glio. Nel­l’a­na­liz­za­re i moti­vi per cui ciò fos­se acca­du­to, si ven­ne a sco­pri­re che il soft­ware di con­trol­lo era sta­ta svi­lup­pa­to da Eser­ci­to e Mari­na, che si era­no occu­pa­ti di due aspet­ti diver­si del­la pro­get­ta­zio­ne. Orbe­ne, il pro­ble­ma, facil­men­te indi­vi­dua­to con poche ana­li­si, era che la par­te svi­lup­pa­ta dal­l’E­ser­ci­to “ragio­na­va” in miglia ter­re­stri, men­tre quel­la svi­lup­pa­ta dal­la Mari­na ragio­na­va in miglia appun­to mari­ne… se si con­si­de­ra che un miglio ter­re­stre cor­ri­spon­de a cir­ca 1610 metri men­tre quel­lo mari­no a 1852 metri, il moti­vo del fal­li­men­to risul­ta imme­dia­ta­men­te chiaro.

Un erro­re anco­ra scioc­co, se visto a poste­rio­ri ma con­cet­tual­men­te simi­le a quel­lo del siste­ma di con­trol­lo dei 737: in entram­bi i casi è sta­to dato per scon­ta­to qual­co­sa che non lo è affatto.

In buo­na sostan­za: que­stio­ne di consapevolezza.