Vývoj řízený modely

Z Wikipedie, otevřené encyklopedie

Vývoj řízený modely je způsob přístupu k vývoji softwaru. Cílem je tvorba modelů, které jsou různými cestami transformovány do podoby výsledné aplikace.

Model[editovat | editovat zdroj]

Modely jsou nejtradičněji považovány za formalizované odrazy skutečnosti. Využívají se napříč mnoha odvětvími – od umění, přes vědu, až po informační technologie. Klíčovou vlastností modelu je abstrakce. Její úroveň se může výrazně lišit, zejména s ohledem na využití a cíl modelu: jinak podrobný bude model pro souhrnný report manažerům a jinak podrobný bude model vykreslující např. rozhraní mezi dvěma systémy, který bude sloužit jako zadání pro programátora.

Druhou důležitou vlastností je srozumitelnost: model by měl být způsob, jak předat klíčové informace jednoduchým a lidem srozumitelným způsobem. Cílem každého modelu by mělo být redukovat potřebnou míru intelektu pro porozumění dané skutečnosti, aniž by se snížil objem předávaných informací.

Každý model je vyjádřený určitým, více či méně standardizovaným, jazykem. Jednotlivé jazyky mají svou vlastní úroveň abstrakce, definovanou jejich syntaxí a sémantikou. Tato úroveň abstrakce se poté promítá právě na daném modelu a zejména jeho možném využití. Mezi tradiční modelovací jazyky můžeme považovat např. standardy UML, BPMN, EPC a další.

Principy[editovat | editovat zdroj]

Formalizace modelu[editovat | editovat zdroj]

Aby mohly být plně využity všechny výhody a postupy vývoje řízeného modely, všechny vytvořené modely musí být čitelné pro počítače: musí být v elektronizované formě a musí být vytvořeny v určitém modelovacím jazyce, či na základě konkrétních standardů. Pouze při splnění této premisy mohou být dále transformovány do artefaktů, jako podrobnějších modelů specifických pro konkrétní platformu, či přímo do kódu samotného.

Zadruhé, modely musí být úměrně přesné a konkrétní. Pokud nebudou, těžko z nich můžeme automaticky generovat cokoli užitečného. Bohužel není možné určit úroveň které je třeba vždy dosáhnout, neboť požadovaná míra přesnosti je závislá zejména na typu a vlastnostech používané transformace. Ač je modelování považováno za poměrně kreativní aktivitu s vysokou úrovní volnosti, vždy je třeba mít pevně definované hranice a možnosti – právě s ohledem na následnou transformaci.

Automatizované transformace[editovat | editovat zdroj]

Automatizovaná transformace je klíčovým předpokladem vývoje řízeného modely. Umožňuje zapouzdřit nejlepší postupy, znalosti a schopnosti vývojářů a opakovaně a efektivně je aplikovat. Existuje několik druhů transformací – některé jsou přirozené a často ani nejsou brány v potaz: na příklad přechod z aplikačního kódu (např. Javy) do binárního kódu. Na druhé straně spektra jsou potom na míru vytvořené transformace pro konkrétní artefakty. Výsledný produkt se také může velmi lišit, nejběžnějším výsledkem transformace pro vývoj řízený modely je samozřejmě aplikační kód, nicméně často to může být jiný (konkrétnější) model, dokumentace, testovací artefakty (např. scénáře, jednotkové testy), či instalační skripty.

Automatizované transformace přispívají zejména ke zvýšení produktivity, lepšímu využití a konzervaci znalostí či know-how a zvýšení konzistence mezi analýzou a návrhem a výslednou aplikací.

Lepší souhra mezi byznysem a IT[editovat | editovat zdroj]

Modely jsou obecně bližší lidskému jazyku a snáz pochopitelnější než aplikační kód. I proto vývoj řízený modely usnadňuje komunikaci mezi zainteresovanými osobami (stakeholdery), byznys analytiky a vývojáři či programátory. Ve standardních metodikách vývoje SW tvoří (často velmi časově náročný) proces předávání byznysového zadání mezi analytikem a vývojářem prostor pro mnoho neporozumění, které mohou vést k chybám ve výsledné aplikaci. A nemusí se jednat jen o komunikaci s vývojáři – modely umožňují snazší pochopení i mezi zákazníkem a dodavatelem: textová dokumentace, zejména pokud není dostatečně akurátní, často otvírá prostor pro nepochopení a nepřesné zadání, zatímco pokud je vytvořen kvalitní model, má šanci tato potenciální nepochopení eliminovat a včas odhalit.

Vše zmíněné sdílí jeden důležitý aspekt – i lidé bez hlubších znalostí programování, mohou tvořit modely. Pokud má modelovací proces a následná transformace dobře a konkrétně definované hranice a postupy, mohou být snadno prováděny přímo analytiky. Tento fakt může přispět i ke snazší personální situaci v dané firmě či projektu: snáz předatelné znalosti, menší nároky na technickou vyspělost pracovníků a v neposlední řadě větší flexibilita firmy na profesním trhu.

Obavy a pochybnosti[editovat | editovat zdroj]

