Agilní vývoj softwaru umožňuje společnostem rychle reagovat na změny trhu a požadavky zákazníků, avšak přináší i různé právní výzvy. Správně nastavená smlouva je klíčem k minimalizaci rizik a zajištění úspěchu projektu. V tomto článku se podíváme na klíčové právní aspekty agilního vývoje, od volby vhodného smluvního typu až po zajištění ochrany práv a odpovědnost za vady.
Klasická smlouva o dílo je vhodná pro waterfall vývoj softwaru, tedy vývoj, u kterého máte předem jasné, co potřebujete vytvořit a kdy to chcete mít hotové. Na základě toho je možné se předem dohodnout na ceně za vývoj.
Agilní vývoj softwaru vyžaduje na rozdíl od toho mnohem pružnější právní rámec. V tomto případě totiž sice obecně víte, co chcete vytvořit (například aplikaci, ve které si můžete objednat jídlo), ale konkrétní vlastnosti a funkce představujete vývojovému týmu až v průběhu vývoje. A to například na základě zpětné vazby zákazníků nebo toho, co je zrovna „in“. Třeba až po měsíci vývoje se můžete rozhodnout, že chcete, aby si mohly restaurace jednoduše měnit menu a ceny za jídlo. Po čtvrt roce se rozhodnete dávat zákazníkům za objednávky body a po roce objednat si jídlo na konkrétní čas. Vývoj bude zkrátka probíhat postupně v krátkých cyklech, tzv. iteracích, přičemž obvykle trvá jeden cyklus několik dnů až týdnů.
Pro waterfall vývoj se často volí smlouva o dílo, ve které je nutné mít popsaný výsledek práce dostatečně přesně už při uzavření smlouvy. Průběžné změny „zadání“ nejsou pro smlouvu o dílo ideální. Pokud potřebujete vlastnosti díla specifikovaného ve smlouvě o dílo změnit, zpravidla musíte uzavřít dodatek se změnou definice díla a případně i termínu dodání a ceny.
V případě správně nastavené agilní smlouvy by to mělo být ale daleko snazší. Pro tento vývoj je proto vhodné zvolit tzv. inominátní smlouvy. Jde o smlouvy, které nejsou typově přímo upraveny v občanském zákoníku (a nebudou se na ně podpůrně vztahovat například zákonná ustanovení smlouvy o dílo nebo kupní smlouvy), ale ve kterých si pravidla vývoje určíte od začátku do konce sami. Smlouva může být pojmenována třeba jako „Smlouva o agilním vývoji software“ nebo „Smlouva o spolupráci při vývoji software“.
V inominátních smlouvách je bohužel opravdu nutné myslet na vše. Pokud tam něco nebudete mít od začátku, těžko se budete něčeho dožadovat po druhé straně až při objevení problému. Nezapomeňte tak do smlouvy o agilním vývoji zařadit následující.
Agilní vývoj má mnoho podob a existuje více agilních metodik. Každá společnost nebo dokonce i každý vývojový tým může při vývoji postupovat trochu jinak. Proto je potřeba ve smlouvě specifikovat, kterou podobu, respektive metodiku jste si zvolili zrovna pro váš projekt. Například byste se měli dohodnout, jakým způsobem budou zadávány požadavky, jak se budou vybírat ty, které mají přednost, jak dlouho bude trvat sprint, jak se bude kontrolovat plnění požadavků ve sprintu apod.
V této souvislosti bude pravděpodobně potřeba vymezit ve smlouvě i některé definice typické právě pro agilní vývoj. Zejména se jedná o pojmy, jako třeba produkt, produktový cíl (product goal), product backlog (volně přeloženo jako „nedodělky produktu“, sprint, ale také se můžete při vývoji držet „company vision“, „business strategy“, „product vision“ a „product strategy“.
Agilní vývoj je založen na flexibilitě a schopnosti rychle reagovat na změny. Flexibilita ve smlouvách pro agilní vývoj je základním předpokladem pro efektivní a úspěšnou spolupráci mezi vývojářským týmem a zadavatelem. Proto by smlouva měla umožňovat průběžné úpravy jak technických požadavků, tak i časového harmonogramu nebo rozpočtu. Smlouva by měla také zahrnovat ustanovení o pravidelných schůzkách mezi zástupci obou stran (např. sprint planning nebo stand-up meetingy), kde se projednávají pokroky, změny v požadavcích a případné problémy.
Dalším z klíčových právních aspektů nejen agilního vývoje je otázka vlastnictví práv k výstupům. Při agilním vývoji, kdy se software vytváří postupně a neustále se vyvíjí, je nezbytné jasně definovat, kdo vlastní práva k jednotlivým verzím softwaru a jak mohou být tato práva využívána. Smlouva by měla stanovit, zda jsou jednotlivé dodané části díla považovány za samostatné výsledky, nebo zda se na ně pohlíží jako na dílčí etapy celkového díla.
Kromě toho je důležité upravit odpovědnost za vady, zejména jakým způsobem budou vady identifikovány, kdo je odpovědný za jejich odstranění a jaké jsou termíny a sankce pro případ jejich neodstranění. V agilním prostředí je možné vady identifikovat jak během vývoje v iteracích, tak při akceptačním testování, nebo i po dlouhodobějším testováním funkcionality. Smlouva by tedy ideálně měla obsahovat zmínku o tom, jak řešit vady zjištěné v každé z těchto fází.
Agilní vývoj vyžaduje intenzivní komunikaci mezi dodavatelem a objednatelem a mezi vývojáři a osobami, které projekt vedou. Smlouvy by měly jasně definovat způsob a frekvenci komunikace, aby se předešlo nedorozuměním a zajistilo, že obě strany jsou informovány o postupu prací a případných změnách.
Mělo by se počítat s tím, že příliš formálně nastavené způsoby komunikace a případného schvalování dohodnutých procesů zpomalují vývoj a oslabují onu agilitu. Pro agilní vývoj jsou tedy typičtější méně formální komunikační prostředky, ať už se jedná o komunikaci prostřednictvím e-mailů, aplikací nebo třeba SMS. I způsob komunikace doporučujeme upravit přímo ve smlouvě.
V agilním vývoji je kladen důraz na kvalitu softwaru, který by měl být pravidelně testován a upravován na základě zpětné vazby. Smlouvy by měly zahrnovat ustanovení týkající se pravidelného testování, a to jak interního, tak ze strany uživatelů, a měly by definovat proces pro řešení případných problémů.
V neposlední řadě je důležité zajistit, že smlouva obsahuje jasné podmínky pro ukončení spolupráce, a to jak v případě dokončení projektu, tak v případě jeho předčasného ukončení. To zahrnuje stanovení pravidel pro výpověď smlouvy, odstoupení od smlouvy a řešení sporů.
Doporučujeme nezapomenout sjednat také povinnost dodavatele předat objednateli veškeré materiály nutné pro užívání a správu vytvořeného produktu, zejména zdrojový kód a aktuální a podrobnou dokumentaci k softwaru. Zároveň by si měl objednatel ověřit, že má všechna potřebná práva a licence nejen k užívání, ale třeba i úpravě produktu.
Aby se minimalizovala právní rizika, svěřte se do rukou odborníkům, kteří agilnímu vývoji rozumí. Pro tvorbu kvalitní smlouvy je zásadní komunikace mezi právníky, kteří smlouvu tvoří, objednatelem a dodavatelem software. My už se smlouvami o agilním vývoji zkušenosti máme, a rádi vám pomůžeme i s tou vaší. Stačí nám napsat na kancelar@kroupalide.cz.
Případně pro vás můžeme připravit školení na míru, během kterého si o právních specifikách agilního vývoje můžeme říct více.
KROUPALIDÉ advokátní kancelář s.r.o.
IČO: 29310571, DIČ: CZ29310571
Společnost zapsaná v obchodním rejstříku vedeném Krajským soudem v Brně pod sp. zn.
C 73338
Subjektem mimosoudního řešení sporu
se spotřebiteli je Česká advokátní komora