1 / 18

Model-Driven Engineering

Model-Driven Engineering. Калин Наков. Model-Driven Engineering. От картинки към краен продукт. int main(int argc, char *argv[]) ‏ { if (argc > 2) ‏ { printf("Too many args"); return -1; } printf( " Welcome! " ); return 0; }. Четирислойна йерархия. М3 (MOF) ‏.

Download Presentation

Model-Driven Engineering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Model-Driven Engineering Калин Наков

  2. Model-Driven Engineering • От картинки към краен продукт int main(int argc, char *argv[])‏ { if (argc > 2)‏ { printf("Too many args"); return -1; } printf("Welcome!"); return 0; }

  3. Четирислойна йерархия М3 (MOF)‏ М2 (UML, SysML)‏ М1 (mymodel.xmi)‏ М0 (myprogram.exe)‏

  4. Съхранение на М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> ...

  5. Валидация на М1 package mymodel context Flower inv PacmanDanger: Pacman.forAll( p | not p.canEat(self))‏ endpackage Error log Invariant PacmanDanger failed, model validation failed

  6. Трансформация на М1

  7. Начини на редактиране • Дървовидно редактиране * MyModel * Pacman #color: blue #canEat: Flowers, Triangles • Графично редактиране

  8. Работа в екип по дадена система

  9. Код генерация int main(int argc, char *argv[])‏ { if (argc > 2)‏ { printf("Too many args"); return -1; } printf("Welcome!"); return 0; }

  10. Инкрементална код-генерация [template public FLWR(f: Flower)] CREATE TABLE [f.name/] ( [for (c:Column|f.column) ... CREATE TABLE MyFlower( MyID:PRIMARY KEY ...

  11. Процес на код генерация Избор на подсистема Избор на Template Генерация Merge с изходния код Краен продукт

  12. Параметризирана код генерация • Вмъкване на код за допълнителни проверки • Генериране на специална Debug версия • Включване/изключване на модули • Вкарване на код за обратна връзка към модела • Включване/изключване на документация • ...

  13. Защо round-trip engineering почти никога не върши работа?

  14. Изпълнение на модела

  15. Как се пише софтуер чрез MDE • Мета-модел на данните М2 • Валидационна схема (семантика) на модели М1 • Графична презентация на елементите от М2 • Templates за код генерация от М1 • Автоматична генерация на редактор на М1 • Създаване на система диаграми чрез редактора • Пускане на код-генерация (код, документация)‏ • Компилация и пакетиране на крайния продукт

  16. През погледа на архитекта

  17. През погледа на програмиста cppmain.m2t: [template CppClass(c:class)] [for (a:Attribute)] private: a.type a.name; [/for] [/template]

  18. Model-Driven Engineering Въпроси?

More Related