Projekt je definován cílem, časovou náročností a cenou – pokud má být projekt úspěšný, musí být proveden v předem určeném čase, za předem určené peníze a v požadované kvalitě. Samozřejmě, pokud zabere kratší dobu, bude levnější a ve výsledku kvalitnější, nic se neděje, ale opak už znamenal konec mnoha zajímavých projektů, které ztroskotaly buď na tom, že nedokázaly dobrou myšlenku převést do praxe, nebo to udělaly pozdě, nebo jim došly peníze…
Cíl je sice pěkná věc, ale všechno to, co k němu vede, je většinou složité a složené z mnoha dílčích a různě na sobě závislých úkolů. Každý projekt je tedy třeba správně řídit, což je samo o sobě jedním z největších úkolů samotného projektu. K řízení projektů se používají různé metody, většina z nich má víc slabin než silných stránek, ale správný návrh projektu vybere i ten nejméně škodlivý systém jeho řízení. Projekty jsou nejen tak dobré jako lidé, kteří na nich pracují, ale také jako plán a metoda jejich řízení. Dnes se tedy podíváme na nejzásadnější metody řízení (nejen, ale převážně softwarových) projektů.
Magický projektový trojúhelník– vždy se musíte něčeho vzdát
Magické trojúhelníky jsou oblíbené, protože názorně, i když trochu zjednodušeně, ukazují, že nemůžete mít všechno. Známý jen ten investiční, ale s trochou opatrnosti lze použít i pro projekty. Jedna strana je (nízká) Cena, druhá (krátký)Čas, třetí (vysoká)Kvalita – vy můžete stát v jednom vrcholu, takže můžete mít jen dvě strany ze tří. V praxi je to pak následující:
Pokud to bude levně a rychle, nebude to kvalitně, pokud to bude rychle a kvalitně, nebude to levně, ale pokud to chcete kvalitně a levně, bude to trvat dlouho (což je dost problematické, protože pokud to nebude rychle, tak to dost možná může být pozdě a tedy kvalita i ty nízké vynaložené prostředky mohou přijít vniveč).
Waterfall
Vodopádový model (ten původní nemodifikovaný) řídí projekt jako kaskádu, kdy každá z etap musí být u konce, aby mohla nastat etapa další. Etap je přitom sedm:
Specifikace požadavků
Návrh
Implementace
Integrace
Testování
Instalace
Údržba
V první fázi dochází ke stanovení toho, jaký by měl přesně být výsledek. Jelikož se není možné k této fázi později vrátit, požadavky musejí být specifikovány naprosto precizně a do jisté míry až „nadčasově“ – ve skutečnosti by však člověk opravdu musel být jasnovidcem, aby už v této první fázi dokázal pojmout celý projekt a jeho výsledek tak, aby byla specifikace požadavků dokonalá.
To samé platí pro druhou fázi, ve které jsou domyšleny a rozpracovány úkony, které se povedou k převedení požadavků do výsledného softwaru. Často se však stává, že při vývoji se ukáže, že návrh je třeba změnit, což by přísně „vodopádová“ metoda neumožnila.
Charakteristikou waterfall modelu je tedy hlavně jeho přísnost, jednoduchost ve smyslu nastavených pravidel, přehlednost až pedantství, se kterým je například vedena úplná dokumentace o projektu. Problémem je rigidnost metody, která zabraňuje větším zásahům do původního návrhu, byť by změny byly žádoucí.
Nepřekvapí tedy, že existují i jiné metody, které sice z waterfall vycházejí, ale zároveň ji modifikují – jednou z nich je například Sashimi Waterfall Model, který využívá překrývajících se fází, tedy například návrh a implementace v určitém čase probíhají společně, takže je možné v návrhu částečně opravit nedokonalosti, které se projeví při implementaci.
Agilní metody
Agilní metody jsou totálně odlišné od těch waterfallových. Je jich celá řada a liší se i mezi sebou, ale mezi základní vlastnosti můžeme zařadit minimalismus (v dokumentaci i provedení), proklientský přístup, častou aktualizaci a neustálé opakování celých koleček (návrh, implementace, testování…) na základě feedbacku od klienta. Tyto metody počítají s tím, že klient/zadavatel, neví, jaký výsledek vlastně chce – neustále se mu tak dávají pod nos dílčí výsledky, které okomentuje a zhodnotí – navrhne změny, které pak vývojový tým aplikuje. Jejich součástí je často až demokratický průběh vývoje a pravidelná a častá setkání nejen s klientem, ale také uvnitř týmu. Oblíbený SCRUM například tato setkání mezi vývojáři doporučuje každý den.
Příklad agilních metod:
SCRUM – charakterizovaný každodenními setkáními týmu a častými demonstracemi dosavadních výsledků klientovi, který na jejich základě navrhne změny, které jsou implementovány a tak pořád dokolečka. Vedoucí projektu je v tomto modelu hlavně prostředníkem mezi klientem a vývojářským týmem.
Extrémní programování – opět velký důraz na častou komunikaci s klientem, párové programování a neustálé udržování jednoduchého kódu (pomocí konstantního refaktoringu).
Lean – spíše než konkrétní postup zastřešuje Lean obecné principy, které by při řízení projektů měly pomoci. Jde například o eliminaci všeho, co klientovi nic nepřináší, neustálé učení se, rychlé a co nejpozdější rozhodování se, pěstování odpovědnosti týmu a nazírání na systém jako na celek.
Komentáře
Přidat komentář