Pragmatic model-driven development using smart use cases and domain-driven design
Sander Hoogendoorn, Rody Midddelkoop, Robert de Wolff.
Введение
В статье описывается концепция Model Driven Architecture (MDA), которая разрабатывается организацией Object Management Group (OMG) с 2001 года. Ее сопровождают такие стандарты OMG, как UML, BPMN, MOF, и определенные успехи в применении ее для разработки уже были достигнуты.
Основная цель MDA - предложить такой подход к разработке ПО, который бы увеличил предсказуемость процесса разработки, вывел бы его на более индустриальный уровень. Авторы статьи используют умные сценарии использования (smart use cases) для моделирования логики ПО и моделирование предметной области с помощью диаграмм классов. В результате они получают возможность генерировать значительную часть кода.
Такой подход позволил им создать базу из более 150 архитектурных шаблонов, которые можно использовать в новых проектах, увеличивая продуктивность разработчиков.
Достоинства предлагаемого подхода
Предлагаемый подход (называемый авторами “разработкой через моделирование”) позволяет увеличить объем генерируемого автоматически кода и за счет этого сократить сроки на разработку ПО. Автоматическая генерация кода позволяет избежать значительной части рутинной работы, такой как разработка веб-форм, интерфейсов, кода схемы баз данных и т.п. Например, проект на .Net для голландского правительства был реализован за 20% времени, отведенного на разработку.
Утверждается, что код, полученный с помощью подхода разработки через моделирование проще поддерживать, чем написанный вручную за счет более высокоуровневого представления через диаграммы UML.
Кроме того аналитики и дизайнеры более вовлечены в разработку софта, т.к. модели, которые они помогают проектировать, могут быть легко сконвертированы в программный код.
Этапы разработки через моделирование
Подход включает следующие шаги:
1. Моделирование с помощью умных пользовательских сценариев
Сначала проектируются пользовательские сценарии для каждой пользовательской задачи. При этом моделируются как основной сценарий, так и альтернативные. Затем они уточняются на уровне подфункций (с помощью отношений включения и расширения пользовательских сценариев). Для ускорения работы можно использовать более 30 готовых шаблонов.
2. Моделированные предметной области
Определение структуры системы: основных концептов, типов, правил, условий и пр. в терминах заказчика, и их взаимосвязей. Для этого используются диаграммы классов UML и ассоциации. Свойства могут быть следующих типов:
- Базовые типы: string, integer, Boolean,…
- Проверяемые значения, такие как isbn и email.
- Перечисления.
- Умные ссылки – такие как отдел, страна и т.п.
- Ассоциации – значением является класс UML.
3. Определение модели
Для того, чтобы обеспечить автоматическую генерацию кода, элементам пользовательских сценариев ставятся в соответствие сущности модели предметной области и стереотипы поведения. Сейчас выделено около 30 стереотипов, включая такие как выбор, поиск, управление и т.п.
4. Импорт модели в Tobago MDA и генерация кода
Полученную модель в виде XMI-файла нужно импортировать в Tobago MDA - среду, разработанную специально для поддержки описываемой концепции. Она позволяет сгенерировать код по модели, причем используя как .Net, так Java и прочие платформы.
Выводы
Предлагаемый авторами статьи подход является достаточно простым - он ограничивается использованием только пользовательских сценариев и моделей предметной области. Не несмотря на простоту, авторам удалось добиться успешного практического применения. От генерации кода никто не требует слишком многого. Главная задача состоит в том, чтобы разгрузить разработчика от рутины и позволить ему сконцентрироваться на бизнес-логике.