Věda, umění a magie v jednom - Metodika odhadování pracnosti

26. srpna 2021

Jak (ne)snadné je odhadnout náročnost projektu?

Co si leckdo neuvědomuje, je, že součástí kvalitního projektu musí být i kvalifikovaný odhad jeho pracnosti. Někdy to může dokonce být i velmi zásadní bod zlomu, který dovede způsobit rozkol mezi zadavatelem a vykonavatelem.

Odhady nemůže dělat úplně každý a i seniorní člověk se snadno dostane do situace, kdy jeho odhad bude spíše ,,cuc prst“ než profesionální odhad pracnosti. Proč? Protože do odhadů vstupuje mnoho proměnných: 

• Týmové dovednosti 

• Znalost oboru 

• Složitost aplikace 

• Historická data z podobných projektů 

• Chybovost vývojového týmu 

• Množství zdrojů, které lze využít 

• Produktivita týmu 

• Stabilita vývojového, testovacího prostředí a s tím související množství prostojů 

• Zkušenosti 

Samozřejmě během sestavování odhadů, nesmíme nikdy zapomenout ani na čas, který budeme potřebovat k vytvoření požadované dokumentace nebo například řešení chyb či účasti na schůzkách (viz produktivita týmu). 

Ačkoliv se tato část práce v oboru testování může zdát spíše jako určitý typ magie, existuje i několik metodik, jak se dopracovat ke „kvalitnímu odhadu“. 

Podle funkčních bodů 

Tuto metodu uznává i samotný ISO standart. Pracuje s myšlenkou, že otestování každého funkčního bodu zabere určitý čas. Jak dlouhý je tento čas, však závisí na zkušenosti každého testera, který odhad vytváří. Funkčním bodem se myslí veškerá vstupní data, externí rozhraní, počet vstupů, počet výstupů i počet uživatelských dotazů. 

Nutno říci, že tato metoda je sice velmi jednoduchá, rychlá, ale jelikož nebere v potaz typ aplikace ani druhy testů, které budeme muset vykonat, jedná se o velmi nepřesný odhad. Jestliže však máme počet funkčních bodů, jsme schopni vzorcem dospět k počtu předpokládaných Test Casů: 

Tcs = (Funkční body) x 1,2 

Jestliže máme dostupná historická data, které nám jsou schopny říci, kolik času bylo potřeba na otestování jednoho TC, můžeme spočítat celkový odhad pracnosti. 

Podle seznamu Test Casů 

Na začátku si musíme vytvořit základní seznam testovacích případů. Jednotlivé případy pak odhadujeme samostatně. Je vhodné vytvořit si tři typy odhadů: 

• Minimální 

• Optimální 

• Maximální 

Z těchto tří odhadů se následně udělá průměr, který použijeme k určení celkového odhadu pracnosti. 

Nevýhodou této metody je fakt, že počet testovacích případů se velmi často mění a s tím samozřejmě pak i pracnost. 

Podle jednotlivých úkolů 

Jeden ze způsobů, jak vytvořit přesnější odhad. Předpokladem však je, že máte stabilní tým, který řeší velmi často podobné projekty. Principem je rozdělení odhadu na jednotlivé úkoly a ty odhadovat samostatně: 

• Test analýza 

• Příprava a správa testovacího prostředí 

• Příprava a správa testovacích dat 

• Smoke testy 

• Regresní testy 

• Test exekuce

Nevýhodou však může být větší obecnost jednotlivých úkolů. 

Podle procenta z odhadu vývoje 

Zde je předpokladem dostupnost statistických údajů z historie. Výsledkem odhadu může být určení přímé úměry vzhledem k pracnosti vývoje nebo času určeným procentem vývojového času. Vývojový čas se odhaduje dle počtu řádku kódu nebo například podle funkčních bodů. 

PERT metoda 

Statická metoda, pro kterou je potřeba každý úkol rozpadnout na jednotlivé pod-úkoly. Těm se následně přidělují tři typy odhadů, se kterými se následně pracuje: 

