Jak se dělá ShopSys® (video)
10. 02. 2010

Na základě četných podnětů našich zvídavých zákazníků jsme se rozhodli, že se s vámi podělíme o část našich znalostí v seriálu populárně-vědeckých článků. Příspěvek našeho vedoucího vývojáře Martina Šustka ukazuje na výhody a nevýhody různých druhů softwaru a popisuje způsob vývoje e-shopů ShopSys®.
Zdravím všechny příznivce aplikace ShopSys®! Jmenuji se Martin Šustek a ve společnosti netdevelo pracuji jako vedoucí oddělení vývoje. Tímto článkem poodhalím roušku tajemství, takže máte exkluzivní možnost zjistit, jak ShopSys® vzniká a funguje a podíváme se na to, jak lze zkombinovat dva zdánlivě protichůdné požadavky na naši aplikaci ShopSys®, tedy téměř neomezenou variabilitu a přitom snadnou, rychlou a levnou údržbu.
Typy softwaru
Podle strategie vývoje můžeme softwarové produkty rozdělit do dvou skupin. První skupinou jsou produkty implementační, které se vyznačují vysokými možnostmi přizpůsobení a tvorbě aplikace v podstatě na míru konkrétním uživatelům. Druhým přístupem je snaha vytvořit produkt, který bude v nezměněné podobně použitelný pro co největší masu uživatelů, někdy se tomu říká také „krabicový“ software.
Typickými příklady implementačních produktů jsou velké, na zakázku
vytvářené, CRM a workflow systémy typu SAP, Altus Vario apod. Nasazení těchto systémů trvá
zpravidla několik měsíců. Nejprve analytici zkoumají obchodní model
klienta, později navrhují možná řešení, programátoři aplikaci
připraví, následně se aplikace v několika kolech testuje a dokončuje.
Nakonec se zaškolí uživatelé a teprve pak je program připraven k použití
a přináší nějaký užitek.
Díky tomuto přizpůsobení je aplikace „šitá na míru“ konkrétním
uživatelům a jejich požadavkům mnohem lépe. Na onu individualizaci je
ovšem nutné se dívat také z druhé stránky, protože vyžaduje
individuální přístup vývojářů a velmi znesnadňuje jakékoli pozdější
úpravy aplikace.
Byť se produkt jmenuje stejně, každá kopie je jiná, a proto je také
hledání závad a jejich odstraňování, stejně jako další práce, mnohem
složitější. Je jasné, že cena za pořízení i údržbu takového
řešení je vysoká důsledkem množství vykonané práce.
Příkladem druhé zmiňované skupiny produktů – takzvaných
„krabicových řešení“ jsou například počítačové hry, kancelářské
balíky a podobně. Krabicový způsob vývoje probíhá tak, že se vyvíjí
jediná verze aplikace, která se dokončí a pak nasazuje na různých
místech. Snahou je snížit náklady na vývoj tím, že se prodá co nejvíce
kopií.
Pokud vyjde nová verze, stačí jí nahradit tu starou a jede se dále.
Výhodou tohoto postupu je úspora nákladů a možnost nabídnout nižší
cenu. Nevýhodou tohoto přístupu je, že prostým přepsáním souborů
přijde zákazník o všechny individuální úpravy.
Řešení problému individualita versus údržba je několik, ale všechna
mají svá úskalí. Můžeme například každou novou verzi aplikace
individualizovat znovu. Tím ale přijdeme o ekonomickou výhodu. Další
možností je přidávat všechny individuální úpravy do hlavní verze a na
jednotlivých instalacích odlišnosti zapínat nebo vypínat. Ač se to zdá
jako rozumné řešení a v praxi se tento přístup často používá, nikdy
nenabídne dostatečnou volnost pro individuální úpravy a společně s tím,
jak se aplikace neustále zvětšuje o nové a nové vlastnosti, klesá její
výkon a je náročnější na vývoj i údržbu.
Takže jediným spolehlivým řešením problému krabicových aplikací je
slevit z požadavku na individuální úpravy nebo možnosti aktualizace.
Z pochopitelných důvodů se nelze zbavit bezpečnostních, výkonnostních,
legislativních a dalších aktualizací; tím, co obvykle bere za své, je
přizpůsobení aplikace potřebám uživatelů. Zkuste si zavolat na hot-line
Microsoftu, že chcete mít ve svých Windows tlačítko Start vpravo.
Jak vyřešit dilema mezi krabicovou a implementační aplikací? Představíme Vám naše řešení, které kombinuje výhody a smazává nevýhody obou přístupů.
Jak se dělá ShopSys®
Vývoj aplikace ShopSys® probíhá centralizovaně. Všechny
zdrojové kódy jsou ukládány v repozitáři systému Subversion (SVN), kde není uložená jen aktuální verze, ale
i veškerá historie jednotlivých změn provedených programátorem, stejně
jako všechny vývojové větve a každá jednotlivá instalace.
V repozitáři se eviduje každá změna zdrojového kódu, kdo změnu provedl,
datum změny a další informace technického charakteru. Každou takovouto
změnu, ať už opravu chyby, přidání nové funkcionality nebo jiné
kvalitativní vylepšení, je možné zpětně zrekonstruovat i na jiné
instalaci aplikace.
Práce se systémem je jednoduchá. Nejprve si vývojář vyžádá zdrojové kódy pomocí příkazu „checkout“ (získat). Pokud někdo změní zdrojové kódy během jeho práce, může si stáhnout novou verzi příkazem „update“ (aktualizovat). Provede-li potřebné úpravy, použije příkaz „commit“ (odevzdat), čímž uloží své změny do repozitáře. Před přípravou nového e-shopu vytvoříme kopii výchozí verze příkazem „copy“. Na rozdíl od standardní kopie souborů, tato kopie v repozitáři nikdy neztratí svou vazbu na původní verzi. Vylepšuje-li se nebo opravuje původní verze, lze tyto změny sloučit se změnami konkrétního e-shopu příkazem „merge“. Automaticky je provedena většina potřebných úprav a problémová místa, kde je nutný lidský zásah, systém vyhodnotí, přehledně označí a nabídne programátorovi možnosti řešení.
Systém SVN ale řeší kromě problému individualizace versus aktualizace
i další problémy, se kterými se setkávají vývojáři softwaru.
Umožňuje přístup několika lidem najednou, takže odpadají problémy
spojené s tím, že někdo z vývojářů dlouho upravuje lokálně starší
verzi souboru a nakonec s ní přepíše práci někomu jinému. Vývoj
i implementace se tedy urychlí díky tomu, že má více lidí možnost spolu
sdílet stejný kód a pracovat na něm současně. Pokud se najednou
programátor ve zdrojovém kódu ztratí, má kdykoli možnost se podívat, jak
vypadal kód před jeho zásahem nebo před zásahem někoho jiného.
Jelikož je každá změna evidována v systému SVN, je možné určení
individuální zodpovědnosti zaměstnanců i přes to, že se na projektu
podílí více lidí. Nikdo se nemůže vymlouvat na to, že problém způsobil
někdo jiný, takže si všichni dávají větší pozor a chyby se téměř
nedělají.
Další výhoda je v možnostech zálohování. Protože zdrojový kód je ukládán centrálně, případná havárie na programátorově počítači nezpůsobí ztrátu dat. Centrální úložiště lze zálohovat velmi jednoduše. Systém SVN je naším „strojem času“, takže se díky němu můžeme podívat do historie a zjistit, jak bouřlivě se systém ShopSys® vyvíjel v minulosti (poznáte to podle počtu změn, tzv. commitů (odevzdání práce) a počtu uživatelů, kteří do kódu v průběhu času zasahovali).

Historie aktivity
uživatelů

Vývoj počtu aktivních
uživatelů
Zajímavé je také sledovat aktivitu vývojářů během dne a v průběhu týdne. Je vidět, že netdevelo s.r.o. (skoro) nikdy nespí.

Aktivita během
dne

Aktivita během
týdne
Pomocí nástroje Gource můžeme navíc historii vývoje
názorně modelovat a vytvořit například následující film. Je to
vizualizace logu našeho systému SVN.
Bc. Martin Šustek / vedoucí oddělení vývoje

Vytisknout













