Введение
VIATRA — это фреймворк для трансформации моделей с открытым исходным кодом, основанный на Eclipse Modeling Framework (EMF) и поддерживаемый Eclipse Foundation. VIATRA обеспечивает разработку трансформаций моделей с особым упором на трансформации, управляемые событиями и реактивные, то есть сценарии, основанные на правилах, где трансформации происходят в ответ на определенные внешние изменения в модели. Используя поддержку инкрементных запросов для поиска шаблонов и изменений в модели, VIATRA предоставляет язык (VIATRA Query Language, VQL) для определения трансформаций и реактивный движок трансформаций для выполнения определенных трансформаций при изменениях в базовой модели.
VIATRA
is an open source model transformation framework based on the Eclipse Modeling Framework (EMF) and hosted by the Eclipse Foundation. VIATRA supports the development of model transformations with specific focus on event driven,
reactive transformations, i. e., rule based scenarios where transformations occur as reactions to
certain external changes in the model. Building upon an incremental query support for locating patterns
and changes in the model,
VIATRA offers a language (the VIATRA Query Language, VQL) to define transformations and a reactive transformation
engine to execute certain transformations upon changes in the underlying model.
История и происхождение
Текущий проект VIATRA представляет собой полную переработку предыдущего фреймворка VIATRA2, обеспечивающую полную совместимость и поддержку EMF-моделей. В проекте имеется страница History, описывающая основные различия между различными версиями. Что касается применения более раннего фреймворка VIATRA2, он служил базовым движком преобразования моделей для европейского проекта DECOS в области надежных встраиваемых систем. Кроме того, традиционной областью применения VIATRA2, начиная с 1998 года, была поддержка анализа системных моделей из различных областей (системы, критичные для безопасности и/или встраиваемые системы, отказоустойчивые бизнес-приложения, промежуточное ПО, сервис-ориентированная архитектура), описанных с использованием различных языков моделирования (SysML, UML, BPMN и т.д.) в рамках системной инженерии, управляемой моделями. Такой анализ моделей обычно также включает в себя верификацию и валидацию, тестирование, анализ безопасности и защиты, а также предварительную оценку нефункциональных характеристик (таких как надежность, доступность, быстродействие, пропускная способность и т.п.) проектируемой системы. Эти варианты использования и области применения по-прежнему являются основными направлениями развития VIATRA, в основном реализуемыми через IncQuery Suite как пользовательский интерфейс.
Подход
Поскольку разработка систем, основанных на точных моделях, является основной областью применения VIATRA, это требует, чтобы (i) преобразования моделей были заданы математически точно, и (ii) эти преобразования были автоматизированы, чтобы целевые математические модели могли быть получены полностью автоматически. Для достижения этого VIATRA опирается на математически точный формализм спецификации, основанный на правилах, а именно, преобразование графов (GT). VIATRA стремится к неявным формальным методам: здесь формальные детали скрыты автоматическими преобразованиями моделей, проецирующими модели систем в различные математические области (и, желательно, обратно). Базовым понятием для определения преобразований моделей в VIATRA является (граф) шаблон. Шаблон – это набор элементов модели, организованных в определенную структуру, удовлетворяющую дополнительным ограничениям (определяемым условиями атрибутов или другими шаблонами). Шаблоны могут быть сопоставлены с определенными экземплярами модели, и при успешном сопоставлении шаблона элементарные манипуляции с моделью определяются правилами преобразования графов. Подобно OCL, правила преобразования графов описывают предусловия и постусловия для преобразований, но правила преобразования графов гарантированно исполняемы, что является ключевым концептуальным различием. В частности, поскольку реактивные, управляемые событиями преобразования являются текущей областью внимания VIATRA, VIATRA включает в себя механизм исполнения правил, который отслеживает изменения (интерпретируемые как события) в модели и активирует правило всякий раз, когда изменение приводит к выполнению предусловия для этого правила (и, возможно, если также выполнены дополнительные условия управления).