- Přehledy IS
- APS (20)
- BPM - procesní řízení (22)
- Cloud computing (IaaS) (10)
- Cloud computing (SaaS) (33)
- CRM (51)
- DMS/ECM - správa dokumentů (20)
- EAM (17)
- Ekonomické systémy (68)
- ERP (79)
- HRM (27)
- ITSM (6)
- MES (32)
- Řízení výroby (36)
- WMS (29)
- Dodavatelé IT slueb a řeení
- Datová centra (25)
- Dodavatelé CAD/CAM/PLM/BIM... (39)
- Dodavatelé CRM (33)
- Dodavatelé DW-BI (50)
- Dodavatelé ERP (71)
- Informační bezpečnost (50)
- IT řeení pro logistiku (45)
- IT řeení pro stavebnictví (26)
- Řeení pro veřejný a státní sektor (27)
ERP systémy
CRM systémy
Plánování a řízení výroby
AI a Business Intelligence
DMS/ECM - Správa dokumentů
HRM/HCM - Řízení lidských zdrojů
EAM/CMMS - Správa majetku a údrby
Účetní a ekonomické systémy
ITSM (ITIL) - Řízení IT
Cloud a virtualizace IT
IT Security
Logistika, řízení skladů, WMS
IT právo
GIS - geografické informační systémy
Projektové řízení
Trendy ICT
E-commerce B2B/B2C
CAD/CAM/CAE/PLM/3D tisk![]() | |
| Přihlaste se k odběru newsletteru SystemNEWS, který kadý týden přináí výběr článků z oblasti podnikové informatiky | |
![]() | |
Multidimenzionální měření postupu vývoje softwaru
Přirozenou lidskou vlastností je snaha o přenos osvědčených postupů z jedné oblasti do druhé. Tak se v naich myslích přenesly přístupy vhodné například ve stavebnictví do softwarového vývoje. Ve stavebnictví je obvykle ve jasné. Na začátku je časový plán a rozpočet, jejich nedodrení lze poměrně brzy zjistit a ve výsledku nemají významnějí negativní dopad. Při softwarovém vývoji je to vak přesně naopak.

