JLabs.Docs.VaxNt
VaxNt je specifický nástroj pro tvorbu aplikací, který v sobě shrnuje zkušenosti z několika oborů.
Jeho návrh a vývoj vyšel ze zkušensti, že aplikace pro IS je možno alespoň z 90-ti procent předem považovat
za unifikované a že se vzájemně odlišují výčtem konkrétních datových struktur a pracovních scénářů.
Jejich design, ovládání a celkové chování je ale možno unifikovat do jednotného rámce a všechny partikulární
vlastnosti dané aplikace řešit až interpretací parametrů a kompilací just-in-time.
Naše snaha o vytváření "agnostických" aplikací je do maximální míry důsledná. Snažíme se nestavět projekt na žádném konkrétním
databázovém stroji. Aplikace psaná ve stylu VaxNt proto poběží "rovnocenně" proti ORACLE, Interbase, Paradoxu nebo Informixu.
Rovněž dostribuovaný exe-file je zcela agnostický a to i na úrovni aplikace. Nikde se v něm nevyskytují
jména tabulek, resp.položek záznamu jako např. pacient, účet, platba nebo ceník.
Kompletní databázové schéma aplikace, pracovní scénáře, formuláře, tabulky (gridy), pohledy i výstupní sestavy se aplikaci předávají
jako parametry ve specifikačním jazyce.
Tento přístup má svoje výhody i nevýhody. Je zřejmé, že se jím nedají pokrýt všechny IS. Týká se to především
některých možných pracovních scénářů, které se vymykají z námi předem přijatého modelu.
Na druhou stranu je velkou výhodou to, že IS se nevytáří od nuly. Již od samotného počátku návrhování databáze/IS
je možné s ní pracovat. Tím lze dosáhnout paralelního postupu prací např. při naplňování čísleníků, základních
souborů dat, upřesňování analýzy projektu, průběžné kontrole hotových částí. Zkušenost ukazuje, že do 1-2 týdnů
od první specifikace problému, má uživatel v rukou první (zkušební/základní) verzi. Další vývoj aplikace se pak děje
postupným zpřesňováním všech parametrizovatelných částí systému. Pro takovýto scénář vývoje aplikace hovoří to,
že není nutno s velkým předstihem analyticky kompletovat celý projekt, že nejsou vyvíjeny zbytečné moduly,
že každý následující krok vývoje je ověřen praktickým používáním hotových částí. Nezřídka lze obecnost VaxNT využít
i pro práci s existujícími původními databázemi.
Významným argumentem je také to, že vývoj nevyžaduje zásahy do vlastního programu (.exe) a jeho následnou distribuci.
Největší nevýhodou VaxNt se může jevit jeho jednoznačný, "technicky" vyhlížející, předem daný základní design.
Tím se diskvalifikuje předem a do značné míry je tomu tak úmyslně z řádu aplikací dělaných s nějakými předem
neměnnými představami o budoucím ovládání. Tedy nehodí se tam, kde jde zákazník ve svém zadání do příliš velkých
a konkrétních detailů typu, "fialovým knoflíkem v levé dolní části obrazovky s nápisem Start se bude aplikace vypínat".
Design VaxNt respektuje zvyklosti nejrozšířenějšího GUI, tedy Windows. Jeho ovládání je konformí s ovládáním běžně
používaných programů. Nakonec ani u nich zákazník nemůže měnit design.
Hlavní výhodou je robustnost a rychlá konvergence k cílovému stavu. Systém je 100% chodivý od počátku,
s maximální funckionalitou (uživatelskou, kontrolní) v realizovaných/definovaných objektech,
poradí si s nekonzistencemi databáze a dovoluje i během uvádění do provozu provádět rozsáhlé změny vyvolané
nejčastěji tím, že původní zadání je příliš vzdáleno skutečnosti. Vedle aplikačního exe-souboru pro cílové/klientské
prostředí je VaxNt podporován pro uživatele méně viditelnou částí - serverem. Pro typické aplikace na bázi serverů
Unix/Linux je k dispozici kompletní systém automatického zálohování, dálkové správy, zotavení z havárií, webové prezentace
i rozhraní na libovolné okolní systémy (přes Java). Je tedy možno realizovat velmi rychle velice rozsáhlý zcela autonomní
systém.
Celý VaxNt je postaven na snaze programovat vždycky o stupeň vyšší abstrakcí, než je v daném případě nutné. Oplátkou
se získává produkt, který se dá snadno rozšířit bez zvláštních zásahů. Prakticky vzato je VaxNt postaven na
rigidním jádru ovládajícím všechny běžné obraty při rutinní práci s IS. Dále je dovybaven definičním a skriptovacím
jazykem, který slouží k přizpůsobení na konkrétní situaci. Konstrukty jazyka jsou celkem mocné, vlastní exe-soubor
se mění jenom málokdy a je tedy jenom zřídka předmětem problémů. Většina změn se dá provádět okamžitě, buď přímo na místě
u zákazníka, nebo po síti z pracoviště řešitele. To je velký rozdíl od programů psaných na míru,
pro které každá změna představuje zásah do zdrojového souboru aplikace, rekompilace (ta s sebou vždy nese riziko
v podobě Run-Time Error XY ... ), distribuce, ... Doba potřebná na provedení změny je proto nesrovnatelná proti
použití VaxNT.
Jádro VaxNt je vybaveno mimo jiné těmito rovnou použitelnými konstrukty:
Důležité je, že VaxNt neoperuje s pojmem tabulka, ale spíše s výsledkem libovolného pohledu do DB/sql-query. Podobně
se inteligentně vypořádává s nekonzistencemi, kterým se během vývoje programů nedá zabránit, např. nesoulad
typů, jiná jména v databázi a jiná ve formulářích, nedokonale a ne definitivně rozdělená data v tabulkách apod.
Běžná VaxNt aplikace je taková, která uživateli umožňuje prohlížení složité databáze, formuláři řízené vstupy dat
a dává mu k dispozici scénáře ovládající systém přes složitější kontroly. Naší původní ambicí bylo implementovat
spíše nástroj na prototypování a realizaci ad-hoc aplikací. Postupně se ale touto technikou podařilo
realizovat i velmi složité systémy a ty pak zůstaly vlastně definitivně ve fázi svého vlastního prototypu.
Dálková správa takových systémů je mnohem snadnější než u "zadrátovaných aplikací" a typicky se daří ev.
chyby obejít na úrovni skriptů, tedy bez nutnosti změny bináru a bez přerušení provozu.
Pro firmy, které instalují a provozují na míru dělané aplikace IS z několika velmi odlišných oborů, jsou
důležité zejména tyto informace:
Všechny výše uvedené argumenty ve prospěch VaxNT je nutno konfrontovat s podstatou případného projektu,
do kterého by měl být začleněn. My ho můžeme doporučit přinejmenším jako mocný nástroj pro rychlou
implementaci takových funkcí, se kterými specializovaný software nepočítá nebo tam, kde by
jeho přizpůsobení bylo neekonomické. VaxNt je možno rovněz přímočaře použít k integrování mnoha
různých databází a k vyřešení rozmanitých rozhraní. Rozmanitost se může týkat jak vyššího počtu zdrojů dat, tak
nestability definice jednoho toku dat v čase, kdy změny mohou probíhat rychleji než stihnou autoři
upravit aplikaci vytvořenou na míru.
Binár VaxNt.Exe je určen do prostředí GUI Windows a předpokládáme, že počínaje létem 2001 budeme mít k dispozici
analogckou verzi pro X-Window pro aplikace nezávíslé na MS.
VaxNt neklade žádné velké požadavky ani na PC, na kterém je nainstalováno. Hodí se tedy pro masivní rozšíření
netriviálních aplikací pro sběr dat v terénu nebo ve velké síti, což je cenově výhodné proti jiným přístupům.
Některé z vlastností VaxNt má například MS Access, který dovoluje také "kutilské" programování, nicméně je
zatížen licenční polikou distribučních firem vycházející ze skutečnosti, že musí být nainstalován na každém PC.
VaxNt umí tzv. polling a šetří tedy významným způsobem počet nutných permanentních linků mezi klientskými
PC a databázovým serverem. Vedle explicitního navazování a rozvazování komunikace just-in-time je součástí
VaxNt na straně serveru pro Linux i specializovaný datový robot, který umí integrovat cizorodé databáze
tak, jako kdyby byly rovnou součástí jednoho systému. Zde zase platí, že pro koncová PC se to jeví jako
přímý link do databáze a z hlediska databázového serveru se jedná o jeden jediný link. Navíc na koncová
PC není nutno instalovat klientský software, tedy drivery. To je u aplikací client-server s mnoha clienty
znatelná úleva při správě.