Предметно-ориентированное проектирование

Концепция Domain Driven Design хорошо зарекомендовала себя в проектировании программного обеспечения и цифровых продуктов. В статье предлагается простое объяснение DDD, его основные термины, плюсы и минусы.

Разработчики до сих по не уделяют концепции проектирования, ориентированного на предметную область, должного внимания, хотя она существует уже некоторое время.

Впервые данная концепция была разработана Эриком Эвансом в его книге 2003 года "Предметно-ориентированное проектирование. Структуризация сложных программных систем" (в сообществе разработчиков её называют "синяя книга"). Основная идея книги в том, что единый язык должен являться фундаментальной частью создаваемого продукта.

Предметно-ориентированное проектирование (Domain Driven Design, DDD) - это метод, направленный на изучение предметной области организации в целом или каких-то отдельных бизнес-процессов. Его применение сосредоточено на упрощении сложности, с которой сталкиваются разработчики, связывая реализацию с развивающейся моделью.

Существует несколько общих терминов, которые полезны при описании и обсуждении практики DDD:

1. Основное понятие "вездесущий/единый язык" (ubiquitous language)

Он способствует прозрачному общению между участниками проекта. Команда разработчиков использует этот язык во всех взаимодействиях, начиная от ТЗ и заканчивая кодом. Структурирован единый язык вокруг модели предметной области.

2. Модель предметной области

Является результатом DDD. Концептуальная модель часто представляет собой словарь и ключевые понятия задач из предметной области. Описывает отдельные аспекты предметной области и может использоваться для решения проблем, связанных с этой предметной областью.

3. Контекст

Обстановка, где появляется слово и высказывание определяющее его смысл. Утверждения о модели могут быть поняты только по контексту.

4. Ограниченный контекст (bounded context)

Описывает границы подсистем или работы определенной группы, в пределах которой модель определяется и применяется.

Основным акцентом DDD является понимание, как создавать абстрактные модели предметных областей, которые могут быть реализованы с помощью набора технологий. Методология DDD и дает рекомендации, как разрабатывать модели и развивать технологии, чтобы создать систему, соответствующую потребностям пользователей и устойчивую к изменениям в предметных областях.

Как использовать DDD?

Процесс предметно-ориентированного проектирования предусматривает сотрудничество разработчиков и не разработчиков. В идеале должна быть общая модель с общими языками, поэтому, когда люди из разных областей с разными точками зрения обсуждают решение, у них будет общая база знаний с общими концепциями.

Для применения DDD на практике разработчикам придется начинать с нуля. Частично внести DDD-концепцию в свой проект будет невозможно, если остальная часть модели будет спроектирована традиционным способом. В этом случае удовлетворить конечным результатом пользователя не получится.

Плюсы DDD

Облегчает общение

Единый язык упрощает общение между техническими и нетехническими членами команды разработчиков.

Улучшает гибкость

Многоуровневая и модульная конструкция позволяет легко обновлять продукт, модифицировать и модернизировать его по мере необходимости с меньшими непредвиденными последствиями.

Эффективность

В случае тесного участия экспертов в предметной области продукт с большей вероятностью будет выполнять ту работу, которую должен выполнять. То есть меньше всего вероятности, что он будет иметь функции, которыми не будет пользоваться никто.

Ориентация на пользователя

Вследствие сохранения предметной области в центре процесса проектирования, в результате получается продукт, удовлетворяющий потребности пользователей.

Минусы DDD

Необходимы надежные знания предметной области

Вся разработка продукта будет напрасна, если в команде не присутствует хотя бы один человек-эксперт по предметной области, который точно знает все её тонкости. И разработчикам необходимо будет проводит много времени с этим экспертом, чтобы полностью понять предметную область.

Не подходит для высокотехнологичных проектов

Если проект будет технически трудным для понимания эксперту по предметной области, то в дальнейшем возникнут проблемы у всех членов команды.

Как только команда разработчиков изучит DDD и начнёт применять её философию, изменится восприятие программного обеспечения. Всё потому, что DDD-концепция является очень мощным и эффективным подходом к разработке проектов со сложной бизнес-логикой. Для этого все участники должны иметь высокую степень вовлеченности в проект, готовности и способности достаточно глубоко изучить предметную область и найти общий язык.

Литература для изучения DDD

Учебных материалов по этой теме не так много. Вся теория описана лишь в нескольких книгах, и они очень тяжелы для восприятия.

Многие, кто работал с концепцией DDD, советуют начать исследовать информацию по DDD именно в оригинале и в том порядке, в котором они расположены ниже:

1. Вернон Вон. Реализация методов предметно-ориентированного проектирования.

2. Эванс Эрик. Предметно-ориентированное проектирование. Структуризация сложных программных систем.

3. Верон Вон. Предметно-ориентированное проектирование. Самое важное.

Поделиться:

Теги:

    Сделаем это вместе -
    У вашего бизнеса есть история

    Заказ обратного звонка

    Мы перезвоним вам в течение часа или в удобное для вас время

    Live Chat
    ×
    Мы используем файлы cookie, чтобы обеспечить вам максимальное удобство на нашем веб-сайте. Если вы продолжите использовать этот сайт, мы будем считать, что вы согласны с их использованием.
    Политика конфиденциальности