====== 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:smart_use_case_diagram.png?direct&600|}} === 2. Моделированные предметной области === Определение структуры системы: основных концептов, типов, правил, условий и пр. в терминах заказчика, и их взаимосвязей. Для этого используются диаграммы классов UML и ассоциации. Свойства могут быть следующих типов: * Базовые типы: string, integer, Boolean,… * Проверяемые значения, такие как isbn и email. * Перечисления. * Умные ссылки – такие как отдел, страна и т.п. * Ассоциации – значением является класс UML. {{:mdd:domain_model.png?direct&600|}} === 3. Определение модели === Для того, чтобы обеспечить автоматическую генерацию кода, элементам пользовательских сценариев ставятся в соответствие сущности модели предметной области и стереотипы поведения. Сейчас выделено около 30 стереотипов, включая такие как выбор, поиск, управление и т.п. === 4. Импорт модели в Tobago MDA и генерация кода === Полученную модель в виде XMI-файла нужно импортировать в Tobago MDA - среду, разработанную специально для поддержки описываемой концепции. Она позволяет сгенерировать код по модели, причем используя как .Net, так Java и прочие платформы. ===== Выводы ===== Предлагаемый авторами статьи подход является достаточно простым - он ограничивается использованием только пользовательских сценариев и моделей предметной области. Не несмотря на простоту, авторам удалось добиться успешного практического применения. От генерации кода никто не требует слишком многого. Главная задача состоит в том, чтобы разгрузить разработчика от рутины и позволить ему сконцентрироваться на бизнес-логике.