1445 просмотров
от 4 июня 2024
Computer Science

Вопросы и ответы с собеседований по DDD

Ответы на вопросы с собеседований про парадигму Domain-Driven Design. Стратегическое проектирование, единый язык, предметная область, смысловое ядро, пространство задач и пространство решений, событие, служба предметной области и прочие понятия DDD.

1

Что такое DDD?

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

Комментарии
0/3000
2

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

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

Комментарии
0/3000
3

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

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

Комментарии
0/3000
4

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

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

Комментарии
0/3000
5

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

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

Комментарии
0/3000
6

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

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

Комментарии
0/3000
Авторизуйтесь, чтобы открыть доступ к контенту
8

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

9

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

10

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

11

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

12

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

13

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

14

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

15

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

16

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

Вопросники по Computer Science
Computer Science
11 вопросов
Вопросы и ответы про интернет-протоколы
1359 просмотров
Computer Science
13 вопросов
Вопросы и ответы с собеседований про ООП
1132 просмотра
Computer Science
28 вопросов
Объяснение паттернов проектирования с примерами
1340 просмотров
Computer Science
15 вопросов
Вопросы и ответы с собеседований по DDD
1444 просмотра
Computer Science
12 вопросов
Вопросы с собеседований про операционные системы
1017 просмотров
Хотите заработать на создании вопросников?
Стать редактором
Смежные категории
Docker
7 вопросов
Коллекция полезных команд для Docker
1271 просмотр
Базы данных
60 вопросов
Вопросы и ответы с собеседований по SQL
2193 просмотра
Базы данных
10 вопросов
Вопросы с собеседований о репликации баз данных
1406 просмотров
Базы данных
11 вопросов
Вопросы с собеседований про шардинг баз данных
1221 просмотр
Рекомендуем
Computer Science
15 вопросов
Вопросы и ответы с собеседований по DDD
1444 просмотра
Git
20 вопросов
Вопросы и ответы с собеседований по Git
1727 просмотров
Computer Science
13 вопросов
Вопросы и ответы с собеседований про ООП
1132 просмотра
Computer Science
11 вопросов
Вопросы и ответы про интернет-протоколы
1359 просмотров
Computer Science
28 вопросов
Объяснение паттернов проектирования с примерами
1340 просмотров
Computer Science
12 вопросов
Вопросы с собеседований про операционные системы
1017 просмотров
Другие разделы

Лента

Активность пользователей Девстанции

Перейти к ленте

Лидеры

Рейтинг самых результативных пользователей сообщества

Перейти к лидерам

Треды

Общение по интересам и связь с разработчиками

Перейти к тредам

Задачи

Решение алгоритмических задач с собеседований

Перейти к задачам

Вопросы

Ответы на вопросы с технических собеседований

Вы находитесь здесь

Викторины

Интерактивные викторины по вопросам с собеседований

Перейти к викторинам
Мы в Telegram
Новости проекта, общение с разработчиками, общение по интересам - присоединяйтесь!