Ve stavebnictví je ve jasné. Rodinných domů byly postaveny miliony, take jde o relativně rutinní činnost. Na začátku je časový plán a rozpočet, jejich nedodrení lze poměrně brzy zjistit a ve výsledku nemají významnějí negativní dopad. Rizika patného návrhu jsou poměrně nízká a náklady na správný návrh jsou relativně malé v porovnání s náklady na vlastní stavbu. Jedná se v podstatě o neustále opakovanou a opakovatelnou činnost. Naproti tomu při softwarovém vývoji je ve přesně naopak. Rizika patného návrhu jsou poměrně vysoká, přičem správný návrh je často draí ne vlastní „výroba“. Opakovaný a opakovatelný softwarový projekt se téměř nevyskytuje – lze toti předpokládat, e takový produkt ji někdo nabízí za cenu, které vývoj na zakázku můe těko konkurovat. S trochou nadsázky lze říci, e kadý projekt je z velké části nový a první. Objektivnějí je tedy srovnávat softwarový vývoj se stavbou velmi netypických objektů, jako například jadernou elektrárnou Temelín, Eiffelovkou anebo vodním dílem Gabčíkovo. U těchto staveb je navíc rozpočet a termín dodren opravdu pouze výjimečně. Na druhou stranu máte při softwarovém vývoji také výhody, o kterých by se vám při stavbě domu ani nesnilo. Můete návrh postupně měnit a vylepovat „za pochodu“, tak jak získáváte zkuenosti a zpětnou vazbu od zákazníka. Zároveň softwarový produkt nabízí uitnou hodnotu ji v počátečních fázích vývoje, a lze ho tudí vyvíjet v iteracích, přizpůsobovat a zpřesňovat jeho kurz apod. Naproti tomu si představte, jakou hodnotu by měl dům bez oken a bez střechy nebo zda by stavební firma začala pracovat na domě, ani byste jí předem dali kompletní plány. V softwarovém vývoji vak bohuel neplatí některé zákonitosti vyjadřované tzv. elezným trojúhelníkem projektového řízení, tedy čas–zdroje–výsledek. Ve stavebnictví (alespoň teoreticky) vykonají dva zedníci dvojnásobnou práci za jednotku času, nebo vykonají pevně danou práci za poloviční čas v porovnání s jedním zedníkem. V softwarovém vývoji tyto zákonitosti fungují velmi nespolehlivě – ve srovnání se stavbou domu je to dáno například tím, e procesy jsou mnohem sloitějí, produktivita zdrojů je velmi nerovnoměrně rozdělena a ve skutečné pracnosti jednotlivých úloh je velký rozptyl. Zkusme se proto zamyslet nad následujícími otázkami:
- Kdo je „zákazníkem“ projektového manaera a kdo jsou dalí osoby ve hře?
- K čemu potřebujeme projektového manaera?
- Jaké klíčové otázky by měl být schopen odpovědět?
- Jak rozpoznáte blíící se problémy včas?
- Které metriky by měl pouívat k zodpovězení těchto otázek?
- Jak, kdy, s jakým zpoděním a s jakou přesností získáte tyto metriky?
Obr. 1: Časový vývoj sledované metriky v porovnání se skutečným výkonem
Úskalí předepisujících metrik
K metrikám lze přistupovat dvojím způsobem. První je tzv. popisný (deskriptivní) přístup k metrikám. V tomto případě nám metriky slouí jako kompas, podle kterého se orientujeme a případně měníme kurz. Druhý přístup je tzv. předepisující (preskriptivní), při kterém je metrikami myleno sledování ukazatelů, nebo i jednoho ukazatele, u kterých je ádoucí dosáhnout nějaké hodnoty. V tomto případě slouí metriky k hodnocení postupu, úspěnosti nebo pracovní výkonnosti. Ve stavebnictví se řídíme předepisujícími metrikami – utracené peníze vůči rozpočtu, hotová práce vůči časovému plánu apod. Tyto metriky nám jednoznačně řeknou, jak dobře, nebo patně si ná projekt vede. Ve vývoji softwaru to ale není tak jednoduché. ádná metrika, která by nám řekla, jaká je dokončenost nebo kvalita vytvářeného produktu, neexistuje. Proto si pomáháme pomocnými metrikami, které nám nahrazují „skutečné“ metriky. A zde je zakopaný pes. Metriky vlastní pak nejsou cílem, jsou pouze aproximací cíle. Kladení přehnaného důrazu vytváří nesprávnou motivaci a deformuje chování lidí – nesnaí se toti o splnění cíle, ale o splnění pomocné metriky. Jak ji bylo popsáno (obr. 1), nastává v delím časovém období výrazné zlepení sledované metriky, ale jeho pozitivní efekt na skutečný výkon je pouze krátkodobý.
Je tomu tak proto, e lidé mají přirozenou tendenci usilovat o co nejvyí odměnu s nejmení vynaloenou námahou. Následující příklady mohou někomu připadat extrémní, ale jsou bohuel zcela reálné a v dungli a nejistotě softwarového vývoje snadno realizovatelné. Uvate, co mohu dělat, pokud budu hodnocen za:
- počet napsaných řádků kódu – budu psát kód co nejdelí, tím bude navíc hůře čitelný,
- počtu opravených chyb – budu si předem v kódu nechávat chyby, které pak půjdou snadno opravovat,
- počtu objevených chyb – budu hledat formální nedostatky, překlepy apod., důleité chyby zůstanou přehlédnuty.
Multidimenzionální sledování metrik
Výe uvedené příklady by vás neměly dovést k závěru, e metriky nemá smysl sledovat, ale právě naopak. Z naznačené pasti vede cesta přes sledování co největího mnoství metrik současně. Tím se ubráníte zplotění pohledu a deformaci chování, která je typická při přehnaném důrazu na některou z metrik. Změnit toti chování tak, abych ovlivnil ádoucím směrem vechny měřené metriky, je v praxi nemoné. Zároveň budete mít mnohem větí přehled o reálném stavu projektu, budete schopni vidět příčinné souvislosti mezi trendy jednotlivých metrik apod. Vezměme si jednoduchý příklad. Řekněme, e vyvíjíme systém a máme pro něj připravenou řadu testů. Během vývoje dává dobré výsledky osmdesát procent testů a toto číslo se postupně zlepuje a na sto procent. Při povrchním pohledu ideální stav. V multidimenzionálním přístupu ale můete sledovat jetě dalí metriku – procentuální pokrytí funkcí systému testy. A zde například můete vidět setrvalý pokles – jasný příznak stavu, kdy se vyvíjí nová funkčnost, ale dostatečně se netestuje, například z důvodu termínového stresu. Při plochém pohledu na jedinou metriku (procento úspěných testů) tedy ijete v nevědomosti a nevíte, e pod vaí idlí tiká časovaná bomba. Při pohledu přes více metrik jste ale schopni ji s dostatečným předstihem odhalit. Při odměňování týmu jej hodnote za hodnotu, kterou přinesl zákazníkovi. Tuto hodnotu můete měřit vyfakturovanou částkou a té spokojeností zákazníka (přímo související s budoucími fakturovanými částkami). Metriky jsou pouhými ukazateli kurzu, nejsou tedy cílem, ale pouze prostředky k němu vedoucími. Dalí kontraproduktivní aktivitou je snaha o relativní porovnávání jednotlivých členů týmu pomocí metrik. Který vývojář je lepí? Ten, který opravil deset překlepů v dokumentaci, anebo ten, kdo dva dny hledal příčinu jedné chyby, kterou první vývojář nebyl vůbec schopen nalézt?
Obr. 2: Průběné sledování kvality produktu
Jak metriky získat?
Skutečná otázka zní: jak tyto metriky získat? Jednu monost můeme rovnou zavrhnout, a to získávání metrik „vykazováním“ činnosti jednotlivými uivateli, tedy ve své podstatě oddělením nástrojů, které pouívají, od procesů, kterými je chcete řídit. U této metody bylo mnohokrát prakticky prověřeno, e nefunguje. Je přirozenou lidskou vlastností vytlačovat na okraj vechny činnosti, které jsou vnímány jako zátě zdrující od zbytečné práce. Vykazováním v nejlepím případě získáte nepříli přesné metriky s takovým zpoděním, e jejich hodnota bude diskutabilní. V nejhorím případě pak budete čelit partyzánské válce ze strany vykazujících. V kadém případě připadne čas strávený vykazováním na vrub „skutečné práce“. Jediným moným způsobem tak zůstává automatický sběr metrik během práce vývojářů a ostatních členů týmu. Zde mluvíme o tzv. instrumentaci denních aktivit. Klíčovým faktorem pro bezproblémovou akceptaci uivateli je vnímání „nezdruje mne to od práce“. Pak si můete být jisti hladkou spoluprací vedoucí k přesnému a včasnému sběru informací pro získání důleitých metrik. Pozitivními důsledky budou mimo jiné:
- sníení nákladů,
- automatizovaná podpora procesů,
- auditovatelnost procesů (legislativa, regulace apod.).
Měli byste proto při vývoji softwaru pouívat takové nástroje, které tyto principy respektují. Investice do nich se vám bohatě vyplatí.
Obr. 3: Sledování postupu práce a míry dokončenosti
Jak metriky vyuívat?
Vyuití metrik při procesu vývoje softwaru si ukáeme na příkladech reportů produkovaných produkty Microsoft Visual Studio Team System. První příklad (obr. 2) ukazuje vývoj kvalitativních ukazatelů v čase. Barevné sloupečky označují mnoství testů, které dopadly dobře, neurčitelně a patně. V tomto případě je trend jednoznačně pozitivní. Mnohem důleitějí je vak srovnání s dalími metrikami. Pokrytí kódu testy stoupá – jsou zaváděny nové testy. Celkové mnoství známých chyb klesá – chyby jsou svědomitě opravovány. A konečně mnoství změn v kódu v čase klesá – produkt se stabilizuje. Při porovnání vech těchto metrik si můeme být prakticky jisti, e kvalita produktu bude velmi dobrá.
Druhý příklad (obr. 3) ji tak idylický není. Znázorňuje mnoství neimplementovaných scénářů (červená), implementovaných, ale nepředaných/neotestovaných scénářů (lutá) a konečně implementovaných a předaných/otestovaných scénářů (zelená) v čase. Jednoznačně pozitivní je rychlý a trvalý úbytek červených, tedy neimplementovaných scénářů. Dalím pozitivem je dobré plánování projektu – celková výka, tedy objem uvaované práce se v čase nemění. Za negativní lze ale povaovat nárůst implementovaných, ale nepředaných/neotestovaných scénářů v čase. Indikuje problém s testováním funkčnosti anebo s jejím předáváním zákazníkovi. Trvale tedy vytváříme novou funkčnost rychleji, ne ji stačíme odevzdávat. Je zřejmé, e tento stav je dlouhodobě neudritelný a povede v budoucnu ke konfliktům a skluzům. Slabým místem je tedy jednoznačně komunikace se zákazníkem a měli bychom se té zamyslet, zda jsme si dostatečně jisti tím, e vyvíjíme to, co zákazník chce.
Odstraujícím příkladem je obrázek 4. Ten nám ukazuje mnoství naplánované práce a jeho vývoj v čase s tím, e je práce rozdělena na poloky (scénáře) vzniklé před vytvořením plánu (světlejí barva) a po vytvoření plánu (tmaví barva). Jednoznačně zde dochází k tzv. nafukování rozsahu (scope creep). Během vývoje se vynořují nové poadavky a poloky, které postupně vytlačují ty původně zamýlené, je jsou z termínových důvodů krtány. Z původních 85 plánovaných poadavků tedy implementujeme pouhou polovinu (43), zato se nám do projektu protlačilo 74 nových poadavků vzniklých a po vytvoření plánu. Projekt se řítí do nevyhnutelného patného konce a pouhé překročení času a rozpočtu je jetě poměrně optimistický scénář.
Obr. 4: Ilustrace problému „nafouknutí rozsahu“
Shrnutí
Vývoj softwaru se neřídí stejnými pravidly jako stavba domu. Jedná se o náročnou disciplínu srovnatelnou spíe se stavbou velmi atypického díla. Protoe jednoznačně platné metriky nejsou k dispozici, musíme si pomáhat pomocnými metrikami. Příliné spoléhání na jednu metriku nás můe zavést do slepé uličky – metrika sama o sobě není cílem, cílem je spokojený zákazník. Proto je důleitý multidimenzionální pohled, ve kterém lze jednotlivé metriky vidět v souvislostech. Data k získání těchto metrik je nutné sbírat automaticky pomocí moderních nástrojů propojených s procesy. V opačném případě ztroskotáme na nedostatku součinnosti uivatelů. Jedině tak budeme mít dostatek dat pro měření postupu, zajitění kvality a včasnou identifikaci případných problémů.
Autor je architektovým specialistou ve společnosti Microsoft Česká republika.


















