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

Nov 21, 2009 20:11

Во первых строках моего поста прошу пардону за непонятность у всех проходящих мимо: каждый термин тут требует для них многочисленных разъяснений (и даже ссылки на первоисточники и другие мои постинги я повторять по десятому разу не буду, в том числе и потому, что сейчас у Яндекса блоговый поиск опять сурово сбоит и найти сегодня ничего нельзя, но я исхитрился и нашел через интерфейс 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):

From Programming to Modeling And Back Again

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

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

Evolution in the Large and in the Small in 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 на практике, получал опыт, и выпускал бы новые версии этих языков. Но универсального моделера нетути, и приходится думать, сколько ждать до того момента, когда он появится "сам собой", или примериваться к тому, чтобы затеять его разработку.
Previous post Next post
Up