Agilní vývoj software – specifika smluvních podmínek

Agilní vývoj software – specifika smluvních podmínek

agilní vývoj software

Agilní vývoj software se stále víc stává standardem při uzavírání kontraktů, jejichž předmětem je vývoj softvérových produktů. Oproti tradičnímu „vodopádovému“ modelu přináší větší flexibilitu, efektivitu a schopnost rychle reagovat na změny požadavků. Právě tato flexibilita však klade specifické požadavky na smluvní vztahy mezi objednatelem a dodavatelem. Klasické smlouvy o dílo nemusí vždy odpovídat dynamice agilního vývoje, což může vést k právním nejasnostem a sporům. Tento příspěvek se zaměřuje na klíčové otázky související s agilním vývojem softwaru a poskytne doporučení, jak minimalizovat stěžejní právní rizika.

Agilní vývoj obecně

V tradičním modelu vývoje softwaru je obvyklé uzavřít smlouvu o dílo, která stanoví pevný rozsah prací, termíny a cenu. Agilní metodika však pracuje iterativně, kdy se výsledný produkt vyvíjí a mění v průběhu času. To znamená, že striktní smlouva s pevně stanoveným výsledkem nemusí být pro agilní vývoj ideální. Agilní vývoj vyžaduje, aby smluvní rámce a správa projektů byly dostatečně flexibilní, aby reflektovaly potřebu častých změn, iterativní práce a zvyšující se nároky na kvalitu produktu. Smlouva v agilním kontextu by měla vymezovat procesy, které umožní adaptaci na měnící se podmínky a umožní plynulý přechod mezi jednotlivými fázemi projektu.

Fáze agilního vývoje software

Agilní vývoj software probíhá obvykle v opakujících se cyklech, ve Scrum metodologii známých jako „sprinty„, kde každá iterace má jasně definovaný cíl. Tyto iterace mohou přinášet různé výstupy, které mohou ovlivnit další směrování vývoje softvérových produktu. Smlouvy by měly zohlednit tuto iterativní povahu a umožnit přizpůsobení na základě aktuálních výsledků každé fáze, což zahrnuje i změny v termínech nebo rozpočtu. Jednotlivý sprint se obvykle skládá z fáze plánování obsahu sprintu, kdy se z produktuktového backlogu (požadavků objednatele na výsledný softvérový produkt) určí sprint backlog a stanoví se celkový obsah sprintu.  Požadavky v product backlogu se během účinnosti smlouvy mění, výchozí požadavky tedy nejsou neměnné.

Následují fáze samotného vývoje příslušné části software, testování, vydání příslušné částí software, vyhodnocení a následné dokončení.  Výsledkem sprintu je tedy inkrement (přírůstek) celého software, zpravidla jako samostatně funkční část cílového softvérového produktu. Délka každého sprintu je většinou v rozsahu 1 – 4 týdnů.

U agilního vývoje software nemá objednatel při uzavírání smluvního vztahu mnohdy detailní představu o tom, jaké všechny vlastnosti by výsledný softvérový produkt, tedy dílo, měl mít. Pro naplnění požadavku na určitost definice díla by ho objednatel měl být schopen specifikovat alespoň ve formě „user story“, tedy stanovení toho k čemu bude výsledné dílo sloužit a zároveň nastavit jasná pravidla pro zpřesnění specifikace software během jeho vývoje.  

Smlouvy na agilní vývoj software 

Z hlediska smluvních typů připadá v případě agilního vývoje software v úvahu několik možností, přičemž existují tři hlavní typu úpravy vztahů u smluv na agilní vývoj software.

Smlouva o dílo

Je možné použít smlouvu o dílo, jejímž předmětem je vytvoření díla s nehmotným výsledkem, tedy softwaru jako počítačového programu, dle § 2631 a násl. zákona č. 89/2012 Sb., občanského zákoníku s výraznější modifikací jednotlivých zákonných ustanovení ve smyslu potřeby zapracování podmínek agilního vývoje.

Smlouva o poskytování služeb

