Kako se izogniti težavam s programsko opremo
Miscellanea / / November 29, 2021
V tej digitalni dobi ste zagotovo že slišali za velikane družbenih medijev, kot sta Facebook in Twitter, ter platforme za e-trgovino, kot sta Alibaba in Amazon. Ta spletna mesta se za svoje delovanje zanašajo na različne programske pakete. Ti programi so odkrito spremenili naš način dela, razmišljanja in življenja.
Poleg tega so številne naprave, ki so bile prej izključno mehanske narave, zdaj nadzorovane s programsko opremo. Na primer, termostati so bili nekoč elektromehanske naprave. Vendar se zdaj za delovanje močno zanašajo na programsko opremo.
Vendar pa programske napake je lahko precej problematična, zlasti če se nanje vedno bolj zanašamo pri vsakodnevnih dejavnostih. Pravzaprav je bilo kar nekaj primerov, ko programska oprema ni dosegla svojega predvidenega namena, kar je povzročilo neprijetne rezultate.
V tem članku govorimo o 4 primerih, ko je zmogljivost programske opreme v veliki meri zgrešila svoj cilj in kako se izogniti takšnim težavam s programsko opremo.
1. Izpad 911 v več državah v ZDA
911 je kritična storitev, ki omogoča posameznikom, da stopijo v stik z osebjem za nujne primere, kadar koli je to potrebno. Včasih lahko vzpostavitev stika z dispečerji za nujne primere prek 911 dobesedno naredi razliko med življenjem in smrtjo.
Zato je bila prava katastrofa, ko je 9. aprila 2014 Usmerjanje klica 911 ni uspelo v sedmih zveznih državah ZDA, vključno s Kalifornijo, Florido, Minnesoto, Severno Karolino, Pensilvanijo, Južno Karolino in Washingtonom.
Ta izpad je povzročila napaka pri kodiranju, ki jo je bilo mogoče preprečiti, do katere je prišlo v centru za upravljanje klicev v sili v Koloradu, ki je bil v lasti Intrada.
2. Prizemljitev flote United Airlines
Julija 2015 je bil United Airlines prisiljen prizemljil celotno floto letala zaradi napake v programski opremi. To je prizadelo več kot 4900 letov po vsem svetu in pustilo številne potnike na letališčih nasedlih in očitno razočaranih.
Verjetno je bil tudi gospodarski učinek, saj bi morala letalska družba številnim potnikom nadomestiti nevšečnosti. Verjetno je bilo tudi več pomembnih poslovnih sestankov, ki so se zaradi ozemljitve zapletli.
3. Okvara pedala za plin Toyota Camry
Septembra 2007 je Jean Bookout potovala po meddržavni avtocesti 69 v Oklahomi s sopotnico Barbaro Schwarz, ko je naletela na težave nadzoruje svojo Toyota Camry.
Poskušala je dvigniti noge z plina, vendar je avto še naprej pospeševal. Zavorni pedal ni uspel ustaviti avtomobila in je bila prisiljena uporabiti zasilno zavoro.
Žal je to povzročilo, da je avto zapeljal v nasip. Schwarz je zaradi tega umrl, Bookout pa je bil zaradi kritičnih poškodb pet mesecev hospitaliziran.
Špekuliralo se je, da se je nesreča zgodila zaradi več neustreznosti kodiranja, ki so privedle do zrušitve naloge v CPU Camryja. Ta CPU bi nadzoroval izjemno veliko število funkcij, vključno z vžigom, nadzorom plina in tempomatom.
Toyotina koda je postala zapletena zmešnjava po več letih, ko so nove kode nalagale na stare. To se običajno imenuje 'špageti koda'.
Vendar je Bookoutova nesreča to težavo prinesla na svetlobo in poudarila Toyotine pomanjkljivosti v njihovem procesu programske opreme. Ugotovljeno je bilo celo, da obstaja več kot 10 milijonov načinov za lahko pride do neželenega pospeševanja, na podlagi načina, kako je bila strukturirana Toyotina koda.
Napaka termostata Nest
Nest je podjetje, v lasti Alphabet, ki izdeluje pametne termostate. Ti termostati so precej izvrstni in uporabnikom omogočajo nadzor temperature v svojih domovih s pametnih telefonov.
Lansko zimo, Nest termostati doživela napako v obliki napačne posodobitve programske opreme, zaradi katere so se njihove baterije izpraznile. Žal se je ta napaka zgodila sredi zime, zaradi česar je več uporabnikov začasno ostalo brez ogrevanja. To je vsekakor nekaj, česar ne želite, da se zgodi v tem letnem času.
Kratka analiza težav s programsko opremo
Pristopi, kot sta oblikovanje na podlagi modelov in TLA+, omogočajo razvijalcem, da dobijo širši pregled nad tem, kako deluje njihova programska oprema.
Brett Victor, ugledni računalniški raziskovalec, meni, da obstaja prekinitev povezave med programerji in težavami, ki jih poskušajo rešiti s kodami.
Zaradi te prekinitve povezave si programerji težko predstavljajo, kaj poskušajo vnesti v kode. Victor meni, da je to eden od dejavnikov, ki prispevajo k temu, da je programska oprema polna napak.
Vendar pa obstaja upanje. Pristopi kot npr oblikovanje na podlagi modela in TLA+ omogočajo razvijalcem, da dobijo širši pregled nad tem, kako deluje njihova programska oprema.
Modelno zasnovano oblikovanje, kot že ime pove, omogoča razvoj programske opreme prek vizualnih modelov. TLA+, kar pomeni časovna logika dejanj, je jezik, zasnovan za pisanje specifikacij računalniškega programa. Kar je super pri TLA+ je, da omogoča izčrpno testiranje in preverjanje programske opreme, preden se objavi.
Tako modelno zasnovana zasnova kot TLA+ sta se že izkazala. Esterel tehnologije, podjetje za razvoj programske opreme, uporablja zasnovo, ki temelji na modelu, za izdelavo varnostno kritične programske opreme, medtem ko so TLA+ uporabljali podobni Microsoft naj popravi morebitno katastrofalno napako Xbox, Evropska vesoljska agencija pa prepiše kode za sondo, ki je pristala na komet.
Proces pisanja kode programerji zelo cenijo. Mnogi od njih so preprosto navdušeni nad postopkom pisanja kod. Zato je izziv pridobiti nekatere programerje, da sprejmejo pristope, kot sta načrtovanje na podlagi modela in TLA+. Ti pristopi se pogosto dojemajo kot strogo akademski brez realnega preživetja. Vendar pa mora sprememba stališča priti čim prej.
Končne misli
Programska oprema se vse pogosteje uporablja v aplikacijah, ki zahtevajo vgrajene varnostne ukrepe. Boljše metode oblikovanja programske opreme je treba uvesti povsod, saj so takšne aplikacije bistvenega pomena v našem življenju.
Procesi, kot je avtomatizacija, so danes v veliki meri odvisni od programske opreme, vendar nas ena napaka v vrstici kode lahko privede do večjih napak, kot kažejo zgornji primeri.
Zdaj si predstavljajte, da je nekaj takega kot umetna inteligenca (AI) vključeno v te aplikacije. AI je sama po sebi dovolj strašljiva brez programskih napak. Dodajte hrošče v mešanico in ni jasno, kaj bi se lahko zgodilo.
Vendar pa je tukaj srebrna podloga. Z malo dela in nekaj novimi orodji lahko naredimo boljšo programsko opremo in umetno inteligenco, tako da jo bolj trdno oblikujemo in preizkusimo na njenih čepih.
Upajmo, da bodo zadevni organi to kritično vprašanje vzeli resno, da bomo lahko programsko opremo uporabili v celoti, vendar le za gradnjo varnejše in pametnejše prihodnosti.