Разработка, управляемая моделями, (MDD) — процесс проектирования программ, сводящийся к ручной разработке моделей и к автоматической генерации кода.
Одна из основных причин появления технологий разработки программного обеспечения (ПО), управляемой моделями, заключается в динамичном развитии платформ ИТ и в необходимости адаптации средств разработки к этой изменчивости платформ. Другая причина — рост сложности программных систем, а, следовательно, и технологий их проектирования в условиях нехватки квалифицированных разработчиков ПО. MDD позволяет сместить акцент разработки приложения с традиционного программирования на уровень понятий приложения и фиксировать накапливаемый опыт разработки в паттернах проектирования.
Модели, о которых идет речь в MDD, должны быть легко понимаемы как человеком, так и машиной. Обычно модели, представляются на языке UML.
Существующие UML-средства позволяют строить различные диаграммы и автоматически создавать по диаграмме классов «скелет» кода на языках программирования, кроме того, предоставляют возможность автоматически генерировать код поведения программы по диаграммам состояний. Для перевода диаграмм UML в последовательность инструкций используют также специальные форматы, например, XML Metadata Interchange (XMI).
Примером инструментального средства для автоматизации проектирования поведения программы по заданной UML-диаграмме состояний является UniMod. В нем проектирование программы выполняется так же, как проводится автоматизация технологических процессов длянекоторой предметной области.
Непосредственно по моделям генерируются также основная проектная документация, наборы тестов для оценки программы и др.
Основные положительные особенности MDD :
Для реализации MDD созданы системы RSM (Rational Software Modeler) и RSA (Rational Software Architect) — специальные инструменты разработки, управляемой моделями.
В RSA имеются средства рефакторинга, редактирования, преобразования и расширения моделей на языке UML 2.0, создания и использования шаблонов и профилей.
Под преобразованием моделей понимается перевод модели с одного языка на другой, например, перевод UML диаграмм на язык XML или Java.
Профиль модели ассоциируется с расширением независимого от приложения языка UML на новую предметную область путем введения в язык специфических для новой области сущностей и правил. Например, существует UML-профиль для бизнес-моделирования, поддерживающий методику RUP для бизнес-моделирования.
Расширение модели означает создание стереотипов UML для новых профилей (приложений).
Примечание 1
Стереотипом называют новый вид строительного блока (диаграммы), созданный с целью расширения словаря UML и специфичный для данной задачи. Стереотипы предназначены также для группировки классов объектов, например, при помощи стандартного стереотипа "interface" задается классификатор, называемый интерфейсом.
Шаблоны модели используются в RSA при создании новых моделей. Шаблон — предварительно разработанная модель, включая ее документацию. Новая модель создается путем адаптации шаблона к конкретной задаче.