SlideShare a Scribd company logo
1 of 21
От монолитных моделей
предметной области –
к модульным
Максим Цепков
Архитектор и бизнес-аналитик CUSTIS
Санкт-Петербург, 18 февраля 2017
World Information Architecture Day
Приложения давно модульные,
а модель предметной области
часто хотят построить на общей
непротиворечивой системе понятий
Шина
Поставки
Каталог
товаров Продажи
Склад Финансы
2/21
Бизнес-слой
Слой
приложений Модульный
IT-ландшафт
Единая модель
Это основано на убеждении, что
существует непротиворечивая
и целостная картина мира, которую
мы можем не знать, но выясняем
?
3/21
Может быть, в мире идеальных
объектов Платона и Декарта так
и есть, но на практике целостная
картина оказывается слишком жесткой
4/21
Купля-
продажа
Разрабатывая Domain Driven Design,
Эрик Эванс осознал эту проблему
и предложил решение*
О нем я расскажу
* Эрик Эванс. DDD. Часть IV «Стратегическое проектирование»
5/21
Решение – ограниченный контекст
6/21
 Предметную область следует разделить
на ограниченные контексты (bounded context)
 Целостность удерживается за счет карты этих
контекстов (context map)
 Имена (понятия) включаются в единый язык
 Для изоляции контекстов применяем те же подходы
ООП, что и для разработки софта
 Для работы с похожими контекстами тоже применяем
подходы ООП
Как работать с контекстами?
7/21
Шаблоны работы с контекстами
Карта контекстов
Context map
Единый язык
Ubiquitous
language
Заказчик и поставщик
Customer-Supplier teams
Конформист
Conformist
Служба с открытым
протоколом
Open host service
Общедоступный язык
Published language
Отдельное
существование
Separate ways
Предохранительный уровень
Anticorruption layer
8/21
Общее ядро
Shared kernel
Ограниченный
контекст
Bounded context
Кейс 1.
Товарные документы в торговле
Я не буду пересказывать книгу.
Я расскажу кейсы из своего опыта
9/21
Счет-фактура
Накладная
Счет
Заказ
Документы в оптовых продажах
Намерения о сделке
согласуем с покупателем
В случае продажи
по предоплате
По факту отгрузки
Для учета НДС
(наполнение – как в накладной)
Основной документ – накладная,
она фиксирует факт сделки и сумму за отгрузку
10/21
Компания Покупатель
Документы в закупках
Основным документом стал Invoice: мы его оплачиваем
и ожидаем товар, принимая на него заказы 11/21
Счет-фактура
Приходная
накладная
Invoice
Заказ
КомпанияПоставщик
В закупках – похоже, но есть нюансы
Что принял
наш склад
Для учета НДС
(приходит с товаром)
Что мы
хотели купить
Что поставщик
обещал прислать
 Сделка одинакова: купля-продажа
 Но компания занимает разные позиции в сделке
 Восприятие всегда зависит от позиции
Почему так по-разному?
И не стоит объединять поставки и продажи
в один контекст на основе типа сделки
12/21
Контексты товарных документов
Продажи
Поставки
Бухгалтерия
Склад
Язык торговых сделок
Бухгалтерия
интерпретирует
сделки по-своему
Поставки и продажи
почти независимы
Склад сам фиксирует
ответственность за товар
Общий язык,
он объединяет все контексты
13/21
 Опирайтесь на структуру деятельности компании,
делите ее на связанные области
 Согласуйте понятийные интерфейсы
для коммуникации на границах областей
 Используйте язык сделок из общей и отраслевой
культуры
 Учитывайте позицию компании в сделке
 Соотносите внутренний язык компании
с языком, принятым в культуре
Выводы: как разделить контексты
операционных документов?
14/21
 В понятийном аппарате всегда отпечатаны
текущие информационные системы
 Нормированные области и системы диктуют
взаимодействие другим – шаблон конформист
 Если предполагается замена системы, то изменится
и язык, подготовьтесь к этому:
 Используйте язык из культуры отрасли, а не старые шаблоны
