Mistakes in Programming that Cost Lives, Time, and Money

Computersystemen drijven de moderne wereld aan, wat er soms toe leidt dat technische storingen de oorzaak zijn van fatale ongelukken in de fysieke omgeving. Dergelijke storingen zijn doorgaans het gevolg van menselijke fouten bij engineering, berekeningen, softwareontwikkeling en testen.

Hier zijn de meest sprekende programmeerfouten en spraakmakende gevallen van over de hele wereld die het belang van het bieden van kwaliteitsborging van software bewijzen. We groeperen de incidenten op hun kosten, of het nu tijd, geld of levens betreft.

Tijd & Geld

We weten allemaal dat “tijd geld is”, dus softwarefouten die tijd kosten, leiden onvermijdelijk tot financiële verliezen.

USS Yorktown

Het incident vond plaats in 1997 toen de Amerikaanse vliegdekschip USS Yorktown de controle over zijn voortstuwingssysteem verloor door de uitschakeling van alle machines in het systeem. Het bleek dat de systeembeheerder een waarde van 0 in de database had ingevoerd voor een van de parameters bij het proberen een brandstofklep te repareren. Toen de systemen probeerden deze variabele te gebruiken, veroorzaakte dit deling door 0. Het schip kwam volledig stil te liggen en het duurde twee uur en achtenveertig minuten om de systemen opnieuw op te starten en weer operationeel te krijgen.

LA-luchthaven

In 2004 verloor de verkeersleidingskamer van de luchthaven van Los Angeles het spraakcontact met meer dan 800 vliegtuigen, en het back-up communicatiesysteem was ook uitgeschakeld. Dit gebeurde vanwege de ticker timer die diende om berichten te identificeren en te synchroniseren. Het begon met het hoogste getal 2 tot 32 graden, en elk nieuw bericht verminderde de timer met 1. Toen het aantal tickers 0 bereikte, bleek dat het systeem geen berichten meer kon versturen. Nu vereist de veiligheidsprocedure op de luchthaven dat het systeem elke 30 dagen opnieuw wordt opgestart, aangezien het 50 dagen duurt om 2 tot 32 graden berichten te verzenden. Helaas kwam deze kennis met aanzienlijke kosten in geld en middelen.

Patriot missile

Het incident gebeurde in 1991 toen het Patriot-systeem een raket gelanceerd door de strijdkrachten van Saddam Hussein niet kon onderscheppen. De raket trof de barakken van Amerikaanse soldaten, wat leidde tot 28 doden. Bij het overzetten van tijd maakten 24-bits interceptorprocessors elke uur een fout van 0,013 seconden, waardoor de Patriot een verkeerde berekening van de positie van de raket kreeg, gelijk aan 600 meter na meer dan 100 uur werken zonder systeemherstart.

Ariane 5

Deze fout kostte 7 miljard dollar en wordt beschouwd als een van de duurste softwarefouten in de programmeergeschiedenis. In 1996 zou de draagraket Ariane 5 verschillende satellieten en andere apparatuur in een baan om de aarde brengen, maar explodeerde onmiddellijk na de lancering vanwege een fout in de boordcomputer software. Een van de systeemmodules probeerde een 64-bits floating-point getal om te zetten naar een 16-bits integer. De waarde was te groot en paste niet in 16 bits, wat een overflow veroorzaakte. De hoofd- en back-upcomputers hadden dezelfde software, dus ze werkten op dezelfde manier.

Mariner 1

Mariner 1 is een ruimteschip dat in 1962 een missie had om langs Venus te vliegen, maar nauwelijks uit Cape Canaveral kwam. Een programmeerfout zorgde ervoor dat de raket van koers afweek, waardoor dreigde dat deze zou neerstorten. Als gevolg hiervan moesten NASA-ingenieurs een zelfvernietigingscommando geven. De financiële verliezen bedroegen naar verluidt meer dan 18 miljoen dollar.

Levens

