Введение
Трансформация модели, в контексте разработки на основе моделей, представляет собой автоматизированный способ модификации и создания платформенно-зависимых моделей из платформенно-независимых. Примером использования трансформации модели может служить обеспечение согласованности семейства моделей в точном смысле, определяемом разработчиком программного обеспечения. Цель применения трансформации модели – экономия усилий и снижение количества ошибок за счет автоматизации построения и модификации моделей, где это применимо.
Обзор
Трансформации моделей можно рассматривать как программы, принимающие модели на вход. Существует большое разнообразие видов и применений трансформаций моделей, различающихся по входным и выходным данным, а также по способу их представления. Трансформация модели обычно определяет, какие модели допустимы в качестве входных данных и, при необходимости, какие модели она может генерировать на выходе, указывая метамодель, которой модель должна соответствовать.
Классификация преобразований моделей
Модельные преобразования и языки для них классифицировались различными способами. Например, в процессе, соответствующем архитектуре OMG Model Driven Architecture, модель, не зависящая от платформы, может быть преобразована в платформо-зависимую модель посредством внешней трансформации модели.
Однонаправленный или двунаправленный
Однонаправленная трансформация модели имеет только один режим выполнения: она всегда принимает один и тот же тип входных данных и производит один и тот же тип выходных данных. Однонаправленные трансформации моделей полезны в ситуациях, подобных компиляции, когда любая выходная модель доступна только для чтения. Соответствующее понятие согласованности очень простое: входная модель согласована только с моделью, которую трансформация произведет в качестве выхода. Для двунаправленной трансформации модели один и тот же тип модели может быть как входом, так и выходом. Двунаправленные трансформации необходимы в ситуациях, когда люди работают с несколькими моделями, и эти модели должны поддерживаться в согласованном состоянии. Тогда изменение одной из моделей может потребовать изменения другой, чтобы сохранить согласованность между ними. Поскольку каждая модель может содержать информацию, которая не отражена в другой, может существовать множество моделей, согласованных с данной моделью. Важными частными случаями являются:
биективные трансформации, в которых существует ровно одна модель, согласованная с любой заданной моделью; то есть, отношение согласованности является биекцией. Пара моделей согласована тогда и только тогда, когда они связаны биекцией согласованности. Обе модели содержат одну и ту же информацию, но представлены по-разному. трансформации представлений, в которых конкретная модель определяет единственное модель представления, но одно и то же модель представления может быть получено из множества различных конкретных моделей. Модель представления является абстракцией конкретной модели. Если представление может быть обновлено, требуется двунаправленная трансформация. Эта ситуация известна в области баз данных как обновление представления. Любая конкретная модель согласована со своим представлением. Особенно важно, чтобы двунаправленная трансформация модели обладала соответствующими свойствами для разумного поведения: например, чтобы не вносить изменения без необходимости или отбрасывать преднамеренно внесенные изменения.