компании
 При необходимости сделайте предохранительный уровень
 Зависимость контекстов не должна мешать
независимому развитию областей бизнеса
Выводы: как определить
взаимодействие контекстов?
15/21
Кейс 2.
Каталог товаров в торговле
Казалось бы, очевидно: товары с атрибутами,
поделенные на группы иерархическим классификатором
16/21
 Одна классификация – удобно, но чью точку зрения
брать за основу?
 Закупающих товар (разделение по группам производства)?
 Менеджеров по оптовым продажам (разделение по группам клиентов)?
 Тех, кто размещает товар в магазине (разделение по тематике
размещения)?
 Продавцов (разделение по комплементарным товарам)?
 Покупателей интернет-магазина (разделение по рекламному
представлению)?
 На 80–90% группы совпадают, но не на 100%
 Лыжные перчатки – с перчатками или горными лыжами?
 Мелочь, которая продается у касс, – где она в каталоге?
 А услуги и промо-комплекты – где они в каталоге?
 Еще не купленные товары поставщиков в каталоге есть?
Как классифицировать товары?
17/21
Таможенные
декларации
Контексты каталога
Классификация
и атрибуты
для закупающих
Классификация
и атрибуты
для размещения
в магазинеАтрибуты
для логистов
Классификация
и атрибуты
для интернет-
магазина
Описания
для сервисного
центра
Общее ядро
каталога товаров
18/21
 Разные взгляды на справочники
реализуются через атрибуты, например:
 Договорились, что товарная группа – для каталога
продаж, а категория товара – для закупающих
 Группе клиента соответствует подразделение, ведущее
продажи, а категории клиента – правило оплат
 Но часто этого не хватает, и тогда люди
ведут собственные Excel с классификацией
Есть ли контексты у справочников
в системах вендоров?
И теперь вы будете понимать, почему это происходит
19/21
 Области ограниченных контекстов совпадают –
они объединяют людей
 Как правило, в каждой области – свои документы,
есть интерфейсы передачи
 Справочники – общие, но у каждого свой взгляд
на их наполнение
 Поэтому применяются разные шаблоны
для взаимодействия контекстов
Контексты справочников
и документов: сходства и различия
20/21
 Множество контекстов – фича, а не баг
 Единая целостная модель –
непрактичный миф прошлого
 Модель мира зависит от позиции,
контексты – адресные
 Работаем с контекстами на практике
 Предметную область делим на ограниченные контексты
(bounded context)
 Целостность держит карта контекстов (context map)
и единый язык (ubiquitous language)
Подводя итоги
Есть вопросы? Обращайтесь!
Максим Цепков mtsepkov.org
21/21
Это не очевидно,
особенно из опыта
небольших проектов

More Related Content

Similar to От монолитных моделей предметной области — к модульным

Ddd softwarepeople-2012-tsepkov
Ddd softwarepeople-2012-tsepkovDdd softwarepeople-2012-tsepkov
Ddd softwarepeople-2012-tsepkovMaxim Tsepkov
 
Domain-Driven Design: Модель вместо требований
Domain-Driven Design: Модель вместо требованийDomain-Driven Design: Модель вместо требований
Domain-Driven Design: Модель вместо требованийCUSTIS
 
DDD requirements AnalystDays-2014 Tsepkov
DDD requirements AnalystDays-2014 TsepkovDDD requirements AnalystDays-2014 Tsepkov
DDD requirements AnalystDays-2014 TsepkovMaxim Tsepkov
 
DDD - модель вместо требований
DDD - модель вместо требованийDDD - модель вместо требований
DDD - модель вместо требованийSQALab
 
Интегрированного управления в российских цепочках поставок нет, или К чёрту в...
Интегрированного управления в российских цепочках поставок нет, или К чёрту в...Интегрированного управления в российских цепочках поставок нет, или К чёрту в...
Интегрированного управления в российских цепочках поставок нет, или К чёрту в...Rafail Salikhov
 
DDD-secon-2014-tsepkov
DDD-secon-2014-tsepkovDDD-secon-2014-tsepkov
DDD-secon-2014-tsepkovMaxim Tsepkov
 
