Anatoly Levenchuk (ailev) wrote,
Anatoly Levenchuk
ailev

Текстовое моделирование

Сказать "модель" -- это все равно, что ничего не сказать. Это так же общо, как сказать "система" или "процесс" -- совершенно непонятно, о чем пойдет дальше речь. Слово "модель" в большинстве случаев означает "описание системы", не более того.

Тем не менее, меня сейчас интересуют языки моделирования -- и чем более они общие, тем интересней (несмотря на множество существующих о моделировании мифов, собранных тут: http://www.eclipsecon.org/2009/sessions?id=358). Есть разные направления в моделировании:
-- мультифизика (http://www.modelica.org/)
-- архитектурное: SysML, UML 2.0, AADL (http://www.jot.fm/issues/issue_2009_01/column1/).
-- ежели речь идет о софте -- то вплоть до генерации кода (http://www.openarchitectureware.org/).
-- текстовое моделирование DSL (http://www.xtext.org/, http://www.slideshare.net/sefftinge/xtext-eclipse-con, видеопрезентация http://www.infoq.com/presentations/Textual-DSL-Markus-Voelter).

Определение (из http://www.infoq.com/presentations/Textual-DSL-Markus-Voelter): A Domain Specific Language (DSL) is a focused, processable language for describing a specific concern when building a system in a specific domain. The abstractions and notations used are tailored to the stakeholder who specify that particular concern. DSL могут быть классифицированы многими способами: configuration vs customisation, internal vs external (встроенные в какой-то другой язык типа Ruby или независимые от другого языка), graphical vs textual.

Когда нужны графические DSL? Когда есть структуры зависимости, временнЫе аспекты, какой-нибудь "поток". Но и в этом случае есть определенные альтернативы: визуализация подмножества модели (обычно только для чтения, зато с великолепным автоформатированием), использовать различные методы моделирования (different viewpoint), некоторые которые используют графический редактор и иметь перекрестные ссылки между текстовой и графической моделью, редактировать одну и ту же модель в текстовом и графическом виде (текстовый формат используется графическим редактором как формат для сериализации, но это требует, чтобы текстовую модель можно было писать!).

Одним из отслеживаемых мной проектов, которые занимаются облегчением программирования DSL является FONC (fundamentals of new computing, http://www.vpri.org/html/writings.php). В их списке рассылки договорились уже до того, что создать язык должно быть легко даже не "под задачу", а "под настроение". Не обсуждается, зачем это нужно и полезно ли. Обсуждается, как это можно сделать. Но это все глубоко исследовательские проекты.

А вот вполне промышленный свободный проект для Eclipse: Xtext -- это инструмент, который на входе берет EBNF для определенного вами DSL, а на выходе выдает для него удобный редактор, парсер и метамодель для Eclipse. После этого вы ныряете в Eclipse, где уже есть огромное количество инструментов для работы с (мета)моделями -- их сравнение, валидация, преобразование, кодогенерация и т.д.

Кажись, я теперь знаю, на каком инструментарии можно быстро сделать оргмоделер (да и любой другой моделер -- по потребности) с генерацией всех необходимых выходных форм. Ибо generated code может быть any textual artefact. Только нужно очень четко представлять, какой у тебя язык моделирования (то бишь, какой у тебя DSL). Это основная проблема: нужно четко знать, что ты хочешь выразить и что потом с этим хочешь делать.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 41 comments