Hieronder staan de gevallen waarbij technische storingen veel meer hebben gekost dan alleen tijd en geld. Het lijkt misschien surrealistisch, maar zelfs kleine programmeerfouten kunnen leiden tot de dood van mensen.

Joshua Brown-zaak

Mensen zijn momenteel geobsedeerd door de droom van zelfrijdende voertuigen die menselijke inbreng volledig elimineren en op de automatische piloot draaien. De prijs voor hun voordelen is echter te hoog als het gaat om ongevallen met dergelijke auto’s als gevolg van technische fouten.

Joshua Brown staat bekend als de eerste Tesla-bestuurder die omkwam tijdens een rit op de automatische piloot. Zijn auto herkende de lichtgekleurde wagen niet tegen de lichte lucht en activeerde het remsysteem niet, waardoor de auto met volle snelheid tegen de wagen botste. Tesla-vertegenwoordigers stelden dat het systeem had gewerkt en signalen gaf aan de bestuurder om zijn handen aan het stuur te leggen, maar dat hij deze negeerde. Het is nog steeds onbekend of dit waar is, maar het ongeval heeft mensen aan het denken gezet over de automatische piloot.

Elaine Herzberg-zaak

Een ander berucht verhaal gaat over Elaine Herzberg, de eerste vrouw die omkwam onder de wielen van een zelfrijdende Uber-auto. Het was nacht en de auto herkende een mens niet. De bestuurder die de automatische piloot moest controleren, had niet genoeg tijd om te stoppen.

London Ambulance

In 1992, toen de London Ambulance besloot menselijke operators te vervangen door een computersysteem, werd dit in gebruik genomen zonder load testing en met 81 bekende bugs! Het systeem crashte door fouten in de routering van ambulances, wat leidde tot de dood van mensen. Bovendien kochten ze goedkope apparatuur die een paar uur na actief gebruik van het systeem kapot ging.

Multidata Systems International

Dit geval betreft stralingstherapie software voor kankerpatiënten, ontwikkeld door Multidata Systems International. Onjuiste berekening van de juiste dosis stelde patiënten bloot aan schadelijke en zelfs dodelijke stralingsniveaus, wat leidde tot de dood van 8 mensen.

Therac-25

Het meest spraakmakende geval in de programmeergeschiedenis van medische apparaten was het incident met de Therac-25 bestralingstherapiemachine. Door een race condition error, waarbij snel werd geschakeld tussen de magnetische en röntgenmodi van het apparaat, had de röntgensluiter geen tijd om ingesteld te worden. Als gevolg hiervan kregen tien patiënten stralingsziekte, wat leidde tot de dood of amputatie van de aangedane lichaamsdelen.

Boeing 787 Dreamliner

Dit geval gaat over de tijdige detectie van een fout in het Boeing 787 Dreamliner vliegtuig, waarvan de preventie waarschijnlijk het leven van honderden mensen heeft gered. De bug had de stroomtoevoer van het vliegtuig na 248 dagen werken kunnen uitschakelen, ongeacht de fase van het vliegtuig. De reden was een 32-bits verkleind getal dat na 248 dagen gelijk zou zijn aan 0,01 seconden, wat niet in de capaciteit paste en zou leiden tot volledig verlies van controle over het vliegtuig.

Conclusie

Deze verhalen zijn slechts een druppel op een gloeiende plaat, en er zijn duizenden voorbeelden waarbij programmeerfouten tijd, geld en levens hebben gekost. En er zullen er meer komen als mensen niet de juiste aandacht besteden aan de kwaliteit van de ontwikkelde software en de uitgebreide testen ervan.

Bij QAwerk nemen we een verantwoordelijke benadering van de oplossingen die we bouwen. We streven ernaar om hoogwaardige softwareontwikkeling en kwaliteitsborgingsdiensten te leveren voor klanten uit verschillende sectoren. Of het nu gaat om een eenvoudige mobiele app of een complex project zoals de upgrade van het stemsysteem in het Europees Parlement, onze specialisten geven altijd prioriteit aan de kwaliteit van de ontwikkelde producten.