Поисковая оптимизация интернет-магазина на базе Drupal Commerce
Поисковая оптимизация интернет-магазина на базе Drupal CommerceПоисковая оптимизация интернет-магазина на базе Drupal Commerce
Поисковая оптимизация интернет-магазина на базе Drupal CommerceAlexey Kostin
 
Domain Driven Design: модель вместо требования
Domain Driven Design: модель вместо требованияDomain Driven Design: модель вместо требования
Domain Driven Design: модель вместо требованияCUSTIS
 
Ddd happy dev-2013-tsepkov
Ddd happy dev-2013-tsepkovDdd happy dev-2013-tsepkov
Ddd happy dev-2013-tsepkovMaxim Tsepkov
 
Пространство вариантов_final
Пространство вариантов_finalПространство вариантов_final
Пространство вариантов_finalVlad Berezin, PMP
 
Приглашение к сотрудничеству для розничных сетей
Приглашение к сотрудничеству для розничных сетейПриглашение к сотрудничеству для розничных сетей
Приглашение к сотрудничеству для розничных сетейAlexey Ivasyuk
 
DDD: проблемы и решения при отражении модели предметной области в код
DDD: проблемы и решения при отражении модели предметной области в кодDDD: проблемы и решения при отражении модели предметной области в код
DDD: проблемы и решения при отражении модели предметной области в кодCUSTIS
 
DDD — эффективный способ работы в условиях системной сложности
DDD — эффективный способ работы в условиях системной сложностиDDD — эффективный способ работы в условиях системной сложности
DDD — эффективный способ работы в условиях системной сложностиCUSTIS
 
Новые требования к внедренцам
Новые требования к внедренцамНовые требования к внедренцам
Новые требования к внедренцамFFelix87
 
Поисковая оптимизация интернет-магазины на базе Drupal Commerce
Поисковая оптимизация интернет-магазины на базе Drupal CommerceПоисковая оптимизация интернет-магазины на базе Drupal Commerce
Поисковая оптимизация интернет-магазины на базе Drupal CommercePVasili
 
Practice of enterprice development ProfsoUX-2017
Practice of enterprice development  ProfsoUX-2017Practice of enterprice development  ProfsoUX-2017
Practice of enterprice development ProfsoUX-2017Maxim Tsepkov
 
Сотрудничество с корпорациями: рецепты из практики
Сотрудничество с корпорациями: рецепты из практикиСотрудничество с корпорациями: рецепты из практики
Сотрудничество с корпорациями: рецепты из практикиCUSTIS
 
Опыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурамиОпыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурамиПрофсоUX
 

Similar to От монолитных моделей предметной области — к модульным (20)

Ddd softwarepeople-2012-tsepkov
Ddd softwarepeople-2012-tsepkovDdd softwarepeople-2012-tsepkov
Ddd softwarepeople-2012-tsepkov
 
Domain-Driven Design: Модель вместо требований
Domain-Driven Design: Модель вместо требованийDomain-Driven Design: Модель вместо требований
Domain-Driven Design: Модель вместо требований
 
DDD requirements AnalystDays-2014 Tsepkov
DDD requirements AnalystDays-2014 TsepkovDDD requirements AnalystDays-2014 Tsepkov
DDD requirements AnalystDays-2014 Tsepkov
 
DDD - модель вместо требований
DDD - модель вместо требованийDDD - модель вместо требований
DDD - модель вместо требований
 
Интегрированного управления в российских цепочках поставок нет, или К чёрту в...
Интегрированного управления в российских цепочках поставок нет, или К чёрту в...Интегрированного управления в российских цепочках поставок нет, или К чёрту в...
Интегрированного управления в российских цепочках поставок нет, или К чёрту в...
 
DDD-secon-2014-tsepkov
DDD-secon-2014-tsepkovDDD-secon-2014-tsepkov
DDD-secon-2014-tsepkov
 
Поисковая оптимизация интернет-магазина на базе Drupal Commerce
Поисковая оптимизация интернет-магазина на базе Drupal CommerceПоисковая оптимизация интернет-магазина на базе Drupal Commerce
Поисковая оптимизация интернет-магазина на базе Drupal Commerce
 
