Kako izbjeći probleme sa softverom
Miscelanea / / November 29, 2021
U ovoj digitalnoj eri sigurno ste čuli za gigante društvenih medija kao što su Facebook i Twitter te platforme za e-trgovinu kao što su Alibaba i Amazon. Ove internetske web stranice oslanjaju se na različite softverske pakete za svoj rad. Ti su programi sasvim iskreno promijenili način na koji radimo, razmišljamo i živimo.
Osim toga, mnogi uređaji koji su ranije bili isključivo mehaničke prirode, sada su kontrolirani softverom. Na primjer, termostati su nekoć bili elektromehanički uređaji. Međutim, sada se uvelike oslanjaju na softver za rad.
Međutim, softverske greške može biti prilično problematično, posebno s našim povećanim oslanjanjem na njih u svakodnevnim aktivnostima. Zapravo, bilo je dosta slučajeva u kojima softver nije ispunio svoju namjenu, što je dovelo do neugodnih rezultata.
U ovom članku govorimo o 4 slučaja u kojima je izvedba softvera uglavnom promašila svoj cilj i kako izbjeći takve probleme sa softverom.
1. Ispad 911 u više država u SAD-u
911 je kritična usluga koja omogućuje pojedincima da kontaktiraju hitno osoblje kad god je to potrebno. Ponekad, kontaktiranje s dispečerima hitne pomoći putem 911 može doslovno napraviti razliku između života i smrti.
Stoga je bila prava katastrofa kada je 09.04.2014. Preusmjeravanje poziva 911 nije uspjelo u sedam američkih država, uključujući Kaliforniju, Floridu, Minnesotu, Sjevernu Karolinu, Pennsylvaniju, Južnu Karolinu i Washington.
Ovaj prekid je uzrokovan pogreškom kodiranja koja se može spriječiti, a koja se dogodila u centru za upravljanje hitnim pozivima u Coloradu koji je bio u vlasništvu Intrada.
2. Prizemljenje flote United Airlinesa
U srpnju 2015. United Airlines je bio prisiljen prizemljio cijelu svoju flotu zrakoplova zbog softverske greške. To je utjecalo na više od 4.900 letova diljem svijeta i ostavilo mnoge putnike na cjedilu u zračnim lukama i prilično očito frustrirane.
Vjerojatno je postojao i ekonomski učinak jer bi zračni prijevoznik mnogim putnicima morao nadoknaditi neugodnost. Vjerojatno je bilo i nekoliko važnih poslovnih sastanaka koji su bili neuspješni zbog uzemljenja.
3. Neispravnost papučice gasa Toyota Camry
U rujnu 2007. Jean Bookout je putovala međudržavnom autocestom 69 u Oklahomi sa putnicom Barbarom Schwarz, kada je naišla na poteškoće kontrolirajući svoju Toyotu Camry.
Pokušala je podići noge s gasa, ali je auto nastavio ubrzavati. Pedala kočnice nije uspjela zaustaviti automobil i bila je prisiljena upotrijebiti kočnicu u nuždi.
Nažalost, zbog toga je automobil zaletio u nasip. Schwarz je od posljedica preminuo, a Bookout je bio hospitaliziran na pet mjeseci zbog kritičnih ozljeda.
Nagađalo se da se nesreća dogodila zbog nekoliko neadekvatnosti kodiranja koje su dovele do pada zadatka u CPU-u Camryja. Ovaj CPU bi kontrolirao neizmjerno velik broj funkcija, uključujući paljenje, kontrolu gasa i tempomat.
Toyotin kod postao je zamršen nered nakon nekoliko godina novih kodova koji su se gomilali na stare. To se obično naziva 'špageti kod'.
Međutim, Bookoutova nesreća iznijela je ovaj problem na svjetlo dana i istaknula Toyotine nedostatke u njihovom softverskom procesu. Čak je utvrđeno da postoji više od 10 milijuna načina za moguće neželjeno ubrzanje, na temelju načina na koji je Toyotin kod strukturiran.
Kvar Nest termostata
Nest je tvrtka, u vlasništvu Alphabet, koji proizvodi pametne termostate. Ovi termostati su prilično zgodni i omogućuju korisnicima da kontroliraju temperaturu u svojim domovima sa svojih pametnih telefona.
Prošle zime, Nest termostati doživjela grešku u obliku neispravnog ažuriranja softvera, zbog čega su im se ispraznile baterije. Nažalost, ova se pogreška dogodila usred zime, pa je nekoliko korisnika privremeno ostalo bez grijanja. Ovo je definitivno nešto što ne želite da se dogodi u ovo doba godine.
Kratka analiza softverskih problema
Pristupi poput dizajna temeljenog na modelu i TLA+ omogućuju programerima da steknu širu sliku o tome kako njihov softver radi.
Brett Victor, istaknuti računalni istraživač, smatra da postoji prekid veze između programera i problema koje pokušavaju riješiti kodovima.
Zbog ovog prekida, programerima postaje teško zamisliti što pokušavaju staviti u kodove. Victor misli da je to jedan od čimbenika koji doprinose tome da softver prepun bugova.
Međutim, ima nade. Pristupi kao npr dizajn na temelju modela i TLA+ omogućuju programerima da steknu širu sliku o tome kako njihov softver radi.
Dizajn baziran na modelu, kao što samo ime govori, omogućuje razvoj softvera putem vizualnih modela. TLA+, što je skraćenica od Temporal Logic of Actions, jezik je dizajniran za pisanje specifikacija računalnog programa. Ono što je sjajno kod TLA+ je to što omogućuje iscrpno testiranje i provjeru softvera prije nego što bude objavljen.
I dizajn baziran na modelu i TLA+ već su dokazali svoju sol. Esterel tehnologije, tvrtka za razvoj softvera, koristi dizajn zasnovan na modelu za izradu sigurnosno kritičnog softvera, dok su TLA+ koristili ljudi poput Microsoft će popraviti moguću katastrofalnu pogrešku Xboxa, a Europska svemirska agencija prepisati kodove za sondu koja je sletjela na kometa.
Programeri visoko cijene proces pisanja koda. Mnogi od njih su jednostavno zaintrigirani procesom pisanja kodova. Stoga je izazov navesti neke programere da prihvate pristupe poput dizajna temeljenog na modelu i TLA+. Ovi se pristupi često doživljavaju kao strogo akademski bez održivosti u stvarnom svijetu. Međutim, promjena gledišta mora doći što je prije moguće.
Završne misli
Softver se sve više koristi u aplikacijama koje zahtijevaju ugrađene sigurnosne mjere. Bolje metode dizajniranja softvera moraju se uvesti u cijelosti jer su takve aplikacije vitalne u našim životima.
Procesi poput automatizacije danas se uvelike oslanjaju na softver, ali jedna greška u retku koda može nas dovesti do velikih zastoja kao što pokazuju gornji primjeri.
Sada zamislite da je nešto poput umjetne inteligencije (AI) ugrađeno u ove aplikacije. AI je dovoljno zastrašujuća sama po sebi bez softverskih grešaka. Dodajte bugove u mješavinu i nema pojma što bi se moglo dogoditi.
Međutim, ovdje postoji srebrna podloga. Uz malo rada i neke nove alate, možemo napraviti bolji softver i umjetnu inteligenciju tako da ga bolje dizajniramo i testiramo na njegovim spojnicama.
Nadajmo se da će nadležna tijela ozbiljno shvatiti ovo kritično pitanje kako bismo mogli koristiti softver u punom potencijalu, ali samo za izgradnju sigurnije i pametnije budućnosti.