1044 просмотра
От 4 июня

Ответы на вопросы про Domain-Driven Design

1

Что такое DDD?

Domain-driven design (Предметно-ориентированное проектирование, реже проблемно-ориентированное) — это набор принципов и схем, направленных на создание оптимальных систем объектов. Сводится к созданию программных абстракций, которые называются моделями предметных областей. В эти модели входит бизнес-логика, устанавливающая связь между реальными условиями области применения продукта и кодом. Предметно-ориентированное проектирование не является какой-либо конкретной технологией или методологией. DDD — это набор правил, которые позволяют принимать правильные проектные решения. Данный подход позволяет значительно ускорить процесс проектирования программного обеспечения в незнакомой предметной области. Как устроен Domain-Driven Design Что можно узнать о Domain Driven Design за 10 минут? Domain Driven Design на практике

2

Что такое стратегическое проектирование?

Стратегическое проектирование - это проектирование на высоком уровне абстракции, без технических нюансов, осуществляемое всей командой - как менеджерами/заказчиками, так и техническими специалистами. Основной целью применения DDD является получение высококачественной модели программного обеспечения, которая будет максимально точно отражать поставленные бизнес-цели. Для реализации этого требуется объединение усилий как разработчиков, так и экспертов в предметной области. Создание дружной и сплоченной команды позволяет получить большое количество преимуществ для бизнеса. Обмен знаниями между членами команды снижает шансы появления «тайного знания» о модели, достигается консенсус между экспертами предметной области в отношении различных понятий и терминологии, разрабатывается более точное определение и описание самого бизнеса. Как приручить DDD. Часть 1. Стратегическая Domain-Driven Design: стратегическое проектирование. Часть 1

3

Что такое единый язык (Ubiquitous Language)?

Для того чтобы уравнять разработчиков и экспертов предметной области, чтобы было гораздо проще обмениваться полезными знаниями о предметной области, подход DDD предлагает применять общий набор терминов, понятий и фраз, который будет использоваться в общении между членами команды, и который позже отразится в исходном коде результирующей программы. Этот коллективный язык терминов называется - единый язык. (Ubiquitous Language). Это один из основных и самых важных шаблонов предметного-ориентированного проектирования. Это не бизнес-жаргон, навязанный разработчикам, а настоящий язык, созданный целостной командой – экспертами в предметной области, разработчиками, бизнес-аналитиками и всеми, кто вовлечен в создание системы. Роль в команде не столь существенна, поскольку каждый член команды использует для описания проекта единый язык. Ubiquitous Language и Bounded Context в DDD

4

Что такое ограниченный контекст (Bounded Context)?

Очень важно понимать, что в рамках предметной области смысл определенного термина или фразы может сильно отличаться. Существует некая граница, в пределах которой понятия единого языка имеют вполне конкретное контекстное значение - ограниченный контекст (Bounded context). Это второе по значимости свойство DDD после единого языка. Оба эти понятия взаимосвязаны и не могут существовать друг без друга. Итак, ограниченный контекст – это явная граница, внутри которой существует модель предметной области, которая отображает единый язык в модель программного обеспечения. В каждом ограниченном контексте существует только один единый язык. Ограниченные контексты являются относительно небольшими, меньше чем может показаться на первый взгляд. ограниченный контекст достаточно велик только для единого языка изолированной предметной области, но не больше. Единый значит «вездесущий» или «повсеместный», т. е. язык, на котором говорят члены команды и на котором выражается отдельная модель предметной области, которую разрабатывает команда. Язык является единым только в рамках команды, работающей над проектом в едином ограниченном контексте. Попытка применить единый язык в рамках всего предприятия или что хуже, среди нескольких предприятий, закончится провалом. Декомпозиция систем по ограниченным контекстам DDD — глубокое погружение

5

Что такое предметная область (Domain)?