Domain Driven Design: модель вместо требования
Domain Driven Design: модель вместо требованияDomain Driven Design: модель вместо требования
Domain Driven Design: модель вместо требования
 
Ddd happy dev-2013-tsepkov
Ddd happy dev-2013-tsepkovDdd happy dev-2013-tsepkov
Ddd happy dev-2013-tsepkov
 
Пространство вариантов_final
Пространство вариантов_finalПространство вариантов_final
Пространство вариантов_final
 
Приглашение к сотрудничеству для розничных сетей
Приглашение к сотрудничеству для розничных сетейПриглашение к сотрудничеству для розничных сетей
Приглашение к сотрудничеству для розничных сетей
 
DDD: проблемы и решения при отражении модели предметной области в код
DDD: проблемы и решения при отражении модели предметной области в кодDDD: проблемы и решения при отражении модели предметной области в код
DDD: проблемы и решения при отражении модели предметной области в код
 
DDD — эффективный способ работы в условиях системной сложности
DDD — эффективный способ работы в условиях системной сложностиDDD — эффективный способ работы в условиях системной сложности
DDD — эффективный способ работы в условиях системной сложности
 
Новые требования к внедренцам
Новые требования к внедренцамНовые требования к внедренцам
Новые требования к внедренцам
 
Поисковая оптимизация интернет-магазины на базе Drupal Commerce
Поисковая оптимизация интернет-магазины на базе Drupal CommerceПоисковая оптимизация интернет-магазины на базе Drupal Commerce
Поисковая оптимизация интернет-магазины на базе Drupal Commerce
 
4886
48864886
4886
 
1604
16041604
1604
 
Practice of enterprice development ProfsoUX-2017
Practice of enterprice development  ProfsoUX-2017Practice of enterprice development  ProfsoUX-2017
Practice of enterprice development ProfsoUX-2017
 
Сотрудничество с корпорациями: рецепты из практики
Сотрудничество с корпорациями: рецепты из практикиСотрудничество с корпорациями: рецепты из практики
Сотрудничество с корпорациями: рецепты из практики
 
Опыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурамиОпыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурами
 

More from CUSTIS

Три истории микросервисов, или MSA для Enterprise
Три истории микросервисов, или MSA для EnterpriseТри истории микросервисов, или MSA для Enterprise
Три истории микросервисов, или MSA для EnterpriseCUSTIS
 
Долгоживущие ИТ в динамичном ритейле
Долгоживущие ИТ в динамичном ритейлеДолгоживущие ИТ в динамичном ритейле
Долгоживущие ИТ в динамичном ритейлеCUSTIS
 
Будущее уже наступило: от Agile к бирюзовым организациям
Будущее уже наступило: от Agile к бирюзовым организациямБудущее уже наступило: от Agile к бирюзовым организациям
Будущее уже наступило: от Agile к бирюзовым организациямCUSTIS
 
Как выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиямиКак выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиямиCUSTIS
 
Диаграммы учета как средство для наглядного и целостного отображения правил у...
Диаграммы учета как средство для наглядного и целостного отображения правил у...Диаграммы учета как средство для наглядного и целостного отображения правил у...
Диаграммы учета как средство для наглядного и целостного отображения правил у...CUSTIS
 
Agile — ответ на вызовы третьей промышленной революции
Agile — ответ на вызовы третьей промышленной революцииAgile — ответ на вызовы третьей промышленной революции
Agile — ответ на вызовы третьей промышленной революцииCUSTIS
 
Барьеры микросервисной архитектуры
Барьеры микросервисной архитектурыБарьеры микросервисной архитектуры
Барьеры микросервисной архитектурыCUSTIS
 
Будущее omni-channel маркетинга: инструменты, кейсы и цифры
Будущее omni-channel маркетинга: инструменты, кейсы и цифрыБудущее omni-channel маркетинга: инструменты, кейсы и цифры
Будущее omni-channel маркетинга: инструменты, кейсы и цифрыCUSTIS
 
Agile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектахAgile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектахCUSTIS
 
