SlideShare une entreprise Scribd logo
1  sur  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
Это не очевидно,
особенно из опыта
небольших проектов

Contenu connexe

Similaire à Use OOP for domain ontology WIAD-2017

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
 

Similaire à Use OOP for domain ontology WIAD-2017 (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
 
Сотрудничество с корпорациями: рецепты из практики
Сотрудничество с корпорациями: рецепты из практикиСотрудничество с корпорациями: рецепты из практики
Сотрудничество с корпорациями: рецепты из практики
 
Опыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурамиОпыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурами
 

Plus de Maxim Tsepkov

From Agile to Teal Organization PRyug-2017
From Agile to Teal Organization PRyug-2017From Agile to Teal Organization PRyug-2017
From Agile to Teal Organization PRyug-2017Maxim Tsepkov
 
Самоопределяйся технологично!
Самоопределяйся технологично!Самоопределяйся технологично!
Самоопределяйся технологично!Maxim Tsepkov
 
Agile and the Third Wave (IT Spring 2017)
Agile and the Third Wave (IT Spring 2017)Agile and the Third Wave (IT Spring 2017)
Agile and the Third Wave (IT Spring 2017)Maxim Tsepkov
 
Accounting diagram - Tsepkov EconConf-2017
Accounting diagram - Tsepkov EconConf-2017Accounting diagram - Tsepkov EconConf-2017
Accounting diagram - Tsepkov EconConf-2017Maxim Tsepkov
 
Choose method for requirements Tsepkov Analyst Days-2017
Choose method for requirements Tsepkov Analyst Days-2017Choose method for requirements Tsepkov Analyst Days-2017
Choose method for requirements Tsepkov Analyst Days-2017Maxim Tsepkov
 
Agile - ответ на вызовы третьей промышленной революции - цепков custis
Agile - ответ на вызовы третьей промышленной революции - цепков custisAgile - ответ на вызовы третьей промышленной революции - цепков custis
Agile - ответ на вызовы третьей промышленной революции - цепков custisMaxim Tsepkov
 
Agile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектахAgile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектахMaxim Tsepkov
 
Как понять, подходит ли Agile вашей компании
Как понять, подходит ли Agile вашей компанииКак понять, подходит ли Agile вашей компании
Как понять, подходит ли Agile вашей компанииMaxim Tsepkov
 
Ответственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектахОтветственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектахMaxim Tsepkov
 
Process and Case Management together (SECR-2016)
Process and Case Management together (SECR-2016)Process and Case Management together (SECR-2016)
Process and Case Management together (SECR-2016)Maxim Tsepkov
 
Эволюция организаций и эволюция сотрудника – как изменяется понятие о прави...
Эволюция организаций и эволюция сотрудника – как изменяется понятие о прави...Эволюция организаций и эволюция сотрудника – как изменяется понятие о прави...
Эволюция организаций и эволюция сотрудника – как изменяется понятие о прави...Maxim Tsepkov
 
Process and Case Management together
Process and Case Management togetherProcess and Case Management together
Process and Case Management togetherMaxim Tsepkov
 
Taxonomy vs folksonomy Tsepkov Analyst Days 2016
Taxonomy vs folksonomy Tsepkov Analyst Days 2016Taxonomy vs folksonomy Tsepkov Analyst Days 2016
Taxonomy vs folksonomy Tsepkov Analyst Days 2016Maxim Tsepkov
 
Agile то что на самом деле нужно госзаказчикам - Максим Цепков на AgileDays-2016
Agile то что на самом деле нужно госзаказчикам - Максим Цепков на AgileDays-2016Agile то что на самом деле нужно госзаказчикам - Максим Цепков на AgileDays-2016
Agile то что на самом деле нужно госзаказчикам - Максим Цепков на AgileDays-2016Maxim Tsepkov
 
действуй опираясь на ценности а не просто применяй инструменты максим цепков
действуй опираясь на ценности а не просто применяй инструменты максим цепковдействуй опираясь на ценности а не просто применяй инструменты максим цепков
действуй опираясь на ценности а не просто применяй инструменты максим цепковMaxim Tsepkov
 
Responsibilities in software development tsepkov analyst days 2015
Responsibilities in software development tsepkov analyst days 2015Responsibilities in software development tsepkov analyst days 2015
Responsibilities in software development tsepkov analyst days 2015Maxim Tsepkov
 
Big picture of it project managerment Tsepkov AgileDays 2015
Big picture of it project managerment Tsepkov AgileDays 2015Big picture of it project managerment Tsepkov AgileDays 2015
Big picture of it project managerment Tsepkov AgileDays 2015Maxim Tsepkov
 
Spiral dynamics in use tsepkov sqadays-16
Spiral dynamics in use tsepkov sqadays-16Spiral dynamics in use tsepkov sqadays-16
Spiral dynamics in use tsepkov sqadays-16Maxim Tsepkov
 
Ddd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkovDdd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkovMaxim Tsepkov
 
Roles happy dev-2013-tsepkov
Roles happy dev-2013-tsepkovRoles happy dev-2013-tsepkov
Roles happy dev-2013-tsepkovMaxim Tsepkov
 

Plus de Maxim Tsepkov (20)

From Agile to Teal Organization PRyug-2017
From Agile to Teal Organization PRyug-2017From Agile to Teal Organization PRyug-2017
From Agile to Teal Organization PRyug-2017
 
Самоопределяйся технологично!
Самоопределяйся технологично!Самоопределяйся технологично!
Самоопределяйся технологично!
 
Agile and the Third Wave (IT Spring 2017)
Agile and the Third Wave (IT Spring 2017)Agile and the Third Wave (IT Spring 2017)
Agile and the Third Wave (IT Spring 2017)
 
Accounting diagram - Tsepkov EconConf-2017
Accounting diagram - Tsepkov EconConf-2017Accounting diagram - Tsepkov EconConf-2017
Accounting diagram - Tsepkov EconConf-2017
 
Choose method for requirements Tsepkov Analyst Days-2017
Choose method for requirements Tsepkov Analyst Days-2017Choose method for requirements Tsepkov Analyst Days-2017
Choose method for requirements Tsepkov Analyst Days-2017
 
Agile - ответ на вызовы третьей промышленной революции - цепков custis
Agile - ответ на вызовы третьей промышленной революции - цепков custisAgile - ответ на вызовы третьей промышленной революции - цепков custis
Agile - ответ на вызовы третьей промышленной революции - цепков custis
 
Agile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектахAgile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектах
 
Как понять, подходит ли Agile вашей компании
Как понять, подходит ли Agile вашей компанииКак понять, подходит ли Agile вашей компании
Как понять, подходит ли Agile вашей компании
 
Ответственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектахОтветственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектах
 
Process and Case Management together (SECR-2016)
Process and Case Management together (SECR-2016)Process and Case Management together (SECR-2016)
Process and Case Management together (SECR-2016)
 
Эволюция организаций и эволюция сотрудника – как изменяется понятие о прави...
Эволюция организаций и эволюция сотрудника – как изменяется понятие о прави...Эволюция организаций и эволюция сотрудника – как изменяется понятие о прави...
Эволюция организаций и эволюция сотрудника – как изменяется понятие о прави...
 
Process and Case Management together
Process and Case Management togetherProcess and Case Management together
Process and Case Management together
 
Taxonomy vs folksonomy Tsepkov Analyst Days 2016
Taxonomy vs folksonomy Tsepkov Analyst Days 2016Taxonomy vs folksonomy Tsepkov Analyst Days 2016
Taxonomy vs folksonomy Tsepkov Analyst Days 2016
 
Agile то что на самом деле нужно госзаказчикам - Максим Цепков на AgileDays-2016
Agile то что на самом деле нужно госзаказчикам - Максим Цепков на AgileDays-2016Agile то что на самом деле нужно госзаказчикам - Максим Цепков на AgileDays-2016
Agile то что на самом деле нужно госзаказчикам - Максим Цепков на AgileDays-2016
 
действуй опираясь на ценности а не просто применяй инструменты максим цепков
действуй опираясь на ценности а не просто применяй инструменты максим цепковдействуй опираясь на ценности а не просто применяй инструменты максим цепков
действуй опираясь на ценности а не просто применяй инструменты максим цепков
 
Responsibilities in software development tsepkov analyst days 2015
Responsibilities in software development tsepkov analyst days 2015Responsibilities in software development tsepkov analyst days 2015
Responsibilities in software development tsepkov analyst days 2015
 
Big picture of it project managerment Tsepkov AgileDays 2015
Big picture of it project managerment Tsepkov AgileDays 2015Big picture of it project managerment Tsepkov AgileDays 2015
Big picture of it project managerment Tsepkov AgileDays 2015
 
Spiral dynamics in use tsepkov sqadays-16
Spiral dynamics in use tsepkov sqadays-16Spiral dynamics in use tsepkov sqadays-16
Spiral dynamics in use tsepkov sqadays-16
 
Ddd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkovDdd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkov
 
Roles happy dev-2013-tsepkov
Roles happy dev-2013-tsepkovRoles happy dev-2013-tsepkov
Roles happy dev-2013-tsepkov
 

Use OOP for domain ontology WIAD-2017

  • 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 Это не очевидно, особенно из опыта небольших проектов