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 и прочие платформы.

Предлагаемый авторами статьи подход является достаточно простым - он ограничивается использованием только пользовательских сценариев и моделей предметной области. Не несмотря на простоту, авторам удалось добиться успешного практического применения. От генерации кода никто не требует слишком многого. Главная задача состоит в том, чтобы разгрузить разработчика от рутины и позволить ему сконцентрироваться на бизнес-логике.