Jsme tu pro vás PO - PÁ 9:00 - 17:00 info@systeum.cz +420 777 607 467

Jsme tu pro vás PO - PÁ 9:00 - 17:00 obchod@systeum.cz +420 777 607 467

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…).

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. 

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
Číst dál

GPT-3 speaks at a human degree

čtení na 4 minuty 30.12.2020
Číst dál

11 tipů na online pohovor

čtení na 2 minuty 8.6.2020
Číst dál

Když prezentuje introvert

čtení na 2 minuty 7.10.2020
Číst dál

Jaká byla React Girls Academie?

čtení na 3 minuty 26.11.2020
Číst dál

Jak začít jako junior SW developer

čtení na 5 minut 21.10.2020
Číst dál

Co všechno víte o databázích?

čtení na 3 minuty 21.4.2022
Číst dál

Bitcoin is on the rise

čtení na 3 minuty 19.1.2021
Číst dál

Zlatá pravidla emailové etikety

čtení na 3 minuty 29.7.2020
Číst dál

Jak dobře znáte Jenkins? Díl I.

čtení na 4 minuty 29.7.2022
Číst dál

Pád a vzestup AMD

čtení na 3 minuty 12.8.2021
Číst dál

Take Control (DualSense vs Xbox One)

čtení na 4 minuty 3.12.2020
Číst dál

IT konference a online kurzy

čtení na 3 minuty 16.6.2020
Číst dál

Pohovor v IT: Jak se obléct?

čtení na 3 minuty 4.11.2020
Číst dál

Podporujeme ženy v IT

čtení na 2 minuty 19.11.2021
Číst dál

Jakou cestu urazil vývoj her?

čtení na 3 minuty 1.10.2021
Číst dál

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

„Na spolupráci nejvíce oceňuji individuální přístup. Systeum nám zajišťuje tým testerů, C/C++ a Java developery. Specialisté odpovídají našim požadavkům na znalosti síťových protokolů i cloud řešení.“

Chief Technology Officer

„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

Partneři, se kterými spolupracujeme

Porsche Moneta Raiffeisenbank Generali Komerční banka Monster