model-driven engineering
Post on 02-Jan-2016
56 Views
Preview:
DESCRIPTION
TRANSCRIPT
First Bulgarian C++ Conference, Velingrad, 27-28 June 2008
Model-Driven Engineering
Калин Наков
First Bulgarian C++ Conference, Velingrad, 27-28 June 2008
Model-Driven Engineering
От картинки към краен продукт
int main(int argc, char *argv[]){ if (argc > 2) { printf("Too many args"); return -1; } printf("Welcome!");
return 0;}
First Bulgarian C++ Conference, Velingrad, 27-28 June 2008
Четирислойна йерархия
М3 (MOF)
М2 (UML, SysML)
М1 (mymodel.xmi)
М0 (myprogram.exe)
First Bulgarian C++ Conference, Velingrad, 27-28 June 2008
Съхранение на М2 и М1
<?xml version="1.0" encoding="UTF-8"?><XMI xmi.version="1.0"> <XMI.header> <XMI.documentation> </XMI.documentation> <XMI.metamodel xmi.name="UML" xmi.version="1.3"/> </XMI.header> <XMI.content>
...
First Bulgarian C++ Conference, Velingrad, 27-28 June 2008
Валидация на М1
package mymodelcontext Flowerinv PacmanDanger:
Pacman.forAll( p | not p.canEat(self))endpackage
Invariant PacmanDangerInvariant PacmanDangerfailed, model validationfailed, model validation
failedfailed
Error logError log
First Bulgarian C++ Conference, Velingrad, 27-28 June 2008
Трансформация на М1
First Bulgarian C++ Conference, Velingrad, 27-28 June 2008
Начини на редактиране
Дървовидно редактиране
* MyModel * Pacman #color: blue #canEat: Flowers, Triangles
Графично редактиране
First Bulgarian C++ Conference, Velingrad, 27-28 June 2008
Работа в екип по дадена система
First Bulgarian C++ Conference, Velingrad, 27-28 June 2008
Код генерация
int main(int argc, char *argv[]){ if (argc > 2) { printf("Too many args"); return -1; } printf("Welcome!");
return 0;}
First Bulgarian C++ Conference, Velingrad, 27-28 June 2008
Инкрементална код-генерация
[template public FLWR(f: Flower)] CREATE TABLE [f.name/] ( [for (c:Column|f.column) ...
CREATE TABLE MyFlower( MyID:PRIMARY KEY ...
First Bulgarian C++ Conference, Velingrad, 27-28 June 2008
Процес на код генерация
Избор на подсистема
Избор на Template
Генерация
Merge с изходния код
Краен продукт
First Bulgarian C++ Conference, Velingrad, 27-28 June 2008
Параметризирана код генерация
Вмъкване на код за допълнителни проверки
Генериране на специална Debug версия
Включване/изключване на модули
Вкарване на код за обратна връзка към модела
Включване/изключване на документация
...
First Bulgarian C++ Conference, Velingrad, 27-28 June 2008
Защо round-trip engineering почти никога не върши работа?
First Bulgarian C++ Conference, Velingrad, 27-28 June 2008
Изпълнение на модела
First Bulgarian C++ Conference, Velingrad, 27-28 June 2008
Как се пише софтуер чрез MDE
Мета-модел на данните М2
Валидационна схема (семантика) на модели М1
Графична презентация на елементите от М2
Templates за код генерация от М1
Автоматична генерация на редактор на М1
Създаване на система диаграми чрез редактора
Пускане на код-генерация (код, документация)
Компилация и пакетиране на крайния продукт
First Bulgarian C++ Conference, Velingrad, 27-28 June 2008
През погледа на архитекта
First Bulgarian C++ Conference, Velingrad, 27-28 June 2008
През погледа на програмиста
cppmain.m2t:
[template CppClass(c:class)][for (a:Attribute)]
private: a.type a.name;[/for]
[/template]
First Bulgarian C++ Conference, Velingrad, 27-28 June 2008
Model-Driven Engineering
Въпроси?
top related