stringtranslate.com

Трансформация модели

Преобразование модели в инженерии на основе моделей — это автоматизированный способ изменения и создания платформенно-зависимых моделей из платформенно-независимых. Примером использования преобразования модели является обеспечение согласованности семейства моделей в точном смысле, который может определить инженер-программист. Целью использования преобразования модели является экономия усилий и уменьшение ошибок за счет автоматизации построения и изменения моделей, где это возможно.

Обзор

Трансформации моделей можно рассматривать как программы, которые принимают модели в качестве входных данных. Существует большое разнообразие видов трансформации моделей и их использования, которые различаются по своим входным и выходным данным, а также по способу выражения.

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

Классификация модельных преобразований

Преобразования моделей и языки для них классифицируются многими способами. [1] [2] [3] Вот некоторые из наиболее распространенных различий:

Количество и тип входов и выходов

В принципе, модельное преобразование может иметь много входов и выходов различных типов; единственным абсолютным ограничением является то, что модельное преобразование будет принимать по крайней мере одну модель в качестве входных данных. Однако модельное преобразование, которое не производит никакой модели в качестве выходных данных, чаще называется анализом модели или запросом модели.

Эндогенный против экзогенного

Эндогенные преобразования — это преобразования между моделями, выраженными на одном языке. Экзогенные преобразования — это преобразования между моделями, выраженными с использованием разных языков. [4] Например, в процессе, соответствующем архитектуре OMG Model Driven Architecture , платформенно-независимая модель может быть преобразована в платформенно-специфическую модель с помощью экзогенного преобразования модели.

Однонаправленный против двунаправленного

Однонаправленное преобразование модели имеет только один режим выполнения: то есть оно всегда принимает один и тот же тип входных данных и производит один и тот же тип выходных данных. Однонаправленные преобразования модели полезны в ситуациях, подобных компиляции, где любая выходная модель доступна только для чтения. Соответствующее понятие согласованности тогда очень простое: входная модель согласована с моделью, которую преобразование произведет в качестве выходных данных, только.

Для двунаправленного преобразования модели один и тот же тип модели может иногда быть входом, а иногда выходом. Двунаправленные преобразования необходимы в ситуациях, когда люди работают более чем с одной моделью, и модели должны быть согласованными. Тогда изменение любой модели может потребовать изменения другой, чтобы сохранить согласованность между моделями. Поскольку каждая модель может включать информацию, которая не отражена в другой, может быть много моделей, которые согласованы с данной моделью. Важные особые случаи:

Особенно важно, чтобы двунаправленное преобразование модели имело соответствующие свойства, позволяющие ему вести себя разумно: например, не вносить ненужные изменения или отбрасывать намеренно внесенные изменения. [5]

Языки для преобразования моделей

Преобразование модели может быть написано на языке программирования общего назначения, но также доступны специализированные языки преобразования модели. Двунаправленные преобразования, в частности, лучше всего писать на языке, который гарантирует, что направления соответствующим образом связаны. Стандартизированные OMG языки преобразования модели известны как QVT .

В некоторых языках преобразования моделей, например, языках QVT , преобразование модели само по себе является моделью, то есть оно соответствует метамодели, которая является частью определения языка преобразования модели. Это облегчает определение преобразований высшего порядка (HOTs), [6] то есть преобразований, которые имеют другие преобразования в качестве входных и/или выходных данных.

Смотрите также

Ссылки

  1. ^ Czarnecki; Helsen (2006). «Обзор подходов к трансформации моделей на основе признаков». IBM Systems Journal . 45 (3): 621–645. CiteSeerX 10.1.1.124.9674 . doi :10.1147/sj.453.0621. 
  2. ^ Стивенс, Пердита (2008). «Пейзаж двунаправленных преобразований моделей». Генеративные и трансформационные методы в программной инженерии II . Конспект лекций по информатике. Том 5235. Springer . С. 408–424. doi :10.1007/978-3-540-88643-3_10. ISBN 978-3-540-88642-6.
  3. ^ Jakumeit; Buchwald; Wagelaar; Dan; Hegedüs; Herrmannsdörfer; Horn; Kalnina; Lano; Lepper; Rensink; Rose; Wätzoldt; Mazanek (2014). «Обзор и сравнение инструментов преобразования на основе конкурса инструментов преобразования». Science of Computer Programming . 85 : 41–99. doi : 10.1016/j.scico.2013.10.009 .
  4. ^ Том Менс, Питер Ван Горп: Таксономия преобразования моделей. Electr. Notes Theor. Comput. Sci. 152: 125-142 (2006)
  5. ^ Стивенс, Пердита (2010). «Двунаправленные преобразования моделей в QVT: семантические проблемы и открытые вопросы» (PDF) . Программное обеспечение и системное моделирование . 9 : 7–20. doi :10.1007/s10270-008-0109-9. S2CID  371579.
  6. ^ Тиси, Массимо (2009). «Об использовании преобразований моделей высшего порядка». Архитектура, управляемая моделями — основы и приложения . LNCS. Том 5562. Springer . С. 18–33. doi :10.1007/978-3-642-02674-4_3. ISBN 978-3-642-02673-7. {{cite book}}: |journal=проигнорировано ( помощь )

Дальнейшее чтение