Similar presentations:
Стратегические паттерны DDD 2
1.
Стратегические паттерны2.
3.
задачКарта контекстов
Пространство
решений
e-Commerce system
External
Forecasting
system
Inventory
system
4.
Ограниченный контекст(Bounded Context)
5.
Ограниченный контекст – контекстсуществования модели
Модель не может существовать вне контекста
Другие контексты содержат другие модели и
другие диалекты общеупотребительного
языка
Ограниченный контекст в DDD
крупномасштабная зона ответственности
6.
Модель предметной области – корольКороль должен быть защищен
7.
Страховые полисы для пособий понетрудоспособности следует рассматривать,
принимая во внимание следующие элементы
1.
2.
3.
4.
5.
6.
7.
8.
9.
Расценки и продажи
Общий процесс работы с полисом (продление,
прекращение)
Оценка выплат за аудит
Ежеквартальные оценки
Установка и поддержание ставок
Выплата комиссий агентам и брокерам
Получение выплат от клиентов
Общая бухгалтерия
Определение допустимых рисков (андеррайтинг)
8.
Все это можно включить в единую монолитнуюсистему, но это приведет нас к потери ясности
Полис в контексте общего рабочего процесса и в
контексте аудита выплат, совершенно разные вещи
Если использовать один и тот же класс, профиль
этого класса станет очень велик и мы далеко уйдем
от проверенных и действительно оптимальных
приемов, таких, как принцип персональной
ответственности (SRP)
9.
Системы, в которых не удаетсяразделить и изолировать
ограниченные контексты, часто
приобретают архитектурный
стиль, который имеет
красноречивое название
«Большой ком грязи»
«Большой ком грязи (Big Ball of Mud)»
1999 г. Брайан Фут (Brian Foot) и Йозеф Йодер (JosephYoder)
10.
Возможны пересечения важных понятий, аотсюда трудности в понимании, какую
модель нужно использовать в задаче
Запутываются коммуникации между
членами группы
Возникают дублирующиеся понятия и
ложные родственники
Работа программы становиться
ненадежной, если в ней, одновременно
используются объекты из разных моделей
11.
Правил определения контекста несуществует, но всем должны быть
известны правила ограничивающие
контекст
Основное качество ограниченного контекста
– поддержка границы
Если это требует нарушения принципа
DRY («не дублируй себя»), принцип DRY
должен быть нарушен
12.
Ограниченный контекст не идентичен моделисмыслового ядра
В результате ошибок (особенностей)
проектирования
В идеальном проекте DDD между подобластями и
ограниченными контекстами должно быть
установлено однозначное соответствие
Ограниченный контекст включает в себя
модули разных слоев, не только слоя бизнес
логики
13.
Ограниченный контекст называется поимени подобласти которою содержит
14.
Карта контекста(Context Map)
15.
Для исследования границ нашей системыможно использовать простую схему, которая
называется картой контекста
Перечисление контекстов
2. Указание связей между ними
1.
Карта контекста фиксирует существующую
ситуацию
16.
У каждого контекста есть собственныйобщеупотребительный язык
17.
Strategic Domain Driven Design withContext Mapping [Alberto Brandolini]
18.
19.
20.
Взаимосвязи контекстов21.
Взаимодействие между разными командами может привести к проблемам22.
При наличии нескольких взаимодействующих контекстов необходимоформировать отображения контекстов друг в друга
23.
Две команды используют общую доменную модель для организациивзаимодействия
Самый сложный с точки зрения поддержки вариант
24.
Одна из команд предоставляет сервисы (фиды) другойТестирование и разработка интерфейсов требует совместной работы
25.
Отношения вышестоящий-нижестоящий(upstream-downstream) фиксируют слияние
одного контекста на другой
Вышестоящий контекст (U) оказывает
влияние на нижестоящий
Нижестоящий контекст (D) не оказывает
влияние на вышестоящий
Реализации
Пользователь/Заказчик (Customer/Supplier)
Конформизм (Conformist)
26.
Одна из команд подстраивается под второю, предоставляющуюсервисы
Качество модели первой команды, при этом, сильно зависит от
качества модели второй
27.
Дополнительный слой адаптеров между контекстами, позволяетосуществлять взаимодействие в обоих направлениях и снимает
зависимость команд друг от друга
28.
Интеграция всегда обходится дорого, аотдача от нее не всегда велика
Объявите ОГРАНИЧЕННЫЙ никак не
связанным с другими контекстами
Это позволит разработчикам найти
простые узкоспециализированные
решения в данном ограниченном
пространстве
29.
Применяется как паттерн дляунаследованных систем
Система не упорядочивается, но
ограничивается и не оказывает
существенного влияния но вновь
создаваемый код
30.
31.
Службы с открытым протоколомOpen Host Service (OHS)
Например RPC
Если подсистему необходимо интегрировать со многими
другими, необходимость построения отдельного
транслятора для каждой из других систем становится
тяжким бременем
Общедоступный язык
Published Language (PL)
Например XML
Прямая трансляция из существующей модели предметной
области в нее может оказаться неудачным решением
или
32.
Карта контекста фиксируетсуществующее решение
Не все проблемы могут быть
разрешены
33.
Карта контекстов представляетархитектуру предприятия
нет
Карта контекстов представляет топологию
системы
нет
34.
Поддержка целостностиФокусируя внимание на своем контексте нужно
иметь в виду, кто зависит от производимых нами
изменений и от чьих изменений зависим мы
Основа планирования
Понимание принадлежности и
ответственности
Выявление проблем в бизнес потоках
Выявление нетехнологических проблем
Улучшение коммуникаций
Помощь новым сотрудникам
35.
Антикоррупционный слой(Anticorruption Layer)
36.
ИменаСлой, предохраняющий абстракцию (ACL)
Предохранительный уровень
Определение
Схема DDD, в которой предлагается
создавать фильтры, не дающие концепциям
из другой предметной области просочиться
в вашу модель
Поддерживает чистоту модели
37.
Придает нужный смысл объектам из другой посемантике модели
Делает менее чувствительной модель к изменениям
из вне
Упрощает интерфейсы взаимодействия между двумя
системами
Содержит методы специфичные для взаимосвязи
двух подсистем
Содержит необходимые инварианты для контроля
поступления внешних данных
Основные шаблоны для реализации: Facade, Adapter
38.
В сущности, репозитории —разновидность ACL
Они оставляют снаружи вашей модели SQL
или конструкции объектно-реляционного
сопоставления (ORM)
39.
ACL — отличный способ для введенияшвов
Шов — это зона, где можно начать
убирать устаревший код и вносить
изменения
Выделение швов, как и изоляция
основной предметной области, могут
быть очень выгодны при использовании
методов DDD для рефакторинга и
усиления наиболее значимых частей
кода
Эффективная работа с унаследованным кодом
[Майкл Физерс (Michael Feathers)]
40.
Четко обозначить контуры модели,определить ее первостепенный смысл
Сформулировать концепции, для добавление
в модель новых понятий
Избегать зависимостей с объектами других
моделей
Взаимодействовать с другими моделями,
только через предохранительные уровни
Постоянно контактировать с разработчиками
других моделей, с целью выделения общего
ядра
41.
Any 3rd party system that Ihave to integrate with was
written by a drunken monkey
typing with his feet
Oren Eini aka Ayende