Proti vývoji řízenému modely můžeme často slyšet i výtky či pochybnosti, zejména od tradičně orientovaných programátorů a vývojářů. Mnoho z nich tvoří reálný problém, nicméně žádné se zatím neprokázaly jako nepřekonatelné. Často jsou zmiňována zejména následující témata.

Úspornost a kvalita generovaného kódu[editovat | editovat zdroj]

Existují pochybnosti, zda pouze na základě modelu je počítač či jiný program schopný automaticky vygenerovat stejně kvalitní kód, jako by vyprodukoval zkušený programátor. Nicméně průzkumy ukazují, že pokud jsou dobře nastaveny hranice a formální pravidla pro model, úspornost a kvalita automaticky generovaného kódu osciluje průměrně o 5–15 % oběma směry oproti ručně napsanému kódu, tudíž žádné prokazatelné výsledky podporující tuto tezi neexistují. Samozřejmě v každém systému mohou existovat místa, kde člověkem napsaný kód může být výhodnější – nicméně každý kvalitní framework pro vývoj řízený modely umožní začlenění nativních (ručně psaných) částí do zdrojového kódu.

Integrace s legacy systémy[editovat | editovat zdroj]

Mezi další obavy při zvažování rozvoje systému za použití vývoje řízeného modely je integrace s již existujícími tradičními systémy. Je to jistě odůvodněná pochybnost, neboť případná nekompatibilita jak celého prostředí, tak jednotlivých systémů, by znamenala velký zásah zejména do rozpočtu společnosti. Zde je třeba apelovat na kvalitu a investici do nástroje pro transformaci: určitá míra přizpůsobení, škálovatelnosti či přístup ke knihovnám kódu původního systému jsou pro překonání obdobných situací klíčové.

Obtížná zpětná sledovatelnost modelu[editovat | editovat zdroj]

Dále je třeba zmínit zpětnou sledovatelnost modelu, zejména z důvodu ad-hoc úprav, či vyhledávání a opravování chyb, tzv. „debuggingu“. Pokud kompilátor vrátí přesné místo programu, kde chyba nastala, autor kódu je většinou schopný přijít na důvod chyby a opravit ji. U automaticky generovaného kódu je tato situace o mnoho složitější – zejména pak, pokud neexistuje přesný protokol transformace, který by obdobnou zpětnou analýzu usnadnil. Pokud jedním z principů vývoje řízeného modely mají být nižší nároky na technické a programovací znalosti u analytiků, kteří budou modely tvořit, je nutné daného transformačního procesu zakomponovat nástroje a postupy, které tuto zpětnou sledovatelnost umožní a zejména usnadní.

Nepřizpůsobivost pracovního trhu[editovat | editovat zdroj]

Mezi časté obavy patří v neposlední řadě určitá rigidnost pracovního trhu a pozic v oblasti informačních technologií. Premisou je, že schopný a zkušený programátor nenastoupí na pozici, kde by vyvíjel pomocí principů vývoje řízeného modely, neboť obdobně kvalitní – či kvalitnější – program zvládne vytvořit ručně. Naopak podobně schopný analytik nebude mít na stejnou pozici dostatečné technické znalosti a vhled do informačních technologií. Naštěstí v posledních letech, zejména na vysokých školách, dochází ke stále bližšímu propojení IT a byznysu, které vede právě k výchově specialistů, kteří budou mít vhled a schopnosti pro obě oblasti.

Historie[editovat | editovat zdroj]

První iniciativy pro prosazování vývoje řízeného modely se objevily v 80. letech minulého století. Jejich rozpuk souvisel zejména s představením prvních CASE (Computer-aided software engineering) nástrojů – mezi průkopníky patřily společnosti Integrated Development Environments či Higher Order Software. Největší kus práce poté odvedlo konsorcium OMG (Object management group) založené v roce 1989, které v průběhu 90. let i po přelomu tisíciletí představilo nejvíce standardů souvisejících s principy vývoje řízeného modely – zejména pak jazyk UML.

Standardy a iniciativy[editovat | editovat zdroj]

Pro standardizaci postupů využívaných ve vývoji řízeném modely je klíčové zejména konsorcium Object management group a jejich standardy UML (Unified modelling language), MOF (Meta-object facility), XMI (XML metadata interchange), či CORBA (Common object request broker architecture).

Nástroje[editovat | editovat zdroj]

Literatura[editovat | editovat zdroj]

  • B. Selic, ‘The pragmatics of model-driven development’, IEEE Software, vol. 2003, no. 5, pp. 19–25.
  • S. Mellor, A. Clark, and T. Futagami, ‘Model-driven development’, IEEE Software, vol. 2003, no. 5, pp. 14–18.
  • B. Hailpern and P. Tarr, ‘Model driven development: the good, the bad and the ugly’, IBM Systems Journal, vol. 2006, no. 3.
  • V. Kulkarni, ‘Model Driven Development of Business Applications – a Practitioner’s Perspective’, IEEE International Conference on Software Engineering Companion, vol. 2016.

Externí odkazy[editovat | editovat zdroj]