Chyby v softwaru zatím nejsou minulostí

Technické, ekonomické i právní aspekty vývoje softwaru vedou ke vzniku produktů, které obsahují řadu chyb. V budoucno...


Technické, ekonomické i právní aspekty vývoje softwaru vedou ke vzniku
produktů, které obsahují řadu chyb. V budoucnosti by se ale situace mohla
zlepšit.
Vina za chyby v softwaru padá téměř na všechny. Na dodavatele, kteří spěchají s
novými produkty na trh bez provedení adekvátních testů, na právní systém, který
dal vývojářům volné ruce a zprostil je odpovědnosti za škody způsobené jejich
produkty, ale i na výzkumné programy univerzit, které upřednostňují vývoj před
testováním.
Existují však i lidé a instituce, které se snaží prosadit změny. Například
Sarfraz Khurshid, výzkumný pracovník MIT, který stojí v čele vývoje
automatických testovacích systémů softwaru. Testování softwaru zahrnuje
generování různých vstupů podkladů pro realizaci operací, které má software
provádět a sledování odezev.

Kde je zakopaný pes
Existuje tolik způsobů testování softwaru, kolik je tvarů sněhových vloček. A
pro každý způsob, jímž se může software porouchat, musí existovat příslušný
testovací postup, který je schopen chybu nalézt.
"Existuje nekonečný počet možných vstupů," říká Khurshid a dodává: "Jakmile
víte, jak je automaticky generovat, je jen třeba vymyslet, které z nich byste
vlastně měli vytvářet." Khurshid vyvinul algoritmy pro automatizované
generování vstupů a očekává jejich vylepšování v průběhu několika příštích let.
Někteří další experti však tvrdí, že vylepšení technologií automatického
testování nepovede nutně také k lepší kvalitě softwaru. "Většina softwarových
produktů nebyla navržena s ohledem na kvalitu," upozorňuje Herb Krasner,
vedoucí Software Quality Institute na Texaské univerzitě. "V komerčním světě
kvalita nepředstavuje primární motivaci primární motivací je dostat produkt na
trh co nejrychleji. Je to právě závod s časem při uvádění na trh, který v mnoha
případech kompromituje kvalitu."
Nedostatečnému testování softwaru padá za oběť jenom v USA 60 miliard dolarů
ročně v nákladech, které nesou uživatelé i výrobci to alespoň tvrdí loňská
studie obchodního oddělení Národního institutu pro standardy a technologie USA
(National Institute of Standards and Technology). Viry zneužívající chyby pak
mohou způsobovat každoročně další škody v řádech miliard amerických dolarů.

Tlak na standardy
V současné době neexistují žádné standardy pro měření kvality softwaru. Tento
pojem je definován tak široce, jak široké jsou pojmy funkčnost, spolehlivost,
použitelnost, výkonnost, udržovatelnost či přenositelnost. Je zde ovšem patrná
dlouhodobá snaha o jejich vývoj tak, aby bylo možno porovnat kvalitu různého
softwaru. Dosud je ovšem něco takového nesplnitelným úkolem.
Zmíněné úsilí je zčásti podpořeno jednou z nejslavnějších chyb ze všech tou,
která způsobila havárii meziplanetární sondy Mars Polar Lander v roce 1999
(problémy v komunikaci způsobily, že se nezdařilo její přistání na Marsu). Pro
NASA znamenala havárie zlomový moment a vedla k rozhodnutí rozšířit spolupráci
s univerzitami právě v oblasti zajištění kvality softwaru. NASA dokonce
podepsala nájemní smlouvu, která umožnila Carnegie Mellon Univerzity založit na
západním pobřeží v kalifornském Moffett Field vysokoškolské městečko. NASA také
pomohla této univerzitě vytvořit takzvané SCC (Sustainable Computing
Consortium), jež spojuje úsilí takových firem, jako jsou FedEx, Pfizer,
Microsoft a Oracle na tomto velkém společném úkolu.
Inženýři vědí, jak testovat kvality mnoha komplexních produktů, jako jsou třeba
letadla, léky či mosty. Ale standardy pro měření kvality softwaru a porovnávání
podobných softwarových produktů prostě neexistují. Co například znamenají pojmy
jako "trustworthy" (spolehlivý) či "unbreakable" (nerozbitný), prosazované
firmami Microsoft, respektive Oracle jako jejich standard?
"Jak porovnáte něco spolehlivého vůči něčemu nerozbitnému," ptá se William
Guttman, ředitel SCC v Pittsburghu. SCC usiluje o podporu pro vytvoření
standardů a specifikací, které umožní změřit vlastnosti systému, jako je
provozní spolehlivost či bezpečnost. "Pokud bude možné u softwarových produktů
takovéto atributy měřit, uživatelé budou schopni činit rozhodnutí o nákupu na
základě kvality," říká Guttman, který porovnává úsilí stojící před jeho
skupinou například s vytvořením územního plánu města od počátku do konce.

