Chci software bez chyb. Jak na to?

October 27, 2020|Tomáš Ondruš| 6 min.

Tvorba softwaru je komplikovaná činnost a bohužel se v něm ve výsledku objevují nejrůznější chyby anebo se chová neočekávaně. Jde s tím něco udělat?

Programování je (alespoň prozatím) doménou člověka. Je to psaní řádků a řádků programového kódu, který něco dělá a v tom lepším případě dělá to, co chceme. Jenomže, co je to “to co chceme”? Každý popis funkcionality je možno opsat na milion způsobů. Navíc můžeme tento popis chápat různě.

Uvedu příklad: “Chci, aby program ukrojil krajíc chleba”. Program tento pokyn plně pochopí a s čistým svědomím vezme plastový nůž (vážně, plastový), odreže nehezký a hrubý kus chleba. Ptáte se proč? Protože to byl jeho úkol. Ukrojit krajíc chleba. Splněno.

Počítač neumí přemýšlet. Dělá přesně to, co mu napíšeme, aby dělal. Aby proběhl proces krájení chleba podle očekávání, je potřeba detailně popsat co očekáváme. “Chci abys vzal vroubkovaný nůž z prvního šuplíku a uříznul s ním 2 cm tlustý chleba. Použij při tom prkénko, aby jsi nezničil stůl.” Čím úplnější popis, tím lépe.

Na základě neúplného nebo nejasného zadání (říkáme tomu taky specifikace) vzniká největší množství problémů. To nejsou chyby (chleba jsme ukrojili), jenom to funguje jinak než v našich představách. Nepodceňte tvorbu zadání a popište s vaším realizátorem systém do posledního detailu. V Pixiu máme projekt rozdělen do fází a fáze tvorby specifikace je asi ta nejdůležitější. Věnujeme jí klidně třetinu vymezenému času na projekt. V rámci specifikace tvoříme i grafické prototypy a další vizuální popisy.

Další nejčastější příčinou chyb je pak nedomyšlení všech scénářů programátorem. Vzal program skutečně správný nůž? Řeže vůbec ostrou hranou? Nekrájí chleba podélně? Otázek k takhle banální činnosti najdeme spoustu. Jak teda najít ty podstatné otázky, které se máme ptát a řešit je? K tomu potřebujete kvalifikovaného člověka. Jak ale kontrolovat, že ani ten nebude chybovat?

Testujte. Projděte si s realizátorem testovací scénáře a dbejte na to, aby byly co nejvíc rozmanité a pokrývaly všechny důležité funkcionality. Když otestujete dostatečný počet variací řezání chleba, tak je pravděpodobné, že ta další bude také podle představ. V Pixiu píšeme automatizované testy, které se spouští vždy po jakékoliv změně v kódu a pomáhají nám odhalovat chyby včas. Testy sice nikdy nepokryjete všechny existující scénáře (nový typ rakety SpaceX taky neletí na první dobrou), ale výrazně jimi zvýšíte odolnost systému. U automatizovaných testů je navíc možné dělat další variace v momentě, kdy se problém objeví tak, aby se už nikdy neopakoval.

Existují další více či méně důležité příčiny chybovosti, ale eliminací nahoře uvedených dvou získáte mnohonásobně kvalitnější produkt a lepší spánek. Nebudete se muset bát, že se zákazníkovi nepovede odeslat poptávku, a ani že z vašeho webu odejde plný zuřivosti a proklínání.

Další články
Sdílejte na