Архитектура, управляемая моделью
Архитектура, управляемая моделью (Model Driven Architecture, MDA) — создаваемая консорциумом OMG разновидность концепции «Разработка, управляемая моделями»: модельно-ориентированного подхода к разработке программного обеспечения. Его суть состоит в построении абстрактной метамодели управления и обмена метаданными (моделями) и задании способов её трансформации в поддерживаемые технологии программирования (Java, CORBA, XML и др.). Создание метамодели определяется технологией моделирования MOF (Meta Object Facility), являющейся частью концепции MDA. Название концепции не совсем удачно, так как она определяет вовсе не архитектуру, а именно метод разработки программного обеспечения.
Основные идеи
Для конструирования программного приложения должна быть построена подробная, формально точная модель, из которой потом может быть автоматически генерирован исполняемый программный код приложения.[1]
Основные шаги разработки:
- Сначала разрабатывается модель предметной области проектируемого приложения, полностью независимая от имплементирующей технологии. Она называется Platform Independent Model (PIM).
- Затем PIM автоматически трансформируется специальным инструментом в платформо-зависимую модель (Platform Specifical Model, PSM).
- PSM переводится в исходный код на соответствующем языке программирования.
Такова схема в идеальном OMG-мире. В реальных современных проектах часть бизнес-логики приходится реализовать вручную. Но поскольку этот код отделен от генерированного системой, большой проблемы это не представляет.[1]
Примеры
Примером реализации MDA можно считать технологию CASEBERRY и платформу Flexberry, разрабатываемую с её помощью.
В основе разработки лежит UML-модель, создаваемая при помощи собственного инструмента создания UML-диаграмм. Есть возможность генерации как Windows, так и Web-приложений на языке C#. Генерируемый код делится на 2 части: первую часть генератор кода будет перезаписывать при внесении изменений в модель, вторая часть останется для него неприкасаемой. Таким образом, можно наращивать функциональность создаваемого приложения параллельно с внесением изменений в модель, при этом функциональность не будет утеряна при перегенерации кода.
Бизнес-логика вынесена в отдельный проект, для её реализации создаются заготовки, значительно облегчающие её (бизнес-логики) добавление.
Примечания
- Starke, Gernot. Effektive Software Architekturen. — Hanser, München, 2011 (нем.)
Ссылки
- Вадим Залива. Очень краткое введение в Model Driven Architecture (MDA), 3 сентября 2009