Jednou z často citovaných zkratek poslední doby je MDA (Model Driven Architecture), nebo MDD (Model Driven Development). MDA (modelem řízená architektura) Tento koncept přináší „nový“ přístup v oblasti vývoje a především údržby IS, který je založen na klasickém OOP(Objektově orientované programování). Hlavní myšlenkou MDA je oddělit business a aplikační logiku od technologické platformy. Základní princip těchto přístupů spočívá v tom, že se při tvorbě aplikace využívá nějaký model. Přesněji: model je základním artefaktem, podle kterého se vše ostatní řídí. Primárními cíli tohoto přístupu jsou zajištění přenosnosti, interoperability (součinnosti) a znovupoužitelnosti díky oddělené architektuře.
MDD – Model Driven Development:
· Model vzniká vždy. Někdy bohužel jen v hlavách vývojářů.
· Model je kombinací textu a diagramů.
· Model by měl být „čitelný“ i bez diagramů.
· Diagramy „pouze“ usnadňují pochopení základní myšlenky popisovaného.
· Každý digram by měl obsahovat pouze jednu myšlenku.
· Vytváření modelu je tedy převážně mentální úsilí vyúsťující v psaní textu a kreslení diagramů.
Proč modely vytvářet?
· „Zaměstnanci přicházejí a odcházejí, modely zůstávají.“
·
Znovupoužitelnost
(firemní know-how).
· Sledovatelnost realizace požadavků.
· Zvýšení udržovatelnosti produktu.
· Možnost kontroly, animace.
· Možnost automatizovaného zpracování.
· Computation Independent Model (CIM)
· Platform Independent Model (PIM)
· Platform Specific Model (PSM)
Computation Independent Model (CIM) - Model nezávislý na počítačovém zpracování modeluje procesy a definuje slovník pojmů modelované oblasti. Model, též známý jako doménový model (popisuje modelovanou skutečnost tak, jak je), se zaměřuje výhradně na prostředí a obecné požadavky systému a jeho detailní struktura a konkrétní zpracování jsou v této fázi skryté nebo dosud neurčené. Tento model reflektuje „business“ požadavky zákazníka a pomáhá přesně popsat to, co se od systému očekává. Proto musí být nezávislý na technickém zpracování a popisovat systém čistě věcně a logicky. Předpokládá se, že uživatel těchto modelů je člověk, který není obeznámen s modely nebo konstrukcemi užívaných k vyjádření funkčnosti těch požadavků, které jsou právě specifikované v CIM.
Co obsahuje CIM:
· Požadavky (Funkční požadavky a Obecné, nefunkční požadavky)
· Business procesy
· Účastníci – aktéři
· Případy užití (use cases)
· Entity systému
Platform Independent Model (PIM) model se zabývá tou částí kompletní specifikace systému, která se nemění podle konkrétního druhu zvolené platformy
· PIM = Platform Independent Model, česky „konceptuální model“.
· Popisuje modelovaný systém, ale nezabývá se detaily řešení pro určitou platformu.
· Při vytváření modelu PIM sice vycházíme z doménového modelu CIM, ale to neznamená, že by musel být striktně podmnožinou doménového modelu. Informace a služby mohou být strukturovány zcela jinak.
· Konceptuální model může být naznačovat určitý architektonický styl, nebo může být vhodný pro různé architektury.
· Vytváří se poté, co si architekt systému vybere určitou platformu, která umožňuje implementaci systému (s jistou zajištěnou kvalitou).
· Architekt má představu o vybrané platformě a převádí konceptuální model na model logický. Někdy se tato transformace prezentuje formou manuálů, někdy zůstává v architektově mozku.
· MDA vyžaduje podrobné logické modely, které poslouží při implementaci
Transformace mezi modelem CIM a modelem PIM je zcela manuální. Obvyklým postupem je transformace firemních procesů do akcí uživatele, což je zachyceno diagramem případů užití. Specifikace MDA se ale touto transformací nezabývá.
Přínosem MDA je hlavně automatizace transformací mezi modely PIM a PSM. Specifikace MDA rozděluje transformace mezi těmito modely do čtyř kategorií:
· Návrhář může na základě prostudování platformově nezávislého modelu vytvořit
manuálně platformově specifický model.
· Návrhář může po rozboru platformově nezávislého modelu použít ke zjednodušení
práce s tvorbou platformově specifického modelu již vytvořené šablony.
· Na platformově nezávislý model se použije algoritmus, který vytvoří kostru
platformově specifického modelu. Tu pak návrhář manuálně doplní. K doplnění může
použít šablony z bodu 2.
· Algoritmus použitý na kompletní platformově nezávislý model vytvoří kompletní
platformově specifický model.
Zatím jsme uvažovali postup od modelu ke kódu. Tomuto postupu se říká také dopředné
inženýrství (forward engineering). Obrácený postup - získávání modelu z kódu, či z modelu
nižší úrovně se nazývá zpětné inženýrství (reverse engineering).
Zpětné inženýrství je často využíváno pro získání softwarové dokumentace, která umožní například:
· analyzovat určité proprietární datové formáty (pro zvýšení interoperability),
· odhalit slabiny
· pochopit funkci databázových modelů
· odhalit funkci kódu počítačových programů
· odstranění ochrany proti kopírování počítačových her, aplikací, operačních systémů apod. (tzv. cracking)
· vyhledávání bezpečnostních chyb (viz programátorská chyba, zranitelnost, exploit)
Reverzní postup je složitější a zatím tato problematika není uspokojivě zvládnuta. Reverzní transformace jsou užitečné, pokud například najdeme při testování chybu, která je zjevně v analýze, a chceme opravu této chyby promítnout zpět do analytických modelů.