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

Содержание

Слайд 2

Что это вообще такое? Вроде бы всего лишь один из шаблонов

Что это вообще такое?

Вроде бы всего лишь один из шаблонов реализации

бизнес-логики!
Но не только..
Пример того, как следует выделить предметную область в программном обеспечении, для того, чтобы проще преодолевать сложности, частые изменения, проблемы коммуникации и прочие недуги предметной области.
Слайд 3

Не отменяет практики DDD – лишь дополнение ООП Паттерны SOLID, KISS, DRY, … TDD IoC ORM

Не отменяет практики

DDD – лишь дополнение
ООП
Паттерны
SOLID, KISS, DRY, …
TDD
IoC
ORM

Слайд 4

Где это нужно? Не надо использовать DDD везде! Хорошо подходит для

Где это нужно?

Не надо использовать DDD везде!
Хорошо подходит для Enterprise
длинный жизненный

цикл
большое количество сущностей со сложными «взаимоотношениями»
- эволюция бизнес-модели
Слайд 5

2 стороны DDD Тактика сущность объект-значение сервис событие агрегат фабрика хранилище

2 стороны DDD

Тактика
сущность
объект-значение
сервис
событие
агрегат
фабрика
хранилище

Стратегия
единый язык
предметная область
предметная подобласть
смысловое ядро
ограниченный контекст
карта контекстов

Слайд 6

Единый язык Язык созданный и понимаемый ВСЕМИ участниками проекта – экспертами,

Единый язык

Язык созданный и понимаемый ВСЕМИ участниками проекта – экспертами, разработчиками,

бизнес-аналитиками, а то и заказчиками.
Каждый участник проекта использует в своей работе именно этот язык – и в коде, и в документации и в общении.
Слайд 7

Единый язык (честно украденный пример) «Медсестра назначает вакцину от гриппа пациенту

Единый язык (честно украденный пример)

«Медсестра назначает вакцину от гриппа пациенту в

стандартной дозе»
patient.SetShotType(ShotTypes.Flu);
patient.SetDose(dose);
patient.SetNurse(nurse);
patient.GiveFluShot();
Vaccine vaccine = Vaccines.StandartAdultFluDose();
nurse.AdministerFluVaccine(patient, vaccine);
Слайд 8

Ограниченный контекст В рамках предметной области смысл определенного термина или фразы

Ограниченный контекст

В рамках предметной области смысл определенного термина или фразы может

сильно отличаться.
Ограниченный контекст - некая граница, в пределах которой понятия единого языка имеют вполне конкретное контекстное значение.
Слайд 9

Ограниченный контекст (пример) Понятие «Счет» в разных предметных областях Банковские услуги

Ограниченный контекст (пример)

Понятие «Счет» в разных предметных областях
Банковские услуги – счет

клиента
Партия в теннис – счет матча
Слайд 10

Предметная область, подобласть, смысловое ядро Предметная область – это то, что

Предметная область, подобласть, смысловое ядро

Предметная область – это то, что делает

организация, и среда, в которой она это делает. Смысл бизнеса, вся его аутентичность.
Это и есть DOMAIN – первая D в DDD.
Смысловое ядро – подобласть, имеющая первостепенное значение.
Слайд 11

Пространство задач и пространство решений Пространство задач – части предметной области,

Пространство задач и пространство решений

Пространство задач – части предметной области, необходимые

для создания смыслового ядра (т.е. само ядро + какие-либо предметные подобласти).
Пространство решений – один или несколько ограниченных контекстов. Разработанный ограниченный контекст – это по сути реализация решения пространства задач.
Идеальный вариант – однозначное соответствие между подобластями и контекстами, т .е. между задачами и решениями.
Слайд 12

Карта контекстов Отображение пространства решений, в котором находится команда. Набор ограниченных

Карта контекстов

Отображение пространства решений, в котором находится команда.
Набор ограниченных контекстов и

связей между ними:
Partnership
Shared kernel
Customer-supplier development
Conformist
Anticorruption layer
Open host service
Published language
Separate ways
Big ball of mud
Слайд 13

Сущность Понятие предметной области, которое является уникальным и отличным от всех

Сущность

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

объектов в системе.
То, что имеет свою идентичность/индивидуальность, которая связана с ней на протяжении всего существования.
Слайд 14

Объект-значение Объект, для которого не важна его индивидуальность. Объект, который полностью

Объект-значение

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

атрибутами.
измеряет, описывает объекты предметной области
можно считать неизменяемым
моделирует нечто концептуально целое
Слайд 15

Сервис Выполняет действия, которые нельзя отнести к какой-то конкретной сущности или

Сервис

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

не принадлежит ни одному из объектов предметной области
Операция выполняется над различными объектами предметной области
Злоупотребление приводит к «анемичной модели предметной области».
Слайд 16

Агрегат Кластер из объектов сущностей или значений. Агрегаты рассматриваются как единое

Агрегат

Кластер из объектов сущностей или значений.
Агрегаты рассматриваются как единое целое

с точки зрения изменения данных.
У агрегата есть корень агрегации. Все обращения к агрегату должны происходить через него.
Слайд 17

Фабрика Некоторые агрегаты или сущности могут быть достаточно сложными. Сложный объект

Фабрика

Некоторые агрегаты или сущности могут быть достаточно сложными.
Сложный объект не

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