• M - Minimální (vše jde hladce) 

• O - Optimální (mohou být problémy, ale žádné zásadní) 

• H - Maximální (vše co se může pokazit, se pokazí) 

Vzorec pro odhad (E): 
• E = (M+(4 x O) + H)/6 
Následně je potřeba vypočítat odchylku (D) a rozptyl (R): 

• D = (E-M)/6 

• R = [(H-M)/6]2 

Právě díky rozptylu lze následně vypočítat analýzu pravděpodobnosti dodržení termínu. Pro výpočet však potřebujeme ještě navíc spočítat směrodatnou odchylku (S). 

• S = √∑R 

◦ Odmocnina součtu rozptylů 

Vzorec pro analýzu pravděpodobnosti dodržení termínu je následující: 

P = [(Tp-T)/S] 

Kde Tp je plánovaný čas projektu a T je součet odhadů dob trvání. Analýza pravděpodobnosti dodržení termínu nám říká, pokud pravděpodobnost vyjde: 

0,4 – 0,6 → termín lze dodržet 

> 0,6 → nadbytečné využívání zdrojů 

< 0,4 → měli bychom zlepšit činnost na kritických bodech 

Zejména k poslednímu bodu je potřeba si říci, že analýzu dodržení termínu můžeme spočítat i pro jednotlivé pod-úkoly. 

UseCase metoda 

Již samotný název nám napovídá, že je metoda založena na případech užití. Během výpočtu využíváme počet aktérů (uživatel, systémy, prostředí apod.) a počet jednotlivých UseCase 

• Počet aktérů = pozitivní aktéři + negativní aktéři + výjimeční aktéři 

◦ Např. Proces je přizpůsoben zejména pro telefony, nepodporujeme počítače a výjimečně se může objevit uživatel s tabletem 

◦ Počet aktérů (A) 

▪ A = 1x telefon + 1x počítač + 1x tablet 
◦ počet UseCase (Uc) 
▪ Uc = celkový počet UseCase (tj. všechny možné UseCase) 
• Vypočítáme neupravený bod užití (B) 
◦ B = A + Uc 
• Vypočítáme upravený bod užití (U) 
◦ U = B x [0,65 + (0,01 x 0,5)] 
• Výpočet finálního odhadu (E) 
◦ E = U * 2 

WBS metoda (členění práce) 

Celou odhadovanou část rozdělíme na prvočinitele. Konkrétně tedy vezmeme projekt a vytvoříme z něj malé části. Ty následně rozdělíme na malé moduly. Moduly dále členíme na funkce a ty opět na pod-funkcionality. 

Projdeme celý strom ještě jednou, abychom se ujistili, že nám nechybí žádný požadavek, který je potřeba pokrýt testy. Sečteme počet úkolů, které musíme udělat a odhadneme potřebný čas pro každý úkol. 

Metoda Delphi 

Využívá metodu WBS s tím rozdílem, že na odhadu se podílí 3 – 7 členů týmu. Každý z nich udělá odhad WBS a výsledným odhadem je soulad všech členů týmu. Jinak řečeno ze svých odhadů najdou kompromis, na kterém se shodnou všichni. 

Procentuální metoda 

Tato metoda vychází jednak ze zkušeností odhadce a zároveň z určení procentuální náročnosti na dílčí fáze projektu. 

• Projektový managemenet 

• Požadavky 

• Grafika 

• Programování 

• Testování 

• Dokumentace

Oblast testování pak rozdělíme na jednotlivé druhy testů, které budeme vykonávat, a těm přidělíme procenta. Posledním krokem je rozdělení na jednotlivé úkoly, které je potřeba vykonat, a těm se opět určí procenta.

Metoda založena na zkušenostech 

Metoda, ke které je potřeba mít dostatek zkušeností s obdobným projektem. Nelze však udělat odhad pouze na zkušenostech, velmi často se při této metodě využívají i data nashromážděná v historii. Zde jde opravdu již o jistou úroveň magie.

- Filip Kadlec