Nahoru
 

Metafory při vývoji systému

Informační technologie má jeden z nejrozmanitějších žargonů. Kde jinde vejdeme do své kanceláře a musíme se potýkat s bombami, trojskými koni, fatálními chybami, bugy (bug je anglický výraz pro brouka) nebo viry?

Všechny tyto grafické metafory popisují specifické softwarové fenomény. Každý z nás se určitě setkal s pojmem trojský kůň, jenž v IT znamená skrytou (škodlivou) část programu, která tiše pracuje na pozadí jiné aplikace. Analogie s antickým trojským koněm použitým při dobývání Tróji zde přímo září. Účelem metafor je usnadnit a lépe pochopit různé pojmy a problémy. Když se nad tím zamyslíme , tak skvělým způsobem, jak se naučit něco nového, je přirovnat danou látku k něčemu jinému, co už chápeme.

Z vlastní zkušenosti mohu potvrdit, že v programování nebo matematice jsou metafory skutečně nápomocné. Když nám na univerzitě přednášející vysvětluje složitou látku, řekněme nějaký algoritmus, vždy se snaží nejprve uvést jistou ideu (metaforu), která studentům pomůže pochopit následující definice.

Jak si lze představit vývoj softwaru? Existuje mnoho metafor sloužících k popsání této problematiky.

Softwarová kaligrafie: Psaní kódu

Nejjednodušší metafora sloužící k popisu vývoje softwaru vychází z běžně používané fráze „psaní kódu“. Toto přirovnání navrhuje, že vývoj je jako psaní obyčejného dopisu – sedneme si, vezmeme do ruky pero a napíšeme program od začátku do konce. Nezabýváme se žádným plánováním a problémy, na které narazíme, řešíte průběžně.

Psaní dopisu
Obrázek č.1: Když se nám nepovede napsat dopis, napíšeme jej znovu. Stejně tak se dá přemýšlet o jednoduchých programech.

Představa vývoje softwaru jako psaní dopisu bude určitě fungovat pro malé projekty, ale tím její síla končí. Výroba velké aplikace bez jakékoliv strategie pravděpodobně dopadne katastrofou. Naneštěstí se tato metafora stihla uchytit, a proto se leckde můžeme dočíst, že vývoj softwaru závisí na opakovaném zkoušení napsání celé aplikace, dokud to nevyjde. To je ale v mnoha situacích velice nepraktické. Existují i lepší způsoby.

Softwarové farmaření: Růst systému

V kontrastu s rigidní metaforou psaní kódu někteří vývojáři doporučují představit si výrobu aplikací jako sázení semínek a postupný růst úrody. Myšlenka je taková, že vezmeme kousek aplikace, kterou nejprve navrhneme, poté nakódujeme, následně otestujeme a přidáme do systému, kousek po kousku. Minimalizací objemu právě prováděné práce docílíme výskytu méně problémů a když už vzniknou, budou tak malé, že půjdou snadno opravit.

Idea rozdělení problému na menší části je zcela jistě dobrý nápad, ale metafora farmaření jako taková moc dobře nefunguje. Její největší slabinou se stává domněnka, že nemáme nad tím, jak se software vytváří, žádnou kontrolu. Právě tato kontrola nezbytně patří do výroby velkých a komplikovaných aplikací.

Softwarové konstruování: Budování systému

Představa vývoje jako budování softwaru je doposud nejlepší metaforou. Na rozdíl od psaní kódu nebo růstu systému zahrnuje budování detailní plánování různých částí vývoje v závislosti na velikosti aplikace. Z farmářské metafory zde zůstává rozdělení problémů na podproblémy (dekompozice problému).

Budování
Obrázek č.2: Budování a programování má mnoho společného.

Předtím než se pustíme do práce na aplikaci, uděláme plán. Ten se bude zásadně lišit při vývoji malé aplikace oproti obrovskému gigantovi. Je to stejné jako kdybychom měli vyrobit boudu pro psa a na druhé straně veliký mrakodrap. Při výrobě boudy koupíme trochu dřeva, pár hřebíků a zkrátka ji nějak „ztlučeme“ dohromady. Pokud se nám v průběhu něco nepodaří, není problém začít od začátku. Takové chování si však nelze dovolit při stavbě mrakodrapu. Zjistit v polovině stavby, že naše základy jsou moc chatrné a nevydrží nápor všech pater nás bude stát ohromné množství peněz a nejspíš i naši návrhářskou pověst. Zkrátka si takovou chybu nemůžeme dovolit. Čas strávený navrhováním a zajišťováním všech aspektů vývoje prudce roste v závislosti na velikosti projektu.

Metafora konstruování softwaru také pomáhá vysvětlit, proč se pro různé aplikace vyplatí použít různé styly vývoje. Přístup k budování nukleárního reaktoru se také bude podstatně lišit od konstrukce parkoviště. Při výrobě programu často používáme flexibilní a rychlé způsoby, avšak někdy musíme sáhnout po rigidním, solidním i když těžkopádném systému.

S rostoucí velikosti aplikace také nutně roste i její celková cena. U velkých aplikací je potřeba dělat nemalé množství práce navíc, která zabezpečuje bezpečný průběh vývoje. Více se dozvíte v článku: „Dvakrát více kódu stojí čtyřikrát více? Ano, z dobrého důvodu“.

Využití metafor

Programování je řemeslo (viz článek: „Programování jako řemeslo“) a stejně jako s ostatními řemesly i zde platí, že čím více pilujeme své dovednosti, s čím více nástroji se naučíme pracovat, tím lepší naše práce bude. Jedním z našich nástrojů mohou být i metafory zmíněné výše. V některých případech se vyplatí brát vývoj jednoduše a použít metaforu psaní kódu, jindy zase potřebujeme složitě plánovat a budovat.

Nejdůležitější je správný výběr nástroje pro danou situaci. Hřebík nebudete zatloukat šroubovákem a maso krájet lžící. Při vývoji platí stejná pravidla. Nemá smysl se tvrdohlavě držet jedné techniky.

Metafory nám pomáhají ujasnit, jak probíhá vývoj softwaru. Lze si jej představit např. jako psaní kódu, růst systému nebo budování aplikace. Různé metafory se vyplatí aplikovat na různé programy a nikdo nikomu nebrání je kombinovat. Zároveň každé přirovnání ulehčuje pochopení složitých problémů pomocí připodobnění k něčemu již známému.