Vývoj softvéru riadený modelom
Metaprogramovanie 12
Sergej Chodarev
Model-driven software development
- MDSD
- Špecifikácia systému pomocou vysokoúrovňového modelu
- Generovanie časti implementácie z neho
Model-Driven Architecture (MDA)
- Štandard definovaný Object Management Group (OMG)
- UML ako modelovací jazyk
- Väčšinou nahradený jednoduchšími alternatívami
Model
- Grafický (napr. UML)
- Textový – doménovo-špecifický jazyk (DSL)
- externý
- interný – samotný programovací jazyk
Príklad: JetBrains MPS
- Definícia DSL
- Projekčný editor
- Generovanie kódu
Low-code/no-code
- Vizuálne programovanie a formuláre
- Definovanie aplikácie a jej správania
Embedded systémy
- Špecifikácia
- AUTOSAR, MATLAB/Simulink
- Generovanie kódu v C
Architektúra systému
J. Porubän: Modelovanie a generovanie softvérových architektúr (cvičenia)
Hierarchia modelov
J. Porubän: Modelovanie a generovanie softvérových architektúr (cvičenia)
Architektúra generátora
J. Porubän: Modelovanie a generovanie softvérových architektúr (cvičenia)
Model vo vygenerovanom kóde
- Model implementovaný aj v cieľovom jazyku
- generujeme len konfiguráciu modelu
- Bez explicitnej reprezentácie modelu v cieľovom jazyku
- opakovanie kódu
- riešenie obmedzení cieľovej platformy
Metaprogramovanie
- Metadáta pre deklaratívny opis
- Oddelenie vrstiev a modulov
- loose coupling
- separation of concerns
- Automatické generovanie detailov na základe abstraktnejšej špecifikácie
Záver
- Metaprogramovanie — silný nástroj a nebezpečná zbraň
- Paradoxálny labyrint odporujúci intuícii
- Princíp najmenšieho prekvapenia
M.C. Escher: Relativity (1953)