Agilní vývoj
Agilní metodiky a přístupy jsou dnes ve sféře vývoje softwaru dobře známým a hojně využívaným nástrojem. Agilní přístup míní nejen technickou část projektu, ale i způsob projektového řízení, rozpočtu a případně typ smluvního vztahu. Díky tomu, že agilní metoda vyžaduje úzkou spolupráci mezi zákazníkem a vývojářským týmem, je akceptovatelná pružná reakce na změnu požadavků. Další charakteristikou výše popsaného přístupu je rozdělení celého procesu do cyklů, které se opakují do té doby, dokud zákazník nebude spokojený s návrhem vývojáře. K metodikám agilního vývoje patří Lean development, TDD, FDD, XP, apod.
Nejčastěji se používá takzvaná metodika Scrum spočívající v rozdělení procesu vývoje do několika fází, které se nazývají sprinty a trvají od jednoho do čtyř týdnů. V nultém sprintu dochází k analýze celého projektu a rozčlenění funkcionalit do jednotlivých bloků. Tyto bloky se následně nahrávají do produktového backlogu. Nultá iterace také odpovídá za odhad počtu sprintů nutných pro celkovou přípravu a spuštění projektu. Ve fázi aktivního vývoje softwaru probíhají meetingy se zákazníkem, který může navrhnout požadavky na úpravy, změny a nebo schválit prezentovanou část projektu. Navržené úpravy či změny se pak integrují v rámci dalšího sprintu, v případě jejichž schválení nastává řada sprintu následujícího. Tak se pokračuje do té doby, dokud projekt nebude schválen a nasazen.
Agilní vývoj je dobrý pro zákazníky, kteří chtějí svůj projekt rozvíjet okamžitě a mají dostatek času na jednání s vývojovým týmem. Díky pravidelné komunikaci šetří čas a náklady na tvorbu projektové dokumentace. Může měnit priority projektů a také dílčích částí, což je ideální pro zákazníky, kteří neví, co je konečným cílem jejich projektu nebo ho chtějí upravovat a doplňovat od sprintu ke sprintu. Agilní přístup softwarového vývoje je ideální pro dlouhodobou spolupráci, která se neustále rozrůstá.
Minusem výše popsané metody ale bude časová náročnost a nejasný rozpočet.
Fix price/fix time
V tradičním přístupu softwarového vývoje se často používá metoda "fix price/fix time", což pro zákazníka znamená, že čas a rozpočet tu jsou předmětem domluvy dvou stran, nikoliv výsledkem reálných odhadů. Volba nástroje fixní cena/fixní čas je dobrá pro projekty, ve kterých je jasné od začátku, jak dlouho samotný vývoj bude trvat a kolik to tedy bude stát. Kromě toho je tato metoda akceptovatelná pro menší projekty a „emvépéčka“, a také pro zákazníky, kteří nemají čas na periodická jednání s vývojáři a preferují projekt na klíč neboli design, vývoj a testování v jednom balíčku.
Na podobu fix price/fix time modelu je nahlíženo jako na svažující se tok (vodopád) charakterizovány následujícími fázemi:
- Analýza a specifikace zadání
- Design a UX (user experience design)
- Vývoj software
- Testování
- Beta verze a spuštění projektu
- Provoz a další rozvoj projektu
K nedostatkům daného modelu patří nutnost jasné představy podoby projektu, časových a peněžních nákladů na jeho realizaci. Častým problémem fix price je, že i když je jasné zadání projektu, klient přesto mění zadání v průběhu vývoje. Tyto změny jsou většinou ku prospěchu výsledného řešení, ale v původní kalkulaci nejsou zahrnuty, a proto je potřeba řešit aktualizaci ceny.
A jak to děláme my
U vývoje webových aplikací je agilní vývoj nejlepší možná cesta. Stanovíme si základní zadání projektu a řekneme si orientační ceny, ale reálný rozpočet se řídí agilním přístupem.
Co se týče webových prezentací, tam používáme náš odzkoušený hybridní přístup. Klientovi je v kalkulaci prezentována předpokládaná cena projektu na základě sepsaného zadání, ale zároveň k rozpočtu přikládáme rezervu, ze které se čerpá právě v případě, kdy jsou různé změny zadání. Pokud je potřeba rezervu čerpat, klientovi vysvětlíme důvod a reportujeme reálně odpracovaný čas. V praxi to pak znamená, že projekt není napnutý rozpočtem a pokud vznikne v průběhu vývoje skvělý nápad na vylepšení, může se bez problému realizovat.