Domain-Driven Design или доменно-ориентированный дизайн – это метод, при котором структура и язык должны соответствовать области бизнеса, для которой составляется ПО. Предназначен для формирования текстурированной, масштабированной, проработанной модели программного обеспечения. Принцип основан на объектно-ориентированном анализе и технологии проектирования. Перед тем, как доверить вам проект, на собеседовании вероятно зададут несколько вопросов по поводу того, ориентируетесь ли вы в теме. Чтобы повысить уровень собственной квалификации или получить новую, интересную профессию, обратите внимание на курсы программирования, предлагающие свои услуги онлайн.
6 вопросов о важном
Вопрос №1
Каковы цели и задачи доменно-предметного ориентирования?
Ответ
DDD предназначено для решения трех основных задач:
- концентрация внимания всей систем на ядре домена и логическое обоснование предметной сферы;
- формирование сложных проектов на основании однотипной модели, относящейся к определенной сфере деятельности;
- тесное взаимодействие между экспертами технического профиля и работниками предметной области для формирования заданной модели, решающей определенный спектр задач.
Вопрос №2
Каковы важные особенности доменно-ориентированного дизайна?
Ответ
Сценарий приложения на основе предметно-ориентированного проектирования предназначен для решения разного рода сложных бизнес-задач путем:
- составления многоуровневой архитектуры и четкой градации обязанностей;
- формирование ядра, в котором каждый доменный объект является одним из связанных между собой бизнес-объектов, и может использоваться повторно;
- принцип работы адаптирован к решению целого спектра сложных задач в программных системах бизнес-логистики;
- отсутствие простых опций в виде добавления, удаления и изменения объектов.
Вопрос №3
Каковы концепции модели?
Ответ
Концепции включают:
- Контекст. Среда, в которой формируются слова или высказывания, определяющие значение контекста.
- Домен. Область знаний, с которой должна разрабатываться программа.
- Модель. Совокупность абстрактных образов, описывающих определенные аспекты домена и решающая, связанные с ним проблемы.
- Язык. Используемое всеми членами группы средство связи между пользователем и ПО.
Вопрос №4
Каковы основные стратегии предметно-ориентированного проектирования?
Ответ
Разработчики стремятся к тому, чтобы создать единую унифицированную под разные задачи модель. Однако все это еще в планах. Обычно эта структура распадается на несколько министруктур, и это факт, от которого пока уйти невозможно. Стратегическим дизайном называется совокупность принципов, позволяющих поддерживать целостность всей конструкции. Среди них:
- Ограничение контекста. Необходимо четко определить контекст, в теле которого разрабатывается модель. Следует расставлять точки границ, окружающие пространство группы, не запутавшись при этом во внешних и внутренних проблемах.
- Интеграция. Чем больше человек работают с моделью, тем сильнее фрагментация, поэтому при возникновении данной ситуации следует часто внедрять процесс слияния всего кода и других артефактов, использовать язык, вырабатывая общий взгляд на модель.
- Контекстная карта. Персональный, узкоспециализированный контекст делает проблемным глобальное представление. Люди, взаимодействующие в модели, будут неосознанно вносить изменения, устраняя границы и усложняя взаимосвязи. Следует определить строго ограниченный контекст разрабатываемой модели.
Вопрос №5
Какие известные инструменты доменно-ориентированного дизайна вы знаете?
Ответ
На практике DDD не зависит от применения других программных инструментов. Однако в нашем блоге DevEducation часто рассматриваются вопросы о применении приложений, обеспечивающих поддержку определенного типа шаблонов. К самым распространенным из них относятся:
- Адаптируемый для Eclipse модуль Actifsource, позволяющий разрабатывать ПО, сочетая его с DDD-проектированием путем генерации кода.
- Семантический фреймворк CubicWeb, уточняющий модели данных, чтобы получить отлично функционирующее веб-приложение. Для адаптации необходима дополнительная настройка, предустановка системы по умолчанию недостаточна.
- Открытый исходный код OpenMDX, созданный на платформе Java отличается тем, что применяет для работы модели, управляющие поведением опционных систем при выполнении задач.
- OpenXava предназначено для разработки приложений AJAX. Для этого достаточно прописать классы области функционирования.
- Restful Objects является стандартом Restful API для объекта предметной сферы. Обладает возможностью выступать в качестве сущности, модели представления и т.д.
Вопрос №6
Почему DDD не используется для всех без исключения проектов?
Ответ
DDD показывает отличные результаты в том случае, если бизнес-процессы не особенно сложные, но уже довольно устоявшиеся. Когда систему нужно постоянно совершенствовать и менять, подстраиваясь под реалии рынка, доменно-ориентированный дизайн вряд ли окажется сильно полезным.
Собираясь использовать DDD, заказчик и разработчик должны быть готовы к сложному процессу, в котором участие могут принимать и сторонние участники, являющиеся экспертами в предметной области, готовыми делиться собственными знаниями.
Подводя итог, стоит сказать, что Domain-Driven Design – не универсальный, но довольно эффективный подход к разработке сложных проектов. При тщательно продуманном подходе, приложенные усилия обязательно оправдаются и дадут значительные преимущества бизнесу, в том числе, создадут адаптивную архитектуру бизнеса, учитывающую все его особенности. Единый язык сведет к нулю все временные затраты на исправление ошибок.