Mohou za to právníci
Někteří odborníci ale namítají, že budoucí zlepšení kvality softwaru přímo
závisí na otázkách právního rámce a regulace.
Cern Kaner, profesor počítačových věd na Floridském technologickém institutu,
který se otázkami právní ochrany softwaru podrobně zabývá ve své knize Bad
Software (John Wiley & Sons, 1998), srovnává právní odpovědnost výrobců
softwaru se situací majitele automobilu před přijetím zákona o odpovědnosti
výrobců za jejich vadné produkty, který zaručuje spotřebitelům jistá základní
práva.
Výrobci softwaru často limitují odpovědnost částkou zaplacenou za jejich
produkt. Škody utrpěné uživatelem například v důsledku výpadku nebo ušlý zisk
tak nejsou kryty.
Problematika odpovědnosti se stává zvláště tíživou vzhledem k výši škod
způsobených viry využívajícími chyby softwaru. "Spolu s tím, jak se tyto útoky
stávají stále sofistikovanějšími, narůstá i výše škod utrpěných zákazníky a
může dokonce dojít ke zničení podniku. Za viry prostě může zůstat zkáza
nedozírných rozměrů," varuje Kaner.

Nástroje
Tvořit software s tak málo chybami, jak je to jen možné, se snaží Dale
Campbell, softwarový inženýr společnosti Warner Music Group. Využívá k tomu
například nástroje pro testování softwaru od společnosti Parasoft Corporation.
Tvrdí, že proces vývoje se zlepšuje, stejně jako používané nástroje, které
nakupuje. Ve zlepšení vývoje softwaru vidí podle vlastních slov ohromné
příležitosti pro snížení nákladů.
"Vady softwaru znamenají nutnost oprav, a opravy znamenají plýtvání penězi,"
konstatuje Campbell, který má ve Warner Music Group na starosti vývoj aplikací.
"Nevěřím, že bychom byli ochotni tolerovat stejnou úroveň výskytu vad u
fyzických produktů, které jsme si koupili."
Celý problém má ovšem i druhý rozměr na jedné straně sice uživatelé vyžadují
maximálně kvalitní software, na druhé však chtějí, aby byl dostupný za co
nejnižší cenu (a někteří ho chtějí mít rovněž co nejdříve). Zajistit splnění
obou těchto požadavků by snad v budoucnosti mohly nové automatizované testovací
nástroje.

Jak vytvářet bezchybný software
Pro zajištěni kvality softwaru se používá řada metod, které se soustředí na
odhalení různých potenciálních slabin vytvořeného kódu. Některé postupy však
mohou časem sklouznout k rutině.
V řadě vývojářských firem jsou například organizována pravidelná setkání, na
nichž se provádí posuzování kódu. Vývojáři vysvětlují softwarovému architektovi
svoje postupy a ten zpětně reaguje jejich zhodnocením. Užitečné může být i
prosté vysvětlování vlastního kódu jinému vývojáři při něm si člověk snáze
uvědomí chyby, které při jeho psaní udělal, případně mohou vzniknout návrhy na
efektivnější řešení problému.
Při organizovaném posuzování kódu ovšem hrozí, že se z něj stane nezáživná
rutina, čímž tento proces ztratí smysl. Celý proces by rozhodně neměl
sklouznout pouze k mechanickému posuzování toho, zda kód odpovídá kódovacím
standardům to koneckonců mohou do značné míry zvládnout i automatizované
nástroje.
Významným procesem při testování softwaru je zkoušení jeho funkčnosti při
různých vstupech a při různé zátěži. Při těchto testech je zjišťována stabilita
i výkonnost jednotlivých komponent softwaru i řešení jako celku. Samostatnou
kapitolu pak představuje zkoumání chování softwaru při extrémní zátěži.









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.