State of the .Net Performance
State of the .Net PerformanceState of the .Net Performance
State of the .Net PerformanceCUSTIS
 
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделять
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделятьОтветственность за качество в разных ИТ-проектах: в чем она и как ее разделять
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделятьCUSTIS
 
Опыт применения метода ATAM для оценки архитектуры
Опыт применения метода ATAM для оценки архитектурыОпыт применения метода ATAM для оценки архитектуры
Опыт применения метода ATAM для оценки архитектурыCUSTIS
 
Гибридный подход к управлению правами доступа: когда стандартного IDM не хватает
Гибридный подход к управлению правами доступа: когда стандартного IDM не хватаетГибридный подход к управлению правами доступа: когда стандартного IDM не хватает
Гибридный подход к управлению правами доступа: когда стандартного IDM не хватаетCUSTIS
 
Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...
Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...
Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...CUSTIS
 
Process и Case Management в информационной системе: от автоматизации As Is к ...
Process и Case Management в информационной системе: от автоматизации As Is к ...Process и Case Management в информационной системе: от автоматизации As Is к ...
Process и Case Management в информационной системе: от автоматизации As Is к ...CUSTIS
 
RBAC & ABAC: гибридное решение для управления правами доступа
RBAC & ABAC: гибридное решение для управления правами доступаRBAC & ABAC: гибридное решение для управления правами доступа
RBAC & ABAC: гибридное решение для управления правами доступаCUSTIS
 
Омниканальная модель в ритейле: решения и кейсы
Омниканальная модель в ритейле: решения и кейсыОмниканальная модель в ритейле: решения и кейсы
Омниканальная модель в ритейле: решения и кейсыCUSTIS
 
WinDbg со товарищи
WinDbg со товарищиWinDbg со товарищи
WinDbg со товарищиCUSTIS
 
Akka.NET
Akka.NETAkka.NET
Akka.NETCUSTIS
 
Process & Case Management: совмещай и властвуй!
Process & Case Management: совмещай и властвуй!Process & Case Management: совмещай и властвуй!
Process & Case Management: совмещай и властвуй!CUSTIS
 

More from CUSTIS (20)

Три истории микросервисов, или MSA для Enterprise
Три истории микросервисов, или MSA для EnterpriseТри истории микросервисов, или MSA для Enterprise
Три истории микросервисов, или MSA для Enterprise
 
Долгоживущие ИТ в динамичном ритейле
Долгоживущие ИТ в динамичном ритейлеДолгоживущие ИТ в динамичном ритейле
Долгоживущие ИТ в динамичном ритейле
 
Будущее уже наступило: от Agile к бирюзовым организациям
Будущее уже наступило: от Agile к бирюзовым организациямБудущее уже наступило: от Agile к бирюзовым организациям
Будущее уже наступило: от Agile к бирюзовым организациям
 
Как выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиямиКак выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиями
 
Диаграммы учета как средство для наглядного и целостного отображения правил у...
Диаграммы учета как средство для наглядного и целостного отображения правил у...Диаграммы учета как средство для наглядного и целостного отображения правил у...
Диаграммы учета как средство для наглядного и целостного отображения правил у...
 
Agile — ответ на вызовы третьей промышленной революции
Agile — ответ на вызовы третьей промышленной революцииAgile — ответ на вызовы третьей промышленной революции
Agile — ответ на вызовы третьей промышленной революции
 
Барьеры микросервисной архитектуры
Барьеры микросервисной архитектурыБарьеры микросервисной архитектуры
Барьеры микросервисной архитектуры
 
Будущее omni-channel маркетинга: инструменты, кейсы и цифры
Будущее omni-channel маркетинга: инструменты, кейсы и цифрыБудущее omni-channel маркетинга: инструменты, кейсы и цифры
Будущее omni-channel маркетинга: инструменты, кейсы и цифры
 
Agile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектахAgile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектах
 
State of the .Net Performance
State of the .Net PerformanceState of the .Net Performance
State of the .Net Performance
 
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделять
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделятьОтветственность за качество в разных ИТ-проектах: в чем она и как ее разделять
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделять
 
Опыт применения метода ATAM для оценки архитектуры
Опыт применения метода ATAM для оценки архитектурыОпыт применения метода ATAM для оценки архитектуры
Опыт применения метода ATAM для оценки архитектуры
 
Гибридный подход к управлению правами доступа: когда стандартного IDM не хватает
Гибридный подход к управлению правами доступа: когда стандартного IDM не хватаетГибридный подход к управлению правами доступа: когда стандартного IDM не хватает
Гибридный подход к управлению правами доступа: когда стандартного IDM не хватает
 
Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...
Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...
Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...
 
Process и Case Management в информационной системе: от автоматизации As Is к ...
Process и Case Management в информационной системе: от автоматизации As Is к ...Process и Case Management в информационной системе: от автоматизации As Is к ...
Process и Case Management в информационной системе: от автоматизации As Is к ...
 
RBAC & ABAC: гибридное решение для управления правами доступа
RBAC & ABAC: гибридное решение для управления правами доступаRBAC & ABAC: гибридное решение для управления правами доступа
RBAC & ABAC: гибридное решение для управления правами доступа
 
Омниканальная модель в ритейле: решения и кейсы
Омниканальная модель в ритейле: решения и кейсыОмниканальная модель в ритейле: решения и кейсы
Омниканальная модель в ритейле: решения и кейсы
 
WinDbg со товарищи
WinDbg со товарищиWinDbg со товарищи
WinDbg со товарищи
 
Akka.NET
Akka.NETAkka.NET
Akka.NET
 
Process & Case Management: совмещай и властвуй!
Process & Case Management: совмещай и властвуй!Process & Case Management: совмещай и властвуй!
Process & Case Management: совмещай и властвуй!
 

От монолитных моделей предметной области — к модульным

  • 1. От монолитных моделей предметной области – к модульным Максим Цепков Архитектор и бизнес-аналитик CUSTIS Санкт-Петербург, 18 февраля 2017 World Information Architecture Day
  • 2. Приложения давно модульные, а модель предметной области часто хотят построить на общей непротиворечивой системе понятий Шина Поставки Каталог товаров Продажи Склад Финансы 2/21 Бизнес-слой Слой приложений Модульный IT-ландшафт Единая модель
  • 3. Это основано на убеждении, что существует непротиворечивая и целостная картина мира, которую мы можем не знать, но выясняем ? 3/21
  • 4. Может быть, в мире идеальных объектов Платона и Декарта так и есть, но на практике целостная картина оказывается слишком жесткой 4/21 Купля- продажа
  • 5. Разрабатывая Domain Driven Design, Эрик Эванс осознал эту проблему и предложил решение* О нем я расскажу * Эрик Эванс. DDD. Часть IV «Стратегическое проектирование» 5/21
  • 7.  Предметную область следует разделить на ограниченные контексты (bounded context)  Целостность удерживается за счет карты этих контекстов (context map)  Имена (понятия) включаются в единый язык  Для изоляции контекстов применяем те же подходы ООП, что и для разработки софта  Для работы с похожими контекстами тоже применяем подходы ООП Как работать с контекстами? 7/21
  • 8. Шаблоны работы с контекстами Карта контекстов Context map Единый язык Ubiquitous language Заказчик и поставщик Customer-Supplier teams Конформист Conformist Служба с открытым протоколом Open host service Общедоступный язык Published language Отдельное существование Separate ways Предохранительный уровень Anticorruption layer 8/21 Общее ядро Shared kernel Ограниченный контекст Bounded context
  • 9. Кейс 1. Товарные документы в торговле Я не буду пересказывать книгу. Я расскажу кейсы из своего опыта 9/21
  • 10. Счет-фактура Накладная Счет Заказ Документы в оптовых продажах Намерения о сделке согласуем с покупателем В случае продажи по предоплате По факту отгрузки Для учета НДС (наполнение – как в накладной) Основной документ – накладная, она фиксирует факт сделки и сумму за отгрузку 10/21 Компания Покупатель
  • 11. Документы в закупках Основным документом стал Invoice: мы его оплачиваем и ожидаем товар, принимая на него заказы 11/21 Счет-фактура Приходная накладная Invoice Заказ КомпанияПоставщик В закупках – похоже, но есть нюансы Что принял наш склад Для учета НДС (приходит с товаром) Что мы хотели купить Что поставщик обещал прислать
  • 12.  Сделка одинакова: купля-продажа  Но компания занимает разные позиции в сделке  Восприятие всегда зависит от позиции Почему так по-разному? И не стоит объединять поставки и продажи в один контекст на основе типа сделки 12/21
  • 13. Контексты товарных документов Продажи Поставки Бухгалтерия Склад Язык торговых сделок Бухгалтерия интерпретирует сделки по-своему Поставки и продажи почти независимы Склад сам фиксирует ответственность за товар Общий язык, он объединяет все контексты 13/21
  • 14.  Опирайтесь на структуру деятельности компании, делите ее на связанные области  Согласуйте понятийные интерфейсы для коммуникации на границах областей  Используйте язык сделок из общей и отраслевой культуры  Учитывайте позицию компании в сделке  Соотносите внутренний язык компании с языком, принятым в культуре Выводы: как разделить контексты операционных документов? 14/21
  • 15.  В понятийном аппарате всегда отпечатаны текущие информационные системы  Нормированные области и системы диктуют взаимодействие другим – шаблон конформист  Если предполагается замена системы, то изменится и язык, подготовьтесь к этому:  Используйте язык из культуры отрасли, а не старые шаблоны компании  При необходимости сделайте предохранительный уровень  Зависимость контекстов не должна мешать независимому развитию областей бизнеса Выводы: как определить взаимодействие контекстов? 15/21
  • 16. Кейс 2. Каталог товаров в торговле Казалось бы, очевидно: товары с атрибутами, поделенные на группы иерархическим классификатором 16/21
  • 17.  Одна классификация – удобно, но чью точку зрения брать за основу?  Закупающих товар (разделение по группам производства)?  Менеджеров по оптовым продажам (разделение по группам клиентов)?  Тех, кто размещает товар в магазине (разделение по тематике размещения)?  Продавцов (разделение по комплементарным товарам)?  Покупателей интернет-магазина (разделение по рекламному представлению)?  На 80–90% группы совпадают, но не на 100%  Лыжные перчатки – с перчатками или горными лыжами?  Мелочь, которая продается у касс, – где она в каталоге?  А услуги и промо-комплекты – где они в каталоге?  Еще не купленные товары поставщиков в каталоге есть? Как классифицировать товары? 17/21
  • 18. Таможенные декларации Контексты каталога Классификация и атрибуты для закупающих Классификация и атрибуты для размещения в магазинеАтрибуты для логистов Классификация и атрибуты для интернет- магазина Описания для сервисного центра Общее ядро каталога товаров 18/21
  • 19.  Разные взгляды на справочники реализуются через атрибуты, например:  Договорились, что товарная группа – для каталога продаж, а категория товара – для закупающих  Группе клиента соответствует подразделение, ведущее продажи, а категории клиента – правило оплат  Но часто этого не хватает, и тогда люди ведут собственные Excel с классификацией Есть ли контексты у справочников в системах вендоров? И теперь вы будете понимать, почему это происходит 19/21
  • 20.  Области ограниченных контекстов совпадают – они объединяют людей  Как правило, в каждой области – свои документы, есть интерфейсы передачи  Справочники – общие, но у каждого свой взгляд на их наполнение  Поэтому применяются разные шаблоны для взаимодействия контекстов Контексты справочников и документов: сходства и различия 20/21
  • 21.  Множество контекстов – фича, а не баг  Единая целостная модель – непрактичный миф прошлого  Модель мира зависит от позиции, контексты – адресные  Работаем с контекстами на практике  Предметную область делим на ограниченные контексты (bounded context)  Целостность держит карта контекстов (context map) и единый язык (ubiquitous language) Подводя итоги Есть вопросы? Обращайтесь! Максим Цепков mtsepkov.org 21/21 Это не очевидно, особенно из опыта небольших проектов