Pokud po lajdáckém naprogramování nefunguje správně kávovar nebo pračka, vcelku nic se neděje, zkrátka se občas chová divně, špatně měří teplotu v nějaké fázi či něco podobného. Ale jistě každý bude souhlasit, že atomová ponorka nebo jaderný reaktor to jistě není zakázka do hodin výuky IT. Shrnuto do jedné věty: Náročnost testování by měla odpovídat náročnosti, důležitosti a nebezpečnosti zakázky.
S právě řečeným názorem dobře koresponduje i onen méně známý fakt, kdy skupinka inženýrů okolo vědce Petera Neumanna při programování pro NASA napsala denně pouhé tři řádky kódu a testovala, testovala a testovala. Je nám jasné, že dnešní manažeři by vás s podobnou produktivitou hnali devítiocasou kočkou z USB 2.0 kabelů až do Vídně, ale námět k zamyšlení to jistě je…
Důvody pro vznik softwarových chyb jsou pořád stejné: komplexita software, komerční tlak přinést produkt co nejdříve na trh, absence odpovědnosti za chyby a mizerné pracovní metody. Programátor již dnes obvykle tráví většinu času při lovení bugů a tato situace se nám výhledově rozhodně nijak nezlepší. Aplikace se nám totiž „nafukují“ co do velikosti stejně, jako se nám zrychlují procesory a zvětšují disky – každý rok a půl nám nakynou zhruba dvojnásobně.
Dle studie provedené Wattsem Humphreym z Carnegie Mellon University Software Engineering Institute obsahovala většina z testovaných programových projektů při psaní kolem 10 chyb na 1 000 řádků. V projektu s milionem řádků to již dělá 10 000 chyb, což by prý vyžadovalo 50 lidí pracujících další rok, aby vše bylo (téměř) dokonale v pořádku.
Příkladů z praxe, kdy programátorské chyby stály podniky či stát další peníze i škody na lidských životech, jsou kvanta. Kupříkladu chybně napsaný systém sloužící pro varování letadel na blížící se zemi byl v Koreji v roce 1997 zodpovědný za smrt 228 lidí. Vzpomeňme též například i nedávného případu v USA, kdy si chybný software (mající na starost brzdné okruhy u motorových vozidel) vyžádal vrácení a přeprogramování 39 tisíc nákladních vozidel i traktorů a 6 tisíc školních autobusů.
Jistě si pamatujete z vlastních hodin fyziky, jak vždy profesoři řádili, když student zapomněl u výsledku (či nějaké průběžné hodnoty) uvést jednotky. Tehdy si zřejmě většina z vás myslela, že to zkrátka byli jen pedanti, jak ale ukazuje praxe, i s podobnou chybou se lze setkat. Přesně to je totiž případ projektu Mars Climate Orbiter, kde podobná chyba připravila daňové poplatníky o 327,6 milionu USD. O co vlastně šlo? Mars Climate Orbiter měl chyb sice více, za což by se měla NASA Propulsion Jet Laboratory dodnes stydět (přibližování k Marsu v chybném úhlu, neoptimálně rozložená zátěž, …), zdaleka tím největším byl ovšem ten, který družici stál i existenci: různé části programátorského týmu používaly různé jednotky. Takže jedna skupinka pracující na motorech počítala v angloamerické měrné soustavě, zatímco druhá v metrické míře. Výsledkem bylo, že motory byly 4,45× výkonnější, nežli bylo plánováno, což se samozřejmě zjistilo až dodatečně (družice jinde, spotřebováno více paliva, …).
A další známý příklad – WGA. Aktivita Windows Genuine Advantage nikdy nebyla mezi uživateli a firmami nějak zvlášť oblíbená. Je to pochopitelné již z toho základního důvodu, že zákazníci zkrátka nedostali s tímto updatem nic dalšího – žádné zvýšení bezpečnosti nebo stability svého legálního systému. Jediný důvod existence bylo pomoci najít MS pirátské instalace, což je spojeno se softwarovou chybou, o které se nyní zmíníme. Koncem srpna 2007 WGA nacházel po plných 19 hodin chyby všude, kam se podíval, a to i u tisíců legálních OS (uživatelé XP se pouze dozvěděli, že mají pirátskou verzi, majitelům WV se však začaly vypínat funkce OS typu Aero či ReadyBoost). Důvod, proč se tak vůbec stalo, byl ten, že v pátek 24. srpna někdo z WGA týmu omylem na WGA server nainstaloval chybovou předprodukční verzi.
Softwarová chyba (resp. její autor) má na svědomí i pád letounu U.S. Marine Corps Osprey, což je hybrid mezi vrtulníkem a letadlem. V něm selhal hydraulický systém, čímž vznikla ukázková situace z učebnice, která se při správném postupu měla vyřešit nouzovým přistáním beze ztráty životů. Když tedy jeden z hydraulických systémů u tohoto letounu zkolaboval a následně software motor vypnul, pokusili se jej piloti opět zprovoznit resetem, ovšem jakási změna v obvyklé samovolné rotaci rotorů (způsobená zřejmě další částečnou prací motoru nebo jeho zablokováním) narušila autorotaci a vedla k pádu.
Na problematiku Y2K nahlížely různé skupinky lidí různě. Zatímco programátoři připouštěli, že by to mohlo být na určitých místech zdrojem nepříjemných problémů, špičky české politické scény (zdravíme pana Klause a Zemana) se tehdy vzácně shodly na komentáři: „Jedná se o nafouklou bublinu“. I když na přelomu roku k žádným kritickým chybám nedošlo, přípravy podniků na celém světě a opravy v úhrnu přišly na neuvěřitelných 500 miliard USD.
To nás přivádí k další obrovské škodě – ILOVEYOU. Připomínáme, že šlo o počítačový virus, který infikoval miliony stanic a podepsal se pod ztrátu mnoha dat. ILOVEYOU se šířil e-mailem a v celkovém úhrnu přišlo odstraňování jeho následků + škody na 8,75 miliard USD.
K velmi trapné počítačové chybě došlo i v Anglii, kde pro organizaci Child Support Agency (CSA) napsal podnikatelský a obchodní gigant EDS aplikaci pro práci s dětskou podporou. Že se jim to moc nepovedlo, dosvědčuje více než 1,9 milionu přeplacených osob, 700 tisíc pod-placených, chybějící 3,5 miliardy GBP v chybně nevybraném výživném a další desetitisíce podobných případů. Jen dodnes bylo nalezeno v aplikaci na 500 chyb. A jaké z toho plyne poučení? Nikdy ale opravdu nikdy zároveň neupgradujte obří IT systém a nerestrukturalizujte společnost!
Studie na téma programových chyb provedená americkou organizaci NIST (National Institute of Standards and Technology) kolem roku 2000 potvrdila, že náklady na odstranění softwarových chyb přijdou jen USA na téměř 60 miliard USD každý rok, což odpovídá celých 0,6 % GDP (hrubý domácí produkt) USA. Dle studie nesou polovinu nákladů výrobci softu a polovinu jeho uživatelé. Je tedy zřejmé, že často dochází k situaci, kdy je software vržen do tržního víru, a to bez toho, aniž by byl skutečně důkladně otestován. Důkladný proces testování (že by jednou daný zákonem?) by samozřejmě výrazně navýšil cenu software, na druhou stranu by ale firma byla unikátem s EULA v duchu: „Ručíme za všechny škody způsobené naším softwarem.“
To nás mimochodem přivádí k zásadní otázce: byli byste ochotni platit za software více v případě, že by se déle testoval anebo by u něj autoři ručili za následné chyby vzniklé zřejmou defektností aplikace?
Zdroje + Obrázky:
www.cbsnews.com/stories/2003/04/29/tech/main551492.shtml
www.networkworld.com/news/2010/090910-epic-failures-11-infamous-software.html?t51hb
royal.pingdom.com/2009/03/19/10-historical-software-bugs-with-extreme-consequences/
www.devtopics.com/20-famous-software-disasters-part-3/
www.devtopics.com/20-famous-software-disasters-part-4/