Это то, что делает организация, и среда, в которой она это делает. Разработчик программного обеспечения для организации обязательно работает в ее предметной области. Следует понимать, что при разработке модели предметной области необходимо сосредоточиться в определенной подобласти, так как практически невозможно создать единственную, всеобъемлющую модель бизнеса даже умеренно сложной организации. Очень важно разделять модели на логические разделенные предметные подобласти (Subdomain) всей предметной области, согласно их фактической функциональности. Подобласти позволяют быстрее определить разные части предметной области, необходимые для решения конкретной задачи

6

Что такое смысловое ядро (Core domain)?

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

Логотип ДевстанцииАвторизуйтесь, чтобы просматривать следующий контент
8

Что такое пространство задач и пространство решений?

Логотип ДевстанцииАвторизуйтесь, чтобы получить доступ
9

Что такое сущность (Entity)?

Логотип ДевстанцииАвторизуйтесь, чтобы получить доступ
10

Что такое Объект-Значение (Value Object)?

Логотип ДевстанцииАвторизуйтесь, чтобы получить доступ
11

Что такое служба предметной области (Domain Service)?

Логотип ДевстанцииАвторизуйтесь, чтобы получить доступ
12

Что такое событие (Domain Event)?

Логотип ДевстанцииАвторизуйтесь, чтобы получить доступ
13

Что такое модуль (Module)?

Логотип ДевстанцииАвторизуйтесь, чтобы получить доступ
14

Что такое агрегат (Aggregate)?

Логотип ДевстанцииАвторизуйтесь, чтобы получить доступ
15

Что такое фабрика (Factory)?

Логотип ДевстанцииАвторизуйтесь, чтобы получить доступ
16

Что такое хранилище (Repository)?

Логотип ДевстанцииАвторизуйтесь, чтобы получить доступ
Хотите стать частью сообщества Девстанции?
Вступайте в наш чат в Telegram

Также в этой категории

Вопросник
  11 вопросов

Вопросы про HTTP, SSL, WebSocket и прочее

Вопросы для собеседования бэкенд-разработчика

1091 просмотр
От 12 октября 2023
Вопросник
  13 вопросов

Общие принципы и понятия ООП

Вопросы для собеседования по теме ООП

878 просмотров
От 7 октября 2023
Вопросник
  28 вопросов

Паттерны проектирования с примерами

Раскрытие на примерах почти всех паттернов проектирования

1018 просмотров
От 7 октября 2023
Вопросник
  12 вопросов

Операционные системы: базовые понятия

Потоки, процессы, конкурентность и прочие понятия из мира ОС

827 просмотров
От 27 января

Вам может быть интересно

Вопросник
  7 вопросов

Коллекция полезных команд для Docker

Большая шпаргалка по всем командам Docker

963 просмотра
От 12 октября 2023
Вопросник
  11 вопросов

Теория шардинга баз данных

О распределении данных между серверами

926 просмотров
От 10 октября 2023
Вопросник
  10 вопросов

Всё о репликации баз данных

Описание понятий и процессов репликации БД

1009 просмотров
От 8 октября 2023
Вопросник
  60 вопросов

Топ 60 вопросов про базы данных и SQL

Ответы на вопросы с собеседований по БД и SQL

1622 просмотра
От 4 июня

Топ тредов

Gravatar for 1847arsen
Arsen
: Задача в Python под названием "Кратчайший путь в матрице"

Последнее сообщение:
Gravatar for 1847arsen
Arsen
: Ошибка на 3 тесте # Ожидаемый результат: 2 а должен быть 1
1 сообщение
31 просмотр

Gravatar for 1233freddypopa
freddypopa
: Добавить чекбокс, который отвечает за показ ранее тронутых задач (черновик)

Последнее сообщение:
: Отличная идея! Возьмём её на заметку!
1 сообщение
126 просмотров

: Предложите идею и получите спонсорский доступ на месяц

Последнее сообщение:
Gravatar for 1236borisops
Borisops
: Добавить темную тему) что бы можно было посмотреть сложность алгоритма и добавить тэги.
10 сообщений
342 просмотра

Все категории