mdd:pragmatic_mdd

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
mdd:pragmatic_mdd [2014/06/01 18:32] 79.134.72.111mdd:pragmatic_mdd [2026/08/29 07:59] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== 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 готовых шаблонов.
 +{{mdd:mdd:smart_use_case_diagram.png|}}
 +
 +=== 2. Моделированные предметной области ===
 +
 +Определение структуры системы: основных концептов, типов, правил, условий и пр. в терминах заказчика, и их взаимосвязей. Для этого используются диаграммы классов UML и ассоциации.
 +Свойства могут быть следующих типов:
 +
 +  * Базовые типы: string, integer, Boolean,…
 +  * Проверяемые значения, такие как isbn и email.
 +  * Перечисления.
 +  * Умные ссылки – такие как отдел, страна и т.п.
 +  * Ассоциации – значением является класс UML.
 +
 +{{mdd:mdd:domain_model.png|}}
 +
 +=== 3. Определение модели ===
 +
 +Для того, чтобы обеспечить автоматическую генерацию кода, элементам пользовательских сценариев ставятся в соответствие сущности модели предметной области и стереотипы поведения. Сейчас выделено около 30 стереотипов, включая такие как выбор, поиск, управление и т.п.
 +
 +=== 4. Импорт модели в Tobago MDA и генерация кода ===
 +
 +Полученную модель в виде XMI-файла нужно импортировать в Tobago MDA - среду, разработанную специально для поддержки описываемой концепции. Она позволяет сгенерировать код по модели, причем используя как .Net, так Java и прочие платформы.
 +
 +===== Выводы =====
 +
 +Предлагаемый авторами статьи подход является достаточно простым - он ограничивается использованием только пользовательских сценариев и моделей предметной области. Не несмотря на простоту, авторам удалось добиться успешного практического применения. От генерации кода никто не требует слишком многого. Главная задача состоит в том, чтобы разгрузить разработчика от рутины и позволить ему сконцентрироваться на бизнес-логике.