Jsme tu pro vás PO - PÁ 9:00 - 17:00 info@systeum.cz +420 608 408 716

Jsme tu pro vás PO - PÁ 9:00 - 17:00 obchod@systeum.cz +420 608 408 716

Agile, Waterfall, DevOps: základní přehled přístupů k vývoji SW

Agile, Scrum, Waterfall, DevOps…Pojmy v oblasti vývoje SW jen lítají, a to se ještě držíme hodně při zemi. Pokud už jste vývoji SW nakoukli trochu pod pokličku, určitě jste zaznamenali, že se vlastně v každé firmě vyvíjí trochu jinak. Proč tomu tak je a jaké jsou tedy přístupy a způsoby vývoje SW? Připravili jsme pro vás průvodce základy, díky kterým možná trochu zastavíte ty točící se mozkové buňky a zpřehledníte si situaci.

Spolu s tímto článkem doporučujeme mrknout i na základní pozice, se kterými se během vývoje SW můžete setkat. 

Ať máme hned na začátek jasno: proces vývoje SW můžeme nazývat také životní cyklus vývoje SW. Tvoří ho 5 základních fází, díky kterým vznikne finální produkt: software v jakékoliv podobě vás jen napadne (aplikace, platforma, webovka…).

Zajímá vás oblast IT a hledáte pracovní pozice a pracovní příležitosti v IT oboru? Ať už jste programátor, developer, tester, analytik nebo software architekt, ozvěte se nám a my vám z naší nabídky IT práce najdeme IT projekt na míru. Podívejte se, jaká volná pracovní místa v IT oblasti momentálně nabízímePomůžeme vám najít nové pracovní výzvy a příležitosti. Těšíme se na spolupráci s vámi!

 

Vývoj SW není disciplína, kde by vystupovala tvrdá fakta jako například v medicíně, chemických pokusech nebo fyzice. Je to proces založený na zkušenostech a ověřených aktivitách. Abychom na konci procesu dosáhli žádoucího výsledku, rozumějte funkčního SW, potřebujeme vědět, co, kdy a kdo má v daném okamžiku dělat a proč to má dělat. Tyhle zásadní věci popisuje a shrnuje metodika. Metodika tedy určuje, jak k vývoji přistoupíme a jak dosáhneme právě toho finálního produktu. A právě tyto přístupy se poměrně výrazně liší.

Tradičně, agilně nebo raději DevOps?

Přístupy k vývoji, neboli metodiky, můžeme úplně základně rozdělit do 3 kategorií:

  1. tradiční způsoby vývoje
  2. agilní způsoby vývoje
  3. DevOps přístup k vývoji

U tradičních přístupů k vývoji jsou klientské požadavky definovány hned na začátku procesu a v průběhu vývoje se už nemění. Tým je tedy se zákazníkem v kontaktu na začátku ve fázi analýzy a pak až na konci, když se mu představuje hotový produkt nebo jeho prototyp, v průběhu se se zákazníkem vůbec nekomunikuje. 

Hlavní metodiky tradičního způsobu vývoje:

  • Build and Fix: model „napiš – oprav“
  • Stagewise: striktní posloupnost fází
  • Waterfall: vodopádový model 
  • Spirálový model 
  • Další metodiky: RUP, USDP, …

Agilní přístupy vývoje reagují na zrychlování doby i na potřeby zákazníka. Ten často na začátku neví, co přesně chce nebo se mu v průběhu změní podmínky, zdroje a on na to musí reagovat. Agilní metodiky proto kladou důraz na kontakt se zákazníkem i během řešení, priority se průběžně přehodnocují. Dobrého výsledku se dá dle „agilu” dosáhnout jedině tak, že se co nejrychleji navrhne nějaká část SW, předloží se zákazníkovi a na základě jeho zpětné vazby se upravuje.

Hlavní metodiky agilního způsobu vývoje:

  • Adaptivní vývoj softwaru 
  • Extrémní programování 
  • Lean Development 
  • SCRUM
  • Crystal metodiky 
  • Test-Driven Development 
  • Feature Driven Development

Jedním z novějších a v posledních letech čím dál tím rozšířenějších přístupů k vývoji je DevOps. Jak již samotný název napovídá, vychází ze spojení Development a Operations. Pochopení tohoto přístupu znamená v podstatě úplnou změnu myšlení nad tím, jak probíhá vývoj SW: Takže jednoduše zapomeňte, co jste si dosud přečetli. Máme pusto prázdno? Tak si pojďme vysvětlit DevOps.

Velice zjednodušeně SW doposud vznikal takto: Lidé zodpovědní za vývoj vytvořili aplikaci a předali ji systémovým administrátorům, kteří ji nasazovali pro užívání zákazníkům. Máme tedy vývoj (Development) a provoz (Operations), dvě skupiny, které jsou na sobě závislé. Pro dobrý výsledek je jejich komunikace klíčová, ale v praxi velmi složitá a často z různých důvodů nedostatečná. Věci, které jsou jednoduché z pohledu vývoje, nemusí být implementovatelné na serverech z pohledu infrastruktury. A to, co je velice snadno řešitelné v infrastruktuře bude zase velice těžký oříšek pro vývojáře.

Co když ale tyto dva „tábory” propojíme? Vznikne DevOps specialista, který napomáhá hladké spolupráci vývoje a provozu prostřednictvím vysoké úrovně kooperace, sdílení rizik, transparentnosti, automatizace a přijímáním změn.

Oproti ostatním stylům vývoje totiž realeasují produkt nebo aplikaci do ostrého prostředí mnohem častěji, což týmu umožňuje rychle opravovat chyby a zaručují krátkou dobu dodávky.

 

Waterfall

Agile

DevOps

základní filozofie

- požadavky zákazníka se v čase nemění
- upravuje se časový rozvrh, aby se dodržel rozsah zadání

 - vše lze předpokládat a specifikovat dopředu

- požadavky zákazníka se v čase mohou měnit
-  upravuje se rozsah zadání, aby se dodržel časový rozvrh
- vlastnosti produktu se specifikují průběžně, v iteracích

- požadavky zákazníka se v čase mění
- upravuje se rozsah zadání, aby se dodržel časový rozvrh
- stále se sbírá feedback zákazníka a zapracovávají se změny

jak vypadá dokumentace

velmi detailní a srozumitelná

spíše vágnější, jen základní body

spíše vágnější, jen základní body

využití automatizace

nízké

záleží na projektu

vždy vysoké

doručování výstupů zákazníkovi

pomalé (v řádech měsíců)

rychlé (v řádech týdnů/dní)

nepřetržitě

schopnost reakce na zákaznické změny

velmi limitovaná, specifikace je od začátku hodně detailní

ve fázích, reaguje na změny priorit

velmi dobře průběžně reaguje na změny

spolupráce

týmy pracují oddělené dle svých funkcí

zákazník je zahrnutý v jednotlivých vývojových cyklech

všichni stakeholdeři jsou zahrnuti od začátku do konce

riziko

s postupujícím projektem stoupá

s postupujícím projektem klesá

s postupujícím projektem klesá

pro jaké se hodí projekty

- projekty, kde je kladen velký důraz na stabilitu, bezpečnost, nemohou si dovolit chyby a je tedy potřeba velmi detailní testování
- odvětví, kde je hodně restrikcí,

- projekty, jejichž produkt může mít několik různých podob
- projekty v odvětvích, které jsou samy o sobě velmi dynamické a plné změn

- projekty v odvětvích, které jsou samy o sobě velmi dynamické a plné změn
- projekty, kde čas hraje velmi velkou roli

Vybrané metodiky zblízka

Pojďme si vzít lupu, prozkoumáme 3 základní přístupy ještě do trochu většího detailu.

SCRUM

Z agilních metodik je jednozańačně nejpoužívanější SCRUM. Nový projekt se zahájí představením vize výsledného produktu. Definují se vlastnosti, které má SW obsahovat a na základě nich se popisují tzv. User Stories.

Jak může vypadat User Story?

Jako uživatel CMS můžu:

  • nahrát fotografie
  • oříznout fotografie
  • změnit název fotografie
  • zobrazit změny provedené na fotografii

Všechny popsané User Stories se sepíší pod sebe do tzv. Product Backlogu. Následně se určí priority, na kterém úkolu se má začít pracovat nejdříve. Odhadne se čas, který může jejich tvorba zabrat a na základě toho se určí, kolik úkolů se stihne zpracovat v prvním sprintu. Sprint trvá ve Scrumu 2 týdny, maximálně měsíc.

Během sprintu si tým každý den organizuje 15 minutové porady, říká se jim denní scrum. Řeší se především problémy a věcné připomínky k vývoji. 

Po dokončení sprintu se předvádí produkt klientovi. Vlastnosti, které se nestihly dokončit, jsou skryty, klient tedy uvidí pouze dokončenou práci. Dané vlastnosti jsou vždy vyvinuty a otestovány. Klient ví, které úkoly se nestihly a může se rozhodnout, zda se dokončí. Implementace produktu do ostrého prostředí se dělá až na konci, kdy jsou vyvinuté a otestované všechny požadované vlastnosti produktu.

Ve Scrumu je kladen velký důraz na na analýzu rizik. Revize rizik na konci každé interakce, ale i v průběhu každodenních schůzek.

Výhody

  • pružná reakce na změny
  • větší volnost týmu  - metoda není tolik zaměřená na dokumentaci, ale spíš na kreativitu řešení
  • zapojení klienta do vývoje

Nevýhody

  • kvůli častým změnám může dojít k velkých odchylkám při odhadech ceny
  • úspěch z velké míry závisí na ochotě klienta spolupracovat
  • je potřeba poměrně seniorní a samostatný tým

WATERFALL

Metodika waterfall má spoustu kritiků, ale stále je ještě u některých projektů tím nejlepším možným řešením. Tento přístup k vývoji rozděluje projekt na jednotlivé fáze, které se snaží oddělovat, druhá fáze může začít až poté, co finálně skončila první atd…Většinou se setkáme s pěti základními fázemi:

Filozofie waterfallu spočívá v tom, že se na začátku stanoví poměrně detailní a striktní pravidla, kterých se následně všichni drží. Projektový tým má minimální prostor na změny.

Výhody

  • dobře se plánuje a kontroluje
  • umožňuje jasně určit zodpovědnosti
  • produkt je možné dodat i s méně kvalitním, juniornějším týmem

Nevýhody

  • poměrně neefektivní způsob vývoje
  • málo zpětné vazby od zákazníka
  • malá možnost reakce na změny

DEVOPS

A nakonec se ještě pojďme podívat na zoubek pár detailům DevOps přístupu.

Filozofií této metodiky je rozdělit projekt do menších vývojových celků, které umožní prezentovat zákazníkovi funkční produkt v co nejkratším čase a získat tak okamžitou zpětnou vazbu.

Základem jsou 3 principy:

  • průběžná integrace (continuous integration)

Pomáhá odhalit problémy už ve fázi kódování. Jakmile developer implementuje nějakou část hotového kódu do verzovacího systému, robot zkontroluje současnou verzi a upozorní na případné chyby.

  • automation testing

Časové efektivitě této metodiky nahrává hojné využívání automatizovaného testování. Testy si většinou developeři napíší sami a nemusí čekat na výsledky manuálního testingu. Pokud bychom měli tuto myšlenku dotáhnout až ad absurdum, měly by se nejdřív naprogramovat testy a pak až funkce.

  • průběžné nasazování (continuous deployment)

Průběžné nasazování hotových částí produktu do ostrého prostředí umožňuje efektivnější a flexibilnější dodávání produktu.

Výhody

  • kratší čas vývoje
  • spolehlivé releases nových částí produktu
  • rychlejší oprava chyb

Nevýhody

  • nutnost automatizovaného testingu
  • používání velkého množství nástrojů, mezi kterými se často přepíná
  • zatím je náročné získat odborníky s těmi správnými znalostmi a zkušenostmi

Závěrem ještě připomeneme to, že každý projekt je jiný a málokde se opravdu setkáte s tím, že bude praktické používání metodiky 100% zrcadlit teorii. Firma si vždy potřebuje vše přizpůsobit tak, aby to co nejlépe vyhovovalo jejím potřebám. To jen tak na okraj, aby se ty mozkové buňky, které jsme na začátku uklidnili, moc nenudily. :)

Přístupy k vývoji SW jdou stále krok po kroku dopředu, reagují na změny doby, požadavky klientů a samozřejmě i na časovou a finanční efektivitu. 

 

🟡 Hledáte zajímavý projekt? Mrkněte, jak to u nás chodí a jaké kolegy aktuálně hledáme.

🟡 Máte kolegu nebo kamaráda, který se poohlíží po novém projektu? Zapojte se do našeho referral programu Doporuč a získejte finanční odměnu za doporučení.

🟡 Chtěli byste začít pracovat v IT? Stáhněte si náš ebook ZAČNĚTE PRACOVAT V IT: aneb od prvních krůčků po vysněnou práci, ve kterém vás provedeme krůček po krůčku informacemi, kurzy i praxí, které jsou tolik potřebné nejen pro ty, kteří chtějí změnit obor, ale i pro ty, kteří se chtějí pracovně posunout a dále se vzdělávat.

🟡 Víte, jak si co nejjednodušeji a nejefektivněji připravit půdu pro nové pracovní začátky? Mrkněte na náš ebook: Připravte se na nová pracovní dobrodružství - Průvodce k úspěšné změně zaměstnání. Dream job je za dveřmi, stačí jen vzít správně za kliku.

Nebo sdílejte tento článek, který třeba poslouží i vašim známým.

Chcete dostávat naše články pravidelně do schránky? Nechte nám tady svůj email a my si rádi zahrajeme na poštovní sovy.

Mohlo by vás také zajímat

Znáte simulační teorii? 

čtení na 2 min 28.6.2022

Jakou cestu urazil vývoj her?

čtení na 3 minuty 1.10.2021

IT kdysi byla čistě ženská disciplí...

čtení na 4 minuty 18.1.2022

Testeři a programátoři: rozdílné tá...

čtení na 3 minuty 8.9.2021

Jakou cestu urazil vývoj her 2: her...

čtení na 4 minuty 7.10.2021

TOP 12 TED Talks o nových technolog...

čtení na 5 minut 4.5.2022

Jak se o nás mluví?
Zeptejte se našich klientů…

Systeum
Systeum

„Systeum je jedním z největších dodavatelů našich testerských kapacit. Můžu říct, že kvalita uchazečů je vysoko nad průměrem. Také oceňuji velkou ochotu vyjít vstříc všem našim požadavkům.“

Head of test execution

„Systeum je dlouhodobý partner, u kterého máme jistotu, že kandidáti jsou kvalitní a prověření. Od roku 2015 máme díky nim fungující kvalitní seniorní týmy C++ embedded vývojářů a auto testerů.“

Head of Payment Application

„Systeum, thank you for your help to find the right fit to my team! I can recommend cooperation with you to everybody. Very professional, smooth and friendly.“

IT CIM Inventory Management Development

Příklady dlouhodobé spolupráce

Porsche Moneta Raiffeisenbank Generali Komerční banka Monster