6. února 2010

Jak nebýt rukojmím programátorů

S rozvojem IT souvisí rostoucí závislost společností na jejich programovém vybavení. Procesy mezi firmami, zákazníky, zaměstnanci, vládními institucemi všechny vznikají a jsou řízeny prostřednictvím informačních technologií. Je to ale software, díky kterému vše funguje rychleji a efektivněji.

Jako velká firma se specifickými požadavky jste často nuceni nakupovat software od relativně malých, ale o to více specializovaných vývojářů. Ti jsou schopni přizpůsobit se vašim požadavkům. Často se jedná o informační systémy šité na míru vaší obchodní činnosti a tedy hlavní prostředky určené k vaší prosperitě. Software se stává klíčem k úspěchu a podnikání bez něj si nedokážete představit ani ve snu? Pak jistě víte, co mám na mysli. Tyto kontrakty vám přináší kromě nesporných výhod i řadu starostí a nových rizik. Jde především o vybudování si závislosti na dodavateli, z něhož se rázem stává obchodní partner s výhradním postavením – je jediným, kdo je schopen váš byznys udržovat. Dodavatele obvykle nebývá snadné vyměnit, rozhodně ne tak snadné, jako byste to udělali s nevyhovujícím správcem vašeho vozového parku.


Vývoj a údržba softwarového produktu
Ve vztahu se softwarovým dodavatelem tímto způsobem postupovat nelze. Programátoři vytvářejí aplikaci psaním zdrojového kódu, tedy zápisu srozumitelnému pro člověka – specializovaného vývojáře. Zdrojový kód je následně počítačem přeložen do strojového (binárního) formátu a ten se stává čitelným pouze pro hardware počítače. Zákazníkovi bývá často předána pouze tato binární podoba aplikace, protože je pro provoz softwaru plně dostačující. Zdrojové kódy se stávají úzkostlivě střeženým obchodním tajemstvím a zákazníkům jsou poskytovány jen ve výjimečných případech. Zpravidla se výrobci pouze smluvně zavazují ke kontinuální podpoře a údržbě svého produktu.

S novými obchodními záměry přichází i nové požadavky na software a jeho dodavatele. Pokud si zákazník přeje v produktu nějaké změny nebo opravy chyb, kontaktuje výrobce softwaru. Ten provede požadované úpravy ve zdrojovém kódu, vygeneruje novou binární verzi aplikace a ta je znovu nasazena do jeho provozního prostředí.

Pokud vše funguje v těchto zaběhnutých kolejích, není důvod k žádné změně. Jaké má však zákazník jako uživatel softwaru možnosti, pokud se výrobce rozhodne vypovědět podporu nebo z jiných důvodů není schopen produkt dále udržovat a vyvíjet?

Zajištění investice do zakázkového softwaru

Aniž si to některé firmy uvědomují, software se stává rizikovým článkem jejich podnikání. Vzniká silná závislost firem na dodavatelích software, kteří musí být schopni souvisle podporovat softwarové vybavení tak, aby nedocházelo k nežádoucím výpadkům a tím k finančním ztrátám; hovoříme o tzv. business-critical aplikacích. S nadsázkou řečeno, budoucnost firmy je závislá na výrobci softwaru, který poskytuje správu a údržbu kritické aplikace firmy. Jaká jsou východiska z této situace? Jak případně řešit nefunkčnost aplikace a zajistit kontinuitu? V podstatě existují tři možnosti:

Náhrada jiným softwarem
– varianta náročná jak finančně tak časově. Může být zkázou pro ekonomický růst firmy.

Pokračovat v provozu aplikace dále bez technické podpory
– přináší nepřijatelná rizika ohrožující obchodní činnost.

Zajistit si podporu stávajícího softwaru u jiného dodavatele nebo přímo vlastními zdroji
– k tomu je potřeba zdrojových kódů.

Nejschůdnější variantou je bezesporu třetí možnost – zajištěný správy a údržby programu vlastními silami nebo s pomocí jiné vývojové společnosti. Zdrojové kódy včetně programového a dokumentačního vybavení jsou však podklady, bez kterých je technická podpora softwaru nemožná. Východiskem z této zdánlivě bezvýchodné situace je software escrow.

Software escrow
Escrow je podmíněná úschova hodnotné věci u důvěryhodné třetí strany. Využívá se při předávání cenností mezi dvěma obchodujícími stranami. Důvěryhodná třetí strana zajistí věrohodnost uloženého materiálu a vydání určené straně v případě naplnění sjednaných podmínek výdeje. Pokud jde o software escrow máme na mysli určitou formu pojištění proti úpadku výrobce softwaru nebo ztrátě kvality jeho služeb. Společnosti poskytující tyto služby nazýváme software escrow agenty.

Nejlépe už při uzavírání kontraktu je dobré poohlédnout se po možnostech úschovy zdrojových kódů. V Česku často vystupují v rolích software escrow agentů advokátní kanceláře. Jejich činnost spočívá především v právních konzultacích, vypracování escrow smlouvy a uložení zdrojových kódů na přenosném médiu do bezpečnostní schránky v bance. Tím jsou zdrojové kódy zabezpečeny proti vyzrazení a je zajištěno vydání zdrojových kódů právoplatné straně. Horší už to bývá s orientací na zajištění kontinuity provozu dotčeného software. Přitom právě ta je smyslem celého software escrow. Je třeba pamatovat, že zdrojové kódy a programové vybavení musí skutečně odpovídat binárnímu programu nasazenému v živém provozu v době úschovy a musí být pravidelně aktualizovány, nejlépe vždy při nasazení nové verze do provozu.

Pokud nejsou tato ověření provedena na kvalitní úrovni, nemáte jinou možnost než důvěřovat programátorům, kteří digitální materiál pro potřeby úschovy připravili a zdokumentovali. Je zde tedy patrné další riziko, a to bezúčelnosti nebo zbytečnosti celého procesu úschovy. Při jeho naplnění by nový softwarový dodavatel nebyl schopen programové vybavení z úschovy používat a musel by vynaložit nepřiměřené úsilí, aby provedl nutné změny vedoucí k nápravě a mohl pokračovat v údržbě vašeho softwaru. Ke službám software escrow agenta patří možnost ověření na několika úrovních, správný výběr takové služby je závislý na více okolnostech. Může jej ovlivnit jak typ uschovávaného softwaru, tak důvěra ve stávajícího dodavatele. Volbou vhodného agenta se tak zabývají jak výrobci softwaru, tak jeho uživatelé – vlastníci licencí. Rozhodující slovo má většinou výrobce, protože tomu záleží nejvíce na subjektu zodpovědném za manipulaci a uložení zdrojových kódů.

Mezi služby software escrow agentů se řadí tzv. technická verifikace zdrojových kódů – jde o ověření, zda opravdu lze vytvořit z dodaných zdrojových kódů plnohodnotný informační systém ve verzi aktuálně provozované v živém provozu zákazníka. Zdrojové kódy jsou zkompilovány pro konkrétní typ programového příslušenství. Po zprovoznění programu následuje krátký „smoke test“, jak je v programátorské hantýrce nazýván rychlý test korektního nasazení a konfigurace systému (závisí na typu aplikace).

Cílem verifikace je dokázat dvě výše zmiňovaná tvrzení, tedy reálnost zkompilování zdrojových kódů a jejich aktuálnost. Jedině tímto nebo podobným způsobem je možné stoprocentně zajistit, že zdrojové kódy budou v případě potřeby použitelné. Pokud není technická verifikace provedena, musí se uživatel spokojit s verifikací nižší úrovně a čestným prohlášením vývojáře, který je zodpovědný za přípravu zdrojových kódů do úschovy.

Escrow smlouva a její náležitosti
Licenční smlouva nebo smlouva o údržbě obvykle obsahuje klauzuli, která se odkazuje na escrow smlouvu – trojstrannou dohodu uzavřenou mezi výrobcem softwaru, uživatelem a software escrow agentem. Strana, která inicializuje úschovu zdrojových kódů, se dohodne na podmínkách s escrow agentem a poté přivádí k jednání i třetí stranu, která má možnost smlouvu připomínkovat.

Smlouva popisuje hlavní rysy procesu předání zdrojových kódů od výrobce software do úschovy k escrow agentovi, včetně popisu, co vše a jak často bude uchováváno. Kromě zdrojových kódů bývá často uloženo i veškeré nezbytné programové vybavení nutné k provozu a správě aplikace. Dále je popsáno, jakým způsobem obdrží uživatel softwaru digitální materiál, dojde-li k naplnění podmínek výdeje. Ve většině případů mezi podmínkami nechybí:
  • krach výrobce softwaru
  • porušení escrow smlouvy ze strany výrobce softwaru
  • porušení povinností vyplývajících ze smlouvy o údržbě
Vyjednávání o smlouvě bývají nezřídka komplikovaná. Častou snahou výrobce softwaru je omezit podmínky výdeje zdrojových kódů na podmínku poskytování kontinuální údržby a podpory softwaru. Uživatelé softwaru mají zase tendence vynutit si nárok na zdrojové kódy i při tom nejmenším zaváhání dodavatele. Výrobce softwaru se ve smlouvě zavazuje, že uschovaný zdrojový kód obsahuje veškeré programové vybavení nutné pro kompilaci zdrojových kódů (build skripty, build návody, knihovny třetích stran, vývojové nástroje…). Další náležitostí smlouvy je licence pro zdrojové kódy, definující jakým způsobem s nimi bude nakládáno po vydání, jistě by měli být využity pouze pro účely údržby a spravovány jako důvěryhodné.

Jan Dancinger

Autor článku pracuje jako obchodní zástupce pro službu www.deponest.com ve společnosti Aiteq Ltd. Kontaktovat ho můžete na adrese jan.dancinger@deponest.com

Článek publikován v časopise CIO Business world 11/09 nakladatelství IDG.

1 komentář:

Moderátor blogu si vyhrazuje právo odstranit komentáře netýkající se tématu, poškozující blog nebo autora příspěvku, PR sdělení a sběr zpětných odkazů.