use oop for domain ontology wiad-2017

21
От монолитных моделей предметной области – к модульным Максим Цепков Архитектор и бизнес-аналитик CUSTIS Санкт-Петербург, 18 февраля 2017 World Information Architecture Day

Upload: maxim-tsepkov

Post on 16-Apr-2017

31 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Use OOP for domain ontology WIAD-2017

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

Максим ЦепковАрхитектор и бизнес-аналитик CUSTIS

Санкт-Петербург, 18 февраля 2017 World Information Architecture Day

Page 2: Use OOP for domain ontology WIAD-2017

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

Шина

Поставки Каталог товаров Продажи

Склад Финансы

2/21

Бизнес-слой

Слой приложений Модульный

IT-ландшафт

Единая модель

Page 3: Use OOP for domain ontology WIAD-2017

Это основано на убеждении, что существует непротиворечивая и целостная картина мира, которую мы можем не знать, но выясняем

?

3/21

Page 4: Use OOP for domain ontology WIAD-2017

Может быть, в мире идеальных объектов Платона и Декарта так и есть, но на практике целостная картина оказывается слишком жесткой

4/21

Купля-продажа

Page 5: Use OOP for domain ontology WIAD-2017

Разрабатывая Domain Driven Design, Эрик Эванс осознал эту проблему и предложил решение*

О нем я расскажу

* Эрик Эванс. DDD. Часть IV «Стратегическое проектирование»

5/21

Page 6: Use OOP for domain ontology WIAD-2017

Решение – ограниченный контекст

6/21

Page 7: Use OOP for domain ontology WIAD-2017

Предметную область следует разделить на ограниченные контексты (bounded context)

Целостность удерживается за счет карты этих контекстов (context map)

Имена (понятия) включаются в единый язык Для изоляции контекстов применяем те же подходы

ООП, что и для разработки софта Для работы с похожими контекстами тоже применяем

подходы ООП

Как работать с контекстами?

7/21

Page 8: Use OOP for domain ontology WIAD-2017

Шаблоны работы с контекстами

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

Единый язык Ubiquitous language

Заказчик и поставщикCustomer-Supplier teams

КонформистConformist

Служба с открытым протоколом

Open host service

Общедоступный язык Published language

Отдельное существование Separate ways

Предохранительный уровень

Anticorruption layer8/21

Общее ядро Shared kernelОграниченный

контекст Bounded context

Page 9: Use OOP for domain ontology WIAD-2017

Кейс 1. Товарные документы в торговле

Я не буду пересказывать книгу. Я расскажу кейсы из своего опыта

9/21

Page 10: Use OOP for domain ontology WIAD-2017

Счет-фактура

Накладная

Счет

Заказ

Документы в оптовых продажах

Намерения о сделке согласуем с покупателем

В случае продажи по предоплате

По факту отгрузки

Для учета НДС (наполнение – как в накладной)

Основной документ – накладная, она фиксирует факт сделки и сумму за отгрузку

10/21

Компания Покупатель

Page 11: Use OOP for domain ontology WIAD-2017

Документы в закупках

Основным документом стал Invoice: мы его оплачиваем и ожидаем товар, принимая на него заказы

11/21

Счет-фактура

Приходная накладная

Invoice

Заказ

КомпанияПоставщик

В закупках – похоже, но есть нюансы

Что принял наш склад

Для учета НДС (приходит с товаром)

Что мы хотели купить

Что поставщик обещал прислать

Page 12: Use OOP for domain ontology WIAD-2017

Сделка одинакова: купля-продажа Но компания занимает разные позиции в сделке Восприятие всегда зависит от позиции

Почему так по-разному?

И не стоит объединять поставки и продажи в один контекст на основе типа сделки

12/21

Page 13: Use OOP for domain ontology WIAD-2017

Контексты товарных документов

ПродажиПоставки

Бухгалтерия

Склад

Язык торговых сделок

Бухгалтерия интерпретирует

сделки по-своему

Поставки и продажи почти независимы

Склад сам фиксирует ответственность за товар

Общий язык, он объединяет все контексты

13/21

Page 14: Use OOP for domain ontology WIAD-2017

Опирайтесь на структуру деятельности компании, делите ее на связанные области

Согласуйте понятийные интерфейсы для коммуникации на границах областей

Используйте язык сделок из общей и отраслевой культуры

Учитывайте позицию компании в сделке Соотносите внутренний язык компании

с языком, принятым в культуре

Выводы: как разделить контексты операционных документов?

14/21

Page 15: Use OOP for domain ontology WIAD-2017

В понятийном аппарате всегда отпечатаны текущие информационные системы

Нормированные области и системы диктуют взаимодействие другим – шаблон конформист

Если предполагается замена системы, то изменится и язык, подготовьтесь к этому: Используйте язык из культуры отрасли, а не старые шаблоны

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

Зависимость контекстов не должна мешать независимому развитию областей бизнеса

Выводы: как определить взаимодействие контекстов?

15/21

Page 16: Use OOP for domain ontology WIAD-2017

Кейс 2.Каталог товаров в торговле

Казалось бы, очевидно: товары с атрибутами, поделенные на группы иерархическим классификатором

16/21

Page 17: Use OOP for domain ontology WIAD-2017

Одна классификация – удобно, но чью точку зрения брать за основу? Закупающих товар (разделение по группам производства)? Менеджеров по оптовым продажам (разделение по группам клиентов)? Тех, кто размещает товар в магазине (разделение по тематике

размещения)? Продавцов (разделение по комплементарным товарам)? Покупателей интернет-магазина (разделение по рекламному

представлению)?

На 80–90% группы совпадают, но не на 100% Лыжные перчатки – с перчатками или горными лыжами? Мелочь, которая продается у касс, – где она в каталоге? А услуги и промо-комплекты – где они в каталоге? Еще не купленные товары поставщиков в каталоге есть?

Как классифицировать товары?

17/21

Page 18: Use OOP for domain ontology WIAD-2017

Таможенные декларации

Контексты каталога

Классификация и атрибуты

для закупающих

Классификация и атрибуты

для размещения в магазинеАтрибуты

для логистов

Классификация и атрибуты

для интернет-магазина

Описания для сервисного

центра

Общее ядро каталога товаров

18/21

Page 19: Use OOP for domain ontology WIAD-2017

Разные взгляды на справочники реализуются через атрибуты, например: Договорились, что товарная группа – для каталога

продаж, а категория товара – для закупающих Группе клиента соответствует подразделение, ведущее

продажи, а категории клиента – правило оплат

Но часто этого не хватает, и тогда люди ведут собственные Excel с классификацией

Есть ли контексты у справочников в системах вендоров?

И теперь вы будете понимать, почему это происходит

19/21

Page 20: Use OOP for domain ontology WIAD-2017

Области ограниченных контекстов совпадают – они объединяют людей

Как правило, в каждой области – свои документы, есть интерфейсы передачи

Справочники – общие, но у каждого свой взгляд на их наполнение

Поэтому применяются разные шаблоны для взаимодействия контекстов

Контексты справочников и документов: сходства и различия

20/21

Page 21: Use OOP for domain ontology WIAD-2017

Множество контекстов – фича, а не баг Единая целостная модель –

непрактичный миф прошлого Модель мира зависит от позиции,

контексты – адресные

Работаем с контекстами на практике Предметную область делим на ограниченные контексты

(bounded context) Целостность держит карта контекстов (context map)

и единый язык (ubiquitous language)

Подводя итоги

Есть вопросы? Обращайтесь!Максим Цепков mtsepkov.org

21/21

Это не очевидно, особенно из опыта небольших проектов