Преобразование модели в инженерии на основе моделей — это автоматизированный способ изменения и создания платформенно-зависимых моделей из платформенно-независимых. Примером использования преобразования модели является обеспечение согласованности семейства моделей в точном смысле, который может определить инженер-программист. Целью использования преобразования модели является экономия усилий и уменьшение ошибок за счет автоматизации построения и изменения моделей, где это возможно.
Трансформации моделей можно рассматривать как программы, которые принимают модели в качестве входных данных. Существует большое разнообразие видов трансформации моделей и их использования, которые различаются по своим входным и выходным данным, а также по способу выражения.
Преобразование модели обычно определяет, какие модели приемлемы в качестве входных данных и, если это уместно, какие модели могут быть получены в качестве выходных данных, путем указания метамодели , которой должна соответствовать модель.
Преобразования моделей и языки для них классифицируются многими способами. [1] [2] [3] Вот некоторые из наиболее распространенных различий:
В принципе, модельное преобразование может иметь много входов и выходов различных типов; единственным абсолютным ограничением является то, что модельное преобразование будет принимать по крайней мере одну модель в качестве входных данных. Однако модельное преобразование, которое не производит никакой модели в качестве выходных данных, чаще называется анализом модели или запросом модели.
Эндогенные преобразования — это преобразования между моделями, выраженными на одном языке. Экзогенные преобразования — это преобразования между моделями, выраженными с использованием разных языков. [4] Например, в процессе, соответствующем архитектуре OMG Model Driven Architecture , платформенно-независимая модель может быть преобразована в платформенно-специфическую модель с помощью экзогенного преобразования модели.
Однонаправленное преобразование модели имеет только один режим выполнения: то есть оно всегда принимает один и тот же тип входных данных и производит один и тот же тип выходных данных. Однонаправленные преобразования модели полезны в ситуациях, подобных компиляции, где любая выходная модель доступна только для чтения. Соответствующее понятие согласованности тогда очень простое: входная модель согласована с моделью, которую преобразование произведет в качестве выходных данных, только.
Для двунаправленного преобразования модели один и тот же тип модели может иногда быть входом, а иногда выходом. Двунаправленные преобразования необходимы в ситуациях, когда люди работают более чем с одной моделью, и модели должны быть согласованными. Тогда изменение любой модели может потребовать изменения другой, чтобы сохранить согласованность между моделями. Поскольку каждая модель может включать информацию, которая не отражена в другой, может быть много моделей, которые согласованы с данной моделью. Важные особые случаи:
Особенно важно, чтобы двунаправленное преобразование модели имело соответствующие свойства, позволяющие ему вести себя разумно: например, не вносить ненужные изменения или отбрасывать намеренно внесенные изменения. [5]
Преобразование модели может быть написано на языке программирования общего назначения, но также доступны специализированные языки преобразования модели. Двунаправленные преобразования, в частности, лучше всего писать на языке, который гарантирует, что направления соответствующим образом связаны. Стандартизированные OMG языки преобразования модели известны как QVT .
В некоторых языках преобразования моделей, например, языках QVT , преобразование модели само по себе является моделью, то есть оно соответствует метамодели, которая является частью определения языка преобразования модели. Это облегчает определение преобразований высшего порядка (HOTs), [6] то есть преобразований, которые имеют другие преобразования в качестве входных и/или выходных данных.
{{cite book}}
: |journal=
проигнорировано ( помощь )