Druhou variantou je smlouva o poskytování služeb ve smyslu inominátní smlouvy dle § 1746 odst. 2 občanského zákoníku. Není nezvyklé uzavření takové smlouvy ve formě tzv. „bodyshoppingových smluv“ kde si objednatel pronajímá realizační tým dodavatele.

Hybridní smlouva

Nejčastěji se ale u agilního vývoje software bude jednat o hybridní smlouvou mezi uvedenou smlouvou o dílo a smlouvou o poskytování služeb, která objednateli umožní kombinaci flexibility a finanční jistoty. Alternativně je možné zvažovat uzavření rámcové smlouvy a jednotlivé sprinty pak objednávat formou dílčích objednávek.

Celkově je však možné shrnout, že v rámci smlouvy na agilní vývoj software je vhodné se zaměřit na:

  1. Výběr vhodné metody agilního vývoje – například Scrum, Kanban, Extreme Programming, Test Driven Development, nebo Feature Driven Development, aby bylo jasné, jak spolupráce bude probíhat.
  2. Podmínky pravidelných dílčích dodávek (sprintů) a alespoň rámcovou definici výsledného produktu – např. zadání jednotlivých sprintů, délku trvání, změny, podmínky akceptace, měřitelnost výstupů, nebo podmínky analytické fáze projektu.
  3. Postup pro změny v požadavcích – stanovení podmínek pro úpravy celého procesu vývoje software, a to i v rámci jednotlivých sprintů.
  4. Používané nástroje a jejich podmínky – např. open source software, AI, cloud, hosting, zálohování, systémové požadavky.
  5. Práva a povinnosti stran – např. poskytované informace, odpovědností vztahy, prohlášení a záruky, ochranu informací, ustanovení k ochraně dat, GDPR.
  6. Mechanismus akceptace – jak se schvaluje dokončená část softwaru včetně důrazu na jednotlivé dílčí akceptace výsledků jednotlivých sprintů.
  7. Licencování software – rozsah jednotlivých licenčních oprávnění, otázka poskytnutí zdrojových kódů, případně otázka postoupení výkonu majetkových práv, vše i s důrazem na dílčí předávky výsledků sprintů.
  8. Cenové podmínky – cena nebývá pevná, ale bude se odvíjet od stanovených podmínek (např. cena za sprint), nebo bude obsahovat jen maximální rozpočet a hodinové sazby za realizační tým.

K vybraným podmínkám jednotlivých smluvních ustanovení smluv na agilní vývoj software

V agilním vývoji je kladen důraz na spolupráci a komunikaci mezi týmy (jak mezi vývojáři, tak s klientem). Tento prvek by měl být reflektován v samotné smlouvě v podmínkách nastavení řízení projektu na vývoj software. Rovněž je u agilního vývoje kladen důraz na samostatnost jednotlivých týmů a jejich schopnost rozhodovat v rámci daných cílů.

Odpovědnost stran

Smlouva by měla proto jasně vymezit odpovědnosti všech stran, včetně odpovědnosti za vedení projektu, nebo odpovědnosti jednotlivých profesních skupin zapojených do vývoje software (např. u vývojářů, testerů, produktového vlastníka). Z tohoto hlediska je vhodné, aby smlouva na agilní vývoj software obsahovala mechanismy pro pravidelnou zpětnou vazbu mezi klientem a vývojovým týmem. Pravidelná setkání, například týdenní nebo měsíční revize, pomáhají nejen sledovat pokrok v samotném vývoji softvérových produktů, ale také identifikovat případné oblasti pro zlepšení, což je klíčové pro agilní přístup.

Licenční práva k software

Vzhledem k iterativní povaze agilního vývoje je dále důležité přesně definovat, k jakým okamžikům se udělují jednotlivé licenční práva k software (např. po skončení každého sprintu, nebo během trvání každého sprintu v okamžiku vytvoření příslušné částí software), jejich rozsah (např. výhradní, nevýhradní licence) a rovněž i vyřešit otázku předávání zdrojových kódů, případně otázku postoupení výkonu majetkových práv.

Open-source komponenty

Pokud vyvíjený software obsahuje open-source komponenty, je nutné zohlednit jejich licenční podmínky (např. GPL vs. MIT a Apache a podobně). Nesprávné použití může vést k řešení složitých právních důsledků. Smlouva na agilní vývoj software by proto měla obsahovat definici jaké typy open source licencí jsou povoleny a požadovat od dodavatele seznam použitých open source knihoven.

Citlivé informace a GDPR

Agilní vývoj často zahrnuje práci s citlivými informacemi, jako jsou zákaznická data, obchodní tajemství nebo technologické know-how. Proto je klíčové ošetřit ve smlouvě otázky důvěrnosti a ochrany osobních údajů. Pokud software pracuje s osobními údaji, musí být v souladu s GDPR.

To znamená, že smlouva by měla upravit mimo jiné: kdo je správcem a kdo zpracovatelem dat, jaká opatření budou přijata k ochraně dat a i oblast práv subjektů údajů (např. právo na výmaz).

Standardy kvality

Zajištění kvality softwaru v agilním vývoji je založeno na neustálé testování a zpětné vazbě. V právním kontextu je nezbytné definovat podmínky, za kterých bude software považován za hotový a jaké standardy kvality musí být splněny. Tyto standardy mohou zahrnovat testování na různých úrovních (unit testy, integrace, system testy), ale také požadavky na uživatelskou přívětivost, výkon, kompatibilitu a další aspekty, které ovlivňují použitelnost softwaru.

Vady

Je proto taky důležité správně definovat, co se považuje za vadu – například nesprávné fungování v souladu s uživatelskými požadavky, jak se vady budou odstraňovat – například určením priorit a lhůt na opravy, co se nepovažuje za vadu – například změna požadavků zákazníka po dokončení sprintu.

Cena

Smluvní cena u agilního vývoje software nebývá, vzhledem k charakteru procesu agilního vývoje, kdy na začátku celého procesu nebývá zřejmý ještě celkový rozsah díla, pevná. Je možné určit maximální rozpočet a jednotlivé dílčí ceny, například hodinové sazby. Případně ceny za jednotlivé sprinty s určením předpokládaného množství sprintů, případně kombinace uvedených variant. 

Závěr

Jak bylo uvedeno, v agilním vývoji softwaru se klade důraz na flexibilitu, spolupráci a rychlou adaptaci na změny. Tradiční smluvní rámce, které bývají zaměřeny na pevné termíny a rozsah, často nejsou kompatibilní s tímto dynamickým přístupem. V tradičním vývoji se dílo považuje za dokončené obvykle až po finálním předání a testování. V agilním přístupu probíhá testování průběžně a jednotlivé části softwaru jsou předávaný po každém sprintu. Na každý takto odevzdaný inkrement po dokončeném sprintu je možné uplatnit zákonná ustanovení o předání díla, odpovědnosti za vady, následcích neoznámených výhrad objednatele k předanému inkrementu a neurčí-li smlouva jinak i zaplacení příslušné části ceny.

Závěrem lze uvést, že agilní vývoj softwaru přináší řadu výhod, ale také právní výzvy, kterým je třeba čelit vhodnou smluvní úpravou. Klíčem k minimalizaci rizik je dostatečně flexibilní smlouva, která umožňuje iterativní dodávky, přizpůsobení požadavkům a jasně definuje odpovědnost stran. Správně nastavené smluvní mechanismy nejen snižují pravděpodobnost sporů, ale také podporují efektivní spolupráci mezi vývojovým týmem a objednatelem.

Zdroj: epravo.cz

Potřebujete právní radu ohledně IT práva? Nevíte si rady s tím, jak zasmluvnit agilní vývoj software? Poradíme Vám!

JUDr. Bc. Matej Šandor, Ph.D., MBA, spolupracující advokát

Dočetli jste až sem?

Přihlašte se k odběru novinek

Uveďte zde svůj e-mail, ať Vám neuteče žádná aktualita z naší kanceláře.
Další články

Děkujeme za návštěvu našich stránek.

Pokud nechcete přijít o žádné dění v naší kanceláři, dovolujeme si Vám nabídnout přihlášení k odběru aktualit. Stačí vyplnit Váš e-mail.

Advokátní kancelář Vych a partners