Jak najít termín dokončení software?

Kdy bude ta aplikace hotová? Otázka děsící všechny projektové manažery, kteří mají na starosti týmy vyvíjející software. Vývoj software je v tomto smyslu hrozně zvláštní disciplína. Slovem vývoj přeci označujeme činnost, kde se bádá, zkoumá se neprozkoumané, chodí se do slepých uliček. Nikdo se neodváží položit otázku: Kdy bude vyvinutý lék na rakovinu? Jak tedy můžete chtít znát termíny u vývoje software? Tak si to zkusme objasnit.

Výzkum

Ve výzkumu je téměř nemožné plánovat, jde o vysoce kreativní proces, někdy závisí dokonce i na štěstí nebo náhodě. Cílem je finální vyřešení určité problematiky, která dosud vyřešena nebyla. Řešení dokonce nemusí existovat. Často je také výzkum uveden zadáním, které je velmi nejasné nebo obecné. Jedná se o nejnáročnější a tedy také nejdražší typ vývoje software.

Vývoj

I v tomto případě je plánování obtížné, ne ale nemožné. Většinou jsou známé určité principy, které budou použity, některé části řešení nemusí být známé úplně a upřesňují se v průběhu. Každopádně mohou a budou vznikat chyby, ty je nutné efektivně ošetřovat. I zde je kladen důraz na vyřešení problematiky, byť se nemusí jednat o něco zcela nového a zásadního. Obtížnost vývoje je do značné míry dána kvalitou zadání. Jde stále o vysoce odbornou činnost a tak ani tento typ práce není z nejlevnějších.

Produkce

U tohoto typu vývoje software je možné dobře a efektivně plánovat. Často již nejde o programování v pravém slova smyslu, ale o skládání hotových modulů, nebo použití, nasazení a konfiguraci určitých šablon. Zadání je obvykle zcela jednoznačné, nejedná se o nic výrazně odlišného od již existujících aplikací. Důraz je kladen zejména na co nejnižší náklady, případně i na co nejkratší termín. Jednoznačně jde o nejlevnější typ vývoje software.

Jak najít nejlépe termín dokončení?

Vraťme se k úvodní otázce. Co tvorba software na zakázku?

Předně je třeba dát na pravou míru to, že u netriviálních projektů nelze veškerou práci zařadit jen do jedné z výše uvedených skupin. V podstatě vždy jsou použity prvky produkce i vývoje a nezřídka i výzkumu. Je to fakt, který jsme si i v OG Soft již dávno ověřili praxí. Naším produktem jsou například i webové stránky, u jejich tvorby lze často využít produkci v masivnějším měřítku, zejména jde-li o web založený na hotové šabloně. Zaměřím se ale na vývoj komplexních systémů a aplikací, se kterým máme bohaté zkušenosti.

Při snaze dopídit se termínů je vhodné postupovat tak, aby se do značné míry eliminovala míra nejistoty. To si však často, trochu překvapivě, vynucuje některé práce na úrovni výzkumu.

Nechceme vás zahltit termíny jako prototypy, měřitelné cíle, use case, apod. ale rád bych to vysvětlil i laikovi. Je dobré rozdělit projekt do některých základních fází:

  • Definice zadání
    Tato část práce zahrnuje mj. sběr a analýzu požadavků zadavatele (toho, komu má software sloužit) a na základě toho pak definici konkrétního zadání. Výstupem by tak měl být dokument, který precizně a srozumitelně popíše to, co má vzniknout. Zadání by mělo být vlastně k dispozici od zadavatele rovnou že? Pravidlem však bývá, že to tak není :-).
  • Analýza vývoje software
    Během této fáze vznikne návrh, jaké budou použity postupy, nástroje, algoritmy, uživatelská rozhraní, atd., aby na základě zadání a této analýzy mohl být software vytvořen, a aby to mělo co nejhladší průběh. Měla by vzniknout také hrubá dekompozice celého řešení, tzn. rozdělení do jednodušších celků a vymezení jejich hranic navzájem.
  • Tvorba software
    Toto je již ono samotné vytváření software, které samo o sobě může mít své další fáze a milníky a nejrůznější metodiky vývoje. Výsledkem by mělo být hotové řešení včetně základního otestování ze strany vývojového týmu.
  • Uvedení do provozu
    Když je softwarové řešení vyvinuté, tak to ještě žádný přínos nemá, dokud není reálně používáno. Uvedení do provozu nemusí být jednoduchá záležitost, často může vyžadovat nějaký ověřovací provoz, testování ze strany uživatelů, školení a další činnosti. Výsledkem je každopádně běžící aplikace, řešení, systém, které jsou používány svými uživateli. Tak a teď je tedy teprve hotová ta aplikace.

Chceme-li dosáhnout co nejlepšího poměru cena / výkon, je naším zájmem to, aby ve fázi Tvorba software bylo co nejvíce činností produkčních a co nejméně vývojových a ideálně žádná výzkumná.

K tomu musíme mít bezpochyby precizní zadání, fáze Definice zadání může sama často být na hranici výzkumu a vývoje, zejména u složitějších řešení. Poměr produkce a vývoje při fázi Tvorba software pak můžeme ovlivnit ve fázi Analýza vývoje software. Sama tato fáze má nejblíže výzkumu a teprve při jejím završení můžeme získat první relevantní termín dokončení celého řešení a jeho uvedení do provozu. Jelikož je tedy analýza často výzkumem, je obtížné pro ni hledat nějaký termín a objem práce, často se vyplatí stanovit nějaký objem práce, který budeme investovat a v jeho rámci pak analýzu provést.

Pak se to tedy celé během fáze Tvorba software a Uvedení do provozu udělá a spustí v tom zamýšleném termínu? Málokdy je to tak. Nesmíme zapomenout na to, že zejména u fáze Tvorba software stále zůstal nějaký díl práce, větší či menší, na úrovni vývoje a tedy s velmi obtížnou možností plánování. Proto dochází tak často u softwarových projektů k posunům finálních termínů. Čím více investujeme do Definice zadání a Analýzy vývoje, tak tím lépe se nám pak podaří stanovit termín, který bude dodržen, nebo jen velmi málo překročen.

V neposlední řadě pak ovlivňuje termín i to, jakou součinnost celému projektu věnuje jeho zadavatel a to během všech fází projektu.

Tady najdete kompletní sadu kontaktů

Mohlo by vás také zajímat: