Anatoly Levenchuk (ailev) wrote,
Anatoly Levenchuk
ailev

Category:

Универсальный моделер (IDE). Универсальный компилятор (IDE).

Во первых строках моего поста прошу пардону за непонятность у всех проходящих мимо: каждый термин тут требует для них многочисленных разъяснений (и даже ссылки на первоисточники и другие мои постинги я повторять по десятому разу не буду, в том числе и потому, что сейчас у Яндекса блоговый поиск опять сурово сбоит и найти сегодня ничего нельзя, но я исхитрился и нашел через интерфейс livejournal.ru -- вот начало разговора про универсальный моделер в приложении к оргмоделированию http://ailev.livejournal.com/701018.html. А еще тут -- http://ailev.livejournal.com/748188.html). Постоянным же читателям моего ЖЖ многое должно быть понятно и без разъяснений. Хотя я пишу сейчас даже и не для них, а для собственного разбирательства -- чем продолжаю традицию release often, release early для черновиков, а не публикацию попсовых статей для глянцевых журналов.

В свободные (да и в рабочие тоже -- работа у меня такая) минуты я часто размышляю об "универсальном моделере". Вот его основные черты:
-- у него есть хранилище данных, больше всего похожее на MatrixOne от Dassault Systemes (базовая онтология на 20тыс. класссов, поддержка многопользовательской работы и SOA на макушке -- чтобы обепечивать "программирование-в-большом")
-- но в качестве схемы используется ISO 15926 inside (что странно, ибо RDL-то outside), чтобы исключить постоянный мэппинг для внешних соединений. Сам ISO 15926 при этом контролируется на масштабируемость (выразительность) своих протошаблонов, шаблонов и OIM; и тут нужно еще понять, как делать "диалекты" ISO 15926 -- ведь наверняка программирование такой системы будет включать в себя крутые отползания от стандарта, хотя бы для исправления ошибок или крутого рефакторинга при нахождении нужной масштабируемости.
-- само программирование идет в два приёма, и выполняется в подходе language workbenches: 1. инструментальное -- представляет собой создание динамических редакторов-исполнителей для целевых моделей, выражаемых в их DSL. Вспоминаем language workbenches, но компилируем не только из какого-нибудь UML/MOF в исполняемый на компьютере код, но и из 3D-геометрического представления в код для станка с ЧПУ ("субтрактивное производство") или 3D-принтера ("аддитивное производство"), а лет через пять еще нужно будет выводить описание 3D-компоновки для сборочного робота. 2. целевое -- собственно создание моделей. Думать при этом можно про "модули" (workbenches) от Dassault Systemes V6 (но при этом не стоит путать тамошние workbenches с language workbench: то, что в DS V6 называется workbench является лишь одним из DSL+IDE в language workbenches).
-- само программирование language workbench при этом устроено на COLA (vpri.org), а главными из тамошних идей считаем мультипарадигмальность и "масштабируемость идей". Код получается крошечным и обозримым.
-- все это не менее красиво виртуально-трехмерно чем "тарелочки" у Dassault Systemes V6. Но при этом поддерживается реальное коллаборативное время -- например, как в Croquet с его алгоритмом TeaTime и САПР, засунутым в виртуальный мир.
-- все это, конечно, свободный софт.

Конечно, при этом нужно все время размышлять на давно задаваемые мной вопросы про парадигмы -- языковую или модельную. И понимать, занимаемся мы программированием или моделированием -- сейчас эти две метафоры/парадигмы сливаются (я помню, что совсем недавно писал об этом, но Яндекс надежно скрывает ссылку).

На закуску этого невнятного постинга я помещу рекламу Markus Voelter (http://www.voelter.de/), который все активнее и активнее пишет на те же темы, что и я -- про фактическое слияние моделирования и программирования (правда, все время сваливаясь в частный случай компиляции DSL в исполняемый код языков программирования. Меня же волновала бы компиляция более общего вида, например shape language в модель на языке ISO 15926 в рамках машиностроительного модуля САПР, а затем в программу для станка с ЧПУ, чтобы заниматься далее порождающим производством). Тем не менее, вот его взгляд Markus Voelter на то, как языковая и модельная парадигма сливаются (в тех же language workbenches):



И еще нужно глядеть на его презентацию о том, что язык и архитектура -- это про одно и то же: http://www.slideshare.net/schogglad/architecture-as-language-2260774 (в этой обширнейшей презентации есть также страстная критика UML примерно по той же линии, что и у меня: DSL выполняет ту же работу лучше).

А вот свежайшая презентация Alfonso Pierantonio про model-driven engineering (model-driven development из которого только маленькая часть) в части эволюции-в-малом (эволюции прикладной модели) и эволюции-в-большом (эволюции метамодели):


Эта презентация намекает, что возможно менять метамодель так, чтобы при этом отслеживать сохранение целостности уже созданных моделей. Пока это rocket science, но через пять лет это будет сидеть где-нибудь глубоко внутри модельного-программного инструментария.

Ecore, KM3, MOF в моей голове полностью соответствуют ISO 15926-2, а UML и прочие "надстройки" -- это уже протошаблоны ISO 15926-2. "Стереотипы" -- это OIM. Разница с текущими моделерами в детальности моделирования (развитости онтологии ISO 15926-2) и наличии организационного механизма накопления экспертного знания в виде RDL.

Все, что я говорю -- это "мужики, MDE и MBSE -- это одно и то же. Только в первом случае у вас команды исполняет процессор, а во втором случае -- люди и станки с ЧПУ". И нужно просто повторно использовать идеи, чтобы не распыляться.

В любом случае, компьютерная революция начнется уже совсем скоро.

Почему я этим всем занимаюсь? Я бы с удовольствием воспользовался готовым универсальным моделером, чтобы делать в нем DSL PraxOS в таких domain как системная инженерия, организационное управление и ситуационная инженерия методов. А дальше бы я применял эти DSL на практике, получал опыт, и выпускал бы новые версии этих языков. Но универсального моделера нетути, и приходится думать, сколько ждать до того момента, когда он появится "сам собой", или примериваться к тому, чтобы затеять его разработку.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 27 comments