Computerworld, США

Идея, лежащая в основе MDA, заключается в предельной автома?тизации процесса гене?рации кода, благодаря чему разработчики могут сосредоточиться на создании самого алго?ритма

Концепция MDA (Model Driven Architecture — «Архитектура на базе моделей») позволяет получать представление алгоритмов на языке моделирования с последующим автоматическим преобразованием моделей в компьютерный код. Понять всю значимость MDA можно лишь после короткого экскурса в историю развития компьютерной отрасли.

Без команд компьютеры — не более чем дорогостоящие нагревательные приборы. Главный вопрос — как дать компьютерам команды для того, чтобы преобразовать человеческое желание в результат.

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

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

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

Было разработано множество разных подходов к управлению алгоритмами, в том числе и такие, как структурное и объектно-ориентированное программирование. Были созданы языки программирования, которые поддерживают эти концепции, опубликованы библиотеки кода.

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

Унифицированный язык моделирования UML (Unified Modeling Language) был предложен организацией по стандартам Object Management Group (OMG), которую поддерживает консорциум заинтересованных компаний. UML стал языком для моделирования алгоритмов и был принят сообществом разработчиков программного обеспечения. Первоначально алгоритм описывался на UML, а затем вручную переписывался на языке программирования. Полученный результат автоматически компилировался в машинный код.

Но возник вопрос, нельзя ли и сами модели компилировать в машинный код, тем самым усовершенствовав способ осмысления алгоритмов и создания программного обеспечения. Усилия, предпринятые для того, чтобы упростить данный процесс и сделать его универсальным, дали толчок к смене парадигмы, который, в свою очередь, привел к появлению идей MDA.

OMG перенесла фокус своего внимания с архитектуры Common Object Request Broker Architecture (CORBA) на MDA в 2000 году. Тогда появилось официальное описание, положившее начало процессу классификации и стандартизации, а также создания новой лексики, в том числе основных понятий платформонезависимой модели (Platform Independent Model, PIM), платформозависимой модели (Platform Specific Model, PSM) и механизма хранения объектных метаданных (Meta-Object Facility, MOF).

UML играет определенную роль в MDA, но для того, чтобы модель соответствовала MDA, вовсе не обязательно писать ее на UML. Используемые текстовые и графические языки должны соответствовать MOF, который, в определенном смысле, можно назвать родительским языком. (Однако трудно сказать, что появилось первым. MOF — это абстракция UML, а UML — один из лучших примеров MOF). MOF достаточно общий и универсальный для того, чтобы различные компании, входящие в состав OMG, не были вынуждены использовать одни и те же языки моделирования. Они должны были лишь договориться о соблюдении одних и тех же принципов.

После анализа требований моделирование в MDA начинается с PIM. Эти модели служат для формулировки алгоритма, но не учитывают особенности компьютерного аппаратного и программного обеспечения, которое будет использоваться для его реализации. Модели предназначены исключительно для представления алгоритма с максимально возможным разделением между проектированием и реализацией.

PIM преобразуются в PSM на следующем этапе, «компиляции», во время которой алгоритмы превращаются в более подходящие для выполнения объекты. PSM обладают свойствами, которые соответствуют возможностям аппаратного и программного обеспечения. Кроме того, PIM можно «промаркировать» для поддержки такого преобразования. Наконец, PSM преобразуются в реальный код, который будет работать на реальном оборудовании или в реальное программное обеспечение промежуточного слоя для реального оборудования.

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

Если меняется базовое аппаратное обеспечение или операционная система, то модель просто «перекомпилируется» или «преобразуется» для работы в новой системе. Если требуется поддержка, модель выступает в роли точного документа, описывающего, как работает алгоритм. И в этом случае нужно поддерживать только модель. Идея состоит в том, что ошибки кодирования и реализации будут сведены к минимуму.

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

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


MDA — принцип работы

Программирование на базе моделей предполагает, что проектировщики прежде всего создают наиболее подходящую модель, не «привязываясь» к платформе, на которой система будет реализована. В результате создается платформенно независимая модель — основной элемент MDA-программирования. Затем добаляются метки, или руководства по реализации, учитываются особенности платформы, и, таким образом, PIM преобразуется в модель, ориентированную на конкретную платформу. Эта модель затем компилируется в программный код