Strana 23 z 55
4.4 Vlastní zkušenost
Dle mé vlastní zkušenosti je třeba přísliby populárních, ale i odborných publikací a
článků o MDA brát s určitou rezervou.
V případě generování aplikací z modelu, resp. transformace modelů, je třeba
vždy zvažovat jak přínosy tak nevýhody.
V bakalářské práci [Tomsa, 2007] popisuji situaci na projektu údržby a rozvoje
Informačního systému katastru nemovitostí (ISKN). Hlavní část tohoto systému je
tvořena databází Oracle a klientskou aplikací v Oracle Forms a Oracle Reports.
Datový model, logika v databázi i klientská část jsou z velké části generovány z
CASE Oracle Designer.
Ačkoli tento přístup v minulosti měl své výhody, domnívám se, že ve stávající
fázi projektu (po více než deseti letech od začátku) již nevýhody převyšují přínosy.
Síla generování je, kromě zvýšení úrovně abstrakce, v jeho hromadnosti. Změnou
šablony, resp. obecně úpravou parametrů transformace, lze hromadně změnit velké
množství nebo všech artefaktů, např. obrazovek aplikace.
Nevýhody (oproti "ručnímu" programování) jsou podle mého názoru následující:
- omezení vyplývající z použití generátoru - některé problémy je třeba obcházet;
to, co by v ručně upraveném kódu bylo provedeno za hodinu, může v CASE trvat i řádově déle. - programování v prostředí CASE
- tj. v podstatě se nejedná o modelování, nýbrž o snahu přimět generátor,
aby vytvořil něco, co by vývojář sám zvládl několikanásobně rychleji. - CASE není pro programování nejvhodnější - oproti standardnímu
vývojovému prostředí chybí mnoho funkcí, které vývojáři usnadňují práci
(obecně např. zvýraznění syntaxe, automatické doplňování, refaktoring)
- tj. v podstatě se nejedná o modelování, nýbrž o snahu přimět generátor,
- svázanost s prostředím, které se nerozvíjí
- pro nově příchozí vývojáře nutnost naučit se další nástroj - to snižuje flexibilitu
co do velikosti týmu vývojářů - v případě problémů (např. chyb) se tím zvyšuje počet jejich potenciálních zdrojů
- vývojář musí řešit více otázek: "Udělal jsem chybu v kódu?", "Došlo k chybě
při generování?", "Přizpůsobil jsem svůj kód dostatečně generátoru?", apod. - několikanásobně komplikovanější konfigurační řízení
Zatímco hromadné akce se typicky dějí zřídka (v pozdější fázi vývoje/údržbě
s rozestupem v řádu let), běžné úpravy a opravy můžou probíhat i denně.
Jestliže jsme nuceni odmítat požadavky uživatelů protože "platforma to sice
umožňuje, ale my to neumíme vygenerovat", nebo jsme nuceni vymýšlet krkolomné
konstrukce, jak v generovaném prostředí dosáhnout funkcionality, kterou bychom
"ručně" naprogramovali v řádu minut, pak podle mého názoru nazrál čas k přehodnocení
přístupu a zvážení, zda by v danou chvíli již nebylo ekonomičtější postupovat
klasickým stylem, tj. ručními lokálními úpravami.