SlideShare a Scribd company logo
1 of 64
Domain-Driven Design:
Модель вместо требований
Максим Цепков
Главный архитектор дирекции развития решений
Москва, 24 мая 2014 года
 Есть разные способы работы с требованиями
 Выбор конкретного зависит от проекта
 В сложных проектах уместна работа
с моделями
 И DDD – наиболее эффективный способ
для этого
О чем этот доклад?
DDD – ключ к построению сложных систем
и их развитию вслед за потребностями
бизнеса
2/64
 Теория
 Кто и что проектирует – области и роли
 DDD – единый язык проекта и одна модель системы
 Модели были давно, но две: бизнес-области и системы
 Единый язык проекта создает общее поле понятий
 И позволяет работать с одной общей моделью
 Но в большом проекте следует выделять контексты
 Практика
 Единый язык в конкретных примерах
 DDD в корпоративных приложениях
 Заключение
Что будет в докладе?
3/64
Начнем с теории
4/64
А что такое требования? Essence (OMG, SEMAT)
Kernel Alphas
5/64
Разработчик
Аналитик
Приложение
Что мы проектируем?
Интерфейс
Бизнес-слой
Хранение
Рассмотрим на стандартной
3-уровневой схеме приложения
разделение ответственности
6/64
Проектирование от внешних требований
Интерфейс
Бизнес-слой
Хранение
Остальное проектирует
разработчик, создавая код
Требования
к пользовательскому
интерфейсу
Требования
к межсистемной интеграции
Аналитик не всегда
представляет значимость
этого «остального»,
но именно оно сшивает
систему в единое целое
7/64
Интерфейс
Бизнес-слой
Хранение
Проектирование от данных
Остальное проектирует
разработчик, создавая код
Представление данных
в интерфейсе
Модель хранимых данных,
обычно – ER-диаграмма
Межсистемная
интеграция
8/64
Интерфейс
Бизнес-слой
Хранение
Проектирование по модели
Разработчик «лишь реализовывает»
и возникают проблемы: насколько
модель хороша для реализации
Представление данных
в интерфейсе
Модель
предметной области
Межсистемная
интеграция
9/64
 Концептуальная книга Эрика Эванса
 на английском – в 2003 г.
 на русском – только в 2010 г.
DDD: как оно начиналось
 Практическая книга Джимми Нильссона
 на английском – в 2006 г.
 на русском – в 2007 г. (почти сразу!)
10/64
Основная идея DDD
Бизнес-
модель
Бизнес-
аналитик
Модель
приложения
Код
Системный
аналитик,
архитектор
Разработчик
Заказчик
Модель на едином языке Код
Аналитики и архитектор
Разработчик
РАНЬШЕ
DDD
Заказчик
11/64
 Построен на основе терминов предметной
области
 Его понимают ИТ-специалисты и эксперты
бизнеса
 На нем описана модель ИТ-системы и ее
место в бизнес-процессах
Единый язык (ubiquitous language)
Понятия единого языка:
клиент, накладная, платеж, долг –
из предметной области
12/64
 Парадигма моделирования определяет
 Элементы языка
 Способ их соединения в сложные конструкции
 Визуальный образ для представления
 Способ отражения модели в код
А где здесь ООП?
ООП –
это парадигма
моделирования
Объекты
с атрибутами
и методами
Диаграмма классов
и другие UML-диаграммы
Типы, соответствующие
бизнес-объектам
Я сосредоточусь на разработке модели,
а не на ее реализации
13/64
Модель системы не соответствует представлению
бизнеса о ее месте в модели предприятия
Зачем нужен единый язык?
Модель предприятия
Представление
о месте
ИТ-системы
Модель
ИТ-системы
«Не то чтобы совсем не попал,
но только не попал в шарик…»
14/64
Единый язык позволяет совместить модель
системы с представлениями бизнеса о ее месте
Итерационное развитие модели
ИТ-система
Модель
ИТ-системы
Место ИТ
в бизнес-процессе
Управляющее воздействие
на модель
Итерация
15/64
 Аналитик собирает требования и строит модель:
сначала – предметной области, затем – системы
 Артефакты модели описывают и систему,
и ее использование в бизнес-процессах
предприятия
 Разработчик реализует модель
 Артефакты модели можно проследить в коде
Единая модель
Модель предметной области
становится моделью системы
16/64
 Верификация постановок бизнес-специалистами
 Общее понимание требований на стороне бизнеса
 Обсуждение модели бизнесом и IT, поиск баланса
в сложных решениях
 Перенос моделей из других предметных областей
 Бизнес представляет потенциальные возможности
системы и сложность различных доработок
 На этапе эксплуатации – эффективное общение
бизнес-пользователей и IT без квалифицированных
переводчиков-аналитиков
Плюсы единой модели
17/64
Границы единого языка
Устаревшая системаНовая система
Бизнес-область
проектируемого
приложения
Единый
язык
Единый язык должен быть шире области приложения,
но не обязан охватывать всю предметную область.
И на нем описывается интеграция
18/64
Контексты и их карта
Устаревшая системаНовая система
Бизнес-область
проектируемого
приложения
Единый
язык
Контекст 1
Контекст 2 Контекст
интеграции со
старой системой
Область приложения может быть
разделена на несколько слабо
зависимых контекстов.
Об их сопряжении – позднее
Контексты интеграции
выделяются, если
сопряженные системы
имеют другой язык
19/64
Единый язык и слои приложения
Приложение
Интерфейс работает с объектами
предметной области. Язык
расширяется понятиями
конструирования интерфейса –
экраны, таблицы, кнопки…
Единый язык ориентирован
на описание модели для бизнес-
слоя, его объекты отражаются
в реализации
При описании интеграции
и хранения в единый язык
добавляются понятия описания
потоков данных, транзакций
и другого межсистемного
взаимодействия
Хранение
Бизнес-слой
Интерфейс
20/64
Пример:
Виза на документы
21/64
 В процессе обработки документа (сделки,
договора, контракта) обеспечить проверку
и одобрение определенными сотрудниками
или отделами
Задача
Задача касается
конкретного документа
22/64
Выбор проектного решения
Каждая виза – со своим
жизненным циклом
Существует несколько
типовых шаблонов
23/64
 Шаблоны обладают разной гибкостью и сложностью
 Для выбора нужно понимать требуемый баланс
гибкости и сложности решения
Традиционный подход
 На этапе сбора требований аналитики
формулируют задачу для конкретного документа
 Исходя из этого в системе проектируется решение
 Выбранное решение отражает текущую ситуацию
В чем проблема?
Решение надо принимать с учетом
потенциального изменения бизнес-процессов
24/64
 Проверка сделки казначейством и отделом
рисков – не получается выполнять
параллельно
 Юристы отозвали одобрение кредита,
а служба безопасности на него опиралась –
связи между визами не контролируются
системой
 Настройку виз для одобрения договоров
с недвижимостью передали в IT из-за
сложности
Примеры
25/64
 Представляем шаблоны, описанные
применительно к конкретному документу,
показываем разницу
 Бизнес-специалисты оценивают
потенциальную потребность в реализации
бизнес-процессов
 Решение принимается с учетом
перспективы
Решение в рамках DDD
26/64
 Для решения модель надо описать
понятно бизнесу
 Можно описать обобщенные решения для документов,
«состояния» и «визы», и на них ссылаться
 Можно описывать каждый случай отдельно
 Термины должны быть понятны заказчику
 Например, «визированием» могут считать одобрение
документа, требующее только просмотра, а если
требуется дополнительная работа, то это называется
«обработкой» или «проверкой»
 Общий шаблон надо «перевести»
на язык проекта
В чем единый язык?
27/64
 Мы используем известные шаблоны решений
 Заказчик оценивает вариант решения
не только с точки зрения текущих
потребностей, но и из предположений
о развитии бизнес-процессов
 Проектируя изменения бизнес-процессов,
заказчик представляет потенциал гибкости
системы и принимает решения с учетом этого
Результат
28/64
Вопрос: Как обеспечить легкое развитие системы при
изменениях правил проверки и одобрения документа?
Ответ: Для этого нужны точки расширения.
 Стратегии – именованные алгоритмы обработки,
включаемые в определенных точках
 Проверки или обработка при переходе в состояние
 Алгоритм определения состояния документа по визам
 Стратегии дополняем спецификациями –
декларативными описаниями условий, применяемых
для выбора стратегий по параметрам документа
 Декларативное описание графа перехода документа
и набора виз, связанных с переходами
Точки расширения
29/64
DDD
для корпоративных приложений
Часть 1. Общая схема
30/64
 Пользователи создают документы
 По необходимости заполняют справочники
 Потом документы исполняют
 При этом меняются учетные данные
 Которые влияют на исполнение
документов
 И отражаются в отчетах
Типичное корпоративное приложение
Жизненный цикл документа
31/64
Объектная модель
Учет –
не объектная модель
Одна модель или несколько?
Связь
Учетные
показателиДокументы
Если учет существенно влияет
на исполнение документов,
то необходима единая модель
А то при документах
появляется свой
«маленький учет»
32/64
Модель документооборота
(поведение документов)
Учетная модель
(учетные показатели)
Информационная
модель
(структура документов)
Три проекции модели системы
33/64
Информационная
модель
(структура документов)
Модель документооборота
(поведение документов)
Учетная модель
(учетные показатели)
Документы
и справочники –
диаграмма классов
Учет –
диаграммы учета
Документооборот –
диаграмма состояний
Диаграммы для проекций
34/64
Диаграммы для проекций
35/64
DDD
для корпоративных приложений
Часть 2. Учетная модель
36/64
Сложность объектного представления учета:
 Нет идентификации единичного объекта
 Работа идет с показателями, текущее значение
которых меняется
 Изменение числового значения может менять
состояние с точки зрения принятия бизнес-
решения
 Часто интерес представляют агрегаты,
а не отдельные значения
Учетная модель – не объектная
Представление учета оказалось за рамками
UML. Для него не придумано эффективного
представления
37/64
 Для представления учетной модели
мы придумали диаграммы учета
 Они показывают элементы учета
 Какие есть синтетические счета и их аналитику
 Как проводки перемещают ресурсы по синтетическим
счетам
 С какими событиями связано исполнение проводок
Статья «Диаграммы учета:
мост между бухгалтером и разработчиком»
(журнал «Бухгалтер и компьютер», №5-2011)
Учетная модель
38/64
Диаграммы учета
Показывают, как
отражается движение
ресурсов в учете
39/64
Бухгалтеры могут применять диаграммы
учета для разработки учетной политики.
Диаграммы учета для бизнеса
Они нагляднее,
чем Excel
40/64
DDD
для корпоративных приложений
Часть 3. Документооборот
41/64
 Объекты с атрибутами и методами –
элементы единого языка для предметной
области и способ их соединения в сложные
конструкции
 Для отражения документооборота
используем состояние документа
 Диаграмма классов и диаграмма состояний
UML – визуальный образ для наглядного
представления
 Объекты в программе – способ отражения
модели в реализацию
Хорошо работает объектная модель
42/64
Классы соответствуют бизнес-объектам –
заказчик видит знакомые названия
Модель должен понимать заказчик
Представляем
диаграммой
классов
Используем цветовые
выделения
43/64
 Не нужно
 Стараться изобразить
все классы на одной диаграмме
 Отображать
вспомогательные атрибуты
 Использовать
технические коды
 Использовать
сложную нотацию
 Диаграммы должны
понимать заказчики,
а не только разработчики
Не нужно усложнять диаграмму
44/64
 Документу приписываем состояние,
оно определяет этап жизненного
цикла
 Какие действия можно совершать и кому
 Кто отвечает за обработку документа
 Возможные изменения состояний
документа образуют граф переходов –
State machine diagram
Модель документооборота
UML
Язык ООП «с расширениями».
Названия состояний и переходов –
на языке бизнеса
45/64
Наглядно представляет
сложный документооборот
46/64
 Сочетание декларативного и императивного
 Типизация документов, графы при наследовании
 Если граф переходов настраивается – надо уметь
подхватывать настройки в интерфейсе и логике
 Если в любом случае требуется кодирование –
в чем будет выгода от настроек?
 Развитие правил обработки на переходе
 В коде через наследование объектов
 Через стратегии в точках расширения
 Через декларативное описание правил выбора стратегий
 Настройка прав доступа
Точки расширения в логике переходов
47/64
DDD
для корпоративных приложений
Часть 4. Разделение контекстов
48/64
Контексты в единой модели
Связь
Учетные
показателиДокументы
Документы
Справочники
Показатели
Отчеты
Счета
Проводки
Контекст
документооборота
Контекст учета
49/64
 Розничный магазин
 Продажи и Склад магазина
 Продажи, Склад магазина, Заказы товара
 Торговая компания
 Закупки и Продажи
 Закупки, Продажи и Склад
 Оптовые продажи
 Заказы и Отгрузки
 Заказы, Отгрузки, Оплаты
Вертикальная декомпозиция
50/64
Вертикальная декомпозиция
Подсистема 1
Документы
и справочники 1
Подсистема 2
Учет 1
Отчеты
и показатели
Документы
и справочники 2
Учет 2
Отчеты
и показатели
Общие
справочники
Общий учет
Отчеты
и показатели
51/64
 Примеры
 Магазин: со складом и без склада, продажа с заказом
 Логистика и склад: много систем с заказами товара
 Банк: Главная книга и много систем по банковским
продуктам
 Подходы
 Смысловое ядро
 Общее ядро
 Абстрактное ядро
 Подключаемые компоненты
 Крупноблочная структура
 Уровни разделения обязанностей
Сопряжение контекстов
52/64
Еще пример:
Долг клиента
53/64
Ведение взаиморасчетов с клиентами
по продажам
 Обеспечивающее ведение управленческих
лимитов
 И отражение расчетов в бухгалтерию
Задача
54/64
 Менеджеры по продажам: долг –
основа для управленческих решений.
Увеличивается, как только приняли
решение об отгрузке, уменьшается,
когда признали претензию
 Бухгалтеры: долг – в соответствии с ПБУ,
с учетом оформления документов
и прохождения процедур
 Следствие: управленческий и бухгалтерский
долг имеют систематические различия
Проблема:
Смешение языков на бизнес-уровне
55/64
Процесс отгрузки товара
56/64
 Контроль правильности учета запаздывает
 Менеджеров не получается контролировать
через бухгалтерию
 Имеются две разные суммы долга,
что затрудняет принятие управленческих
решений
 Для сверки с клиентом и решения проблем
менеджеры должны вникать в ПБУ
Проблемы двух пониманий долга
57/64
 Вырабатываем единый язык, описывающий долг
в терминах, понятных менеджерам и бухгалтерам
 Строим модель, которая показывает управленческий
и бухгалтерский долг и их различие
 Ситуации, в которых долг различается, описываем
на едином языке, согласуем со специалистами
 Вырабатываем требования по контролю различий,
а также по устранению несущественных различий
 Результат – общий взгляд у бизнес-специалистов
на предметную область, описанный в модели,
которая реализуется разработчиками
Решение от DDD
58/64
Модель долга клиента
Этого долга нет
у бухгалтеров
Этих платежей нет
у менеджеров
Овалы – счета
стрелки – проводки
«Общее» понимание долга
Сверку с клиентом
успешно выполняют
менеджеры
59/64
 Согласовано понимание предметной
области у различных бизнес-специалистов
 Реализована модель, отвечающая
интересам всех заинтересованных сторон
проекта
Результат
60/64
Заключение
61/64
 Ограниченные контексты и их изоляция
 Способы выделения общего в контекстах
 Стратегии и Политики
 Выделение общих объектов
 Абстракция через интерфейсы
Практики проектирования
применяем для бизнес-анализа
Технические практики наполняются бизнес-
смыслом и служат для общения с заказчиком
62/64
 Единый язык + Единая модель:
 Дают надежную основу для общения всех
участников проекта при принятии решений
 Успешно заменяют мелкую россыпь требований
 Позволяют эффективно развивать сложную
систему
 Это требует дополнительных усилий:
 Формирование единого языка
 Понимание разработчиками предметной области
 По опыту, результат окупает усилия
Что же достигает DDD?
63/64
Спасибо!
Вопросы?
Максим Цепков
maks@custis.ru
www.facebook.com/mtsepkov
64/64

More Related Content

What's hot

Erp & e business
Erp & e businessErp & e business
Erp & e businessSreeji Lal
 
Application of MIS in manufacturing sector
Application of MIS in manufacturing sectorApplication of MIS in manufacturing sector
Application of MIS in manufacturing sectorArpan Mahato
 
Management Information System
Management Information SystemManagement Information System
Management Information SystemZeinul Haleem
 
A tailored enterprise architecture maturity model
A tailored enterprise architecture maturity modelA tailored enterprise architecture maturity model
A tailored enterprise architecture maturity modelPaul Sullivan
 
ERP modules and business software package
ERP modules and business software packageERP modules and business software package
ERP modules and business software packageUsman Tariq
 
Aligning business and tech thru capabilities - A capstera thought paper
Aligning business and tech thru capabilities  - A capstera thought paperAligning business and tech thru capabilities  - A capstera thought paper
Aligning business and tech thru capabilities - A capstera thought paperSatyaIluri
 
Office Automation Final
Office Automation FinalOffice Automation Final
Office Automation Finalmakhtar79
 
Transaction processing system
Transaction processing systemTransaction processing system
Transaction processing systemAyisha Kowsar
 
Solutions Manual for Enterprise Systems For Management 2nd Edition by Motiwalla
Solutions Manual for Enterprise Systems For Management 2nd Edition by MotiwallaSolutions Manual for Enterprise Systems For Management 2nd Edition by Motiwalla
Solutions Manual for Enterprise Systems For Management 2nd Edition by MotiwallaWoodHera
 
Erp implementation approaches.
Erp implementation approaches.Erp implementation approaches.
Erp implementation approaches.Bondrulz Ubale
 
Enterprise Architecture Frameworks
Enterprise Architecture FrameworksEnterprise Architecture Frameworks
Enterprise Architecture FrameworksStephen Lahanas
 
ERP Module Finance
ERP Module FinanceERP Module Finance
ERP Module FinanceAshok Sinch
 
US DOC ACMM Wallchart
US DOC ACMM WallchartUS DOC ACMM Wallchart
US DOC ACMM WallchartPaul Sullivan
 
Decision Support System
Decision Support SystemDecision Support System
Decision Support SystemAwais Alam
 
Introduction to ERP & Microsoft Dynamics AX overview
Introduction to ERP & Microsoft Dynamics AX overviewIntroduction to ERP & Microsoft Dynamics AX overview
Introduction to ERP & Microsoft Dynamics AX overviewSaptha Wanniarachchi
 

What's hot (20)

EA maturity models
EA maturity modelsEA maturity models
EA maturity models
 
Erp & e business
Erp & e businessErp & e business
Erp & e business
 
Application of MIS in manufacturing sector
Application of MIS in manufacturing sectorApplication of MIS in manufacturing sector
Application of MIS in manufacturing sector
 
Management Information System
Management Information SystemManagement Information System
Management Information System
 
A tailored enterprise architecture maturity model
A tailored enterprise architecture maturity modelA tailored enterprise architecture maturity model
A tailored enterprise architecture maturity model
 
MAPPING TOGAF® ADM AND AGILE APPROACH
MAPPING TOGAF® ADM AND AGILE APPROACHMAPPING TOGAF® ADM AND AGILE APPROACH
MAPPING TOGAF® ADM AND AGILE APPROACH
 
ERP modules and business software package
ERP modules and business software packageERP modules and business software package
ERP modules and business software package
 
Aligning business and tech thru capabilities - A capstera thought paper
Aligning business and tech thru capabilities  - A capstera thought paperAligning business and tech thru capabilities  - A capstera thought paper
Aligning business and tech thru capabilities - A capstera thought paper
 
Office Automation Final
Office Automation FinalOffice Automation Final
Office Automation Final
 
Transaction processing system
Transaction processing systemTransaction processing system
Transaction processing system
 
Solutions Manual for Enterprise Systems For Management 2nd Edition by Motiwalla
Solutions Manual for Enterprise Systems For Management 2nd Edition by MotiwallaSolutions Manual for Enterprise Systems For Management 2nd Edition by Motiwalla
Solutions Manual for Enterprise Systems For Management 2nd Edition by Motiwalla
 
Erp implementation approaches.
Erp implementation approaches.Erp implementation approaches.
Erp implementation approaches.
 
Enterprise Architecture Frameworks
Enterprise Architecture FrameworksEnterprise Architecture Frameworks
Enterprise Architecture Frameworks
 
ERP Module Finance
ERP Module FinanceERP Module Finance
ERP Module Finance
 
Balance score card
Balance score cardBalance score card
Balance score card
 
US DOC ACMM Wallchart
US DOC ACMM WallchartUS DOC ACMM Wallchart
US DOC ACMM Wallchart
 
Decision Support System
Decision Support SystemDecision Support System
Decision Support System
 
Introduction to ERP & Microsoft Dynamics AX overview
Introduction to ERP & Microsoft Dynamics AX overviewIntroduction to ERP & Microsoft Dynamics AX overview
Introduction to ERP & Microsoft Dynamics AX overview
 
Criteria For EA Tool Selection
Criteria For EA Tool SelectionCriteria For EA Tool Selection
Criteria For EA Tool Selection
 
SAP integration best practices and tools
SAP integration best practices and toolsSAP integration best practices and tools
SAP integration best practices and tools
 

Viewers also liked

Domain Driven Design - как, почему и зачем?
Domain Driven Design - как, почему и зачем?Domain Driven Design - как, почему и зачем?
Domain Driven Design - как, почему и зачем?ngrebnev
 
Применение DDD подхода в Symfony 2 приложении
Применение DDD подхода в Symfony 2 приложенииПрименение DDD подхода в Symfony 2 приложении
Применение DDD подхода в Symfony 2 приложенииАнтон Шабовта
 
О usability водопроводных кранов
О usability водопроводных крановО usability водопроводных кранов
О usability водопроводных крановAndrey Bibichev
 
DDD — эффективный способ работы в условиях системной сложности
DDD — эффективный способ работы в условиях системной сложностиDDD — эффективный способ работы в условиях системной сложности
DDD — эффективный способ работы в условиях системной сложностиCUSTIS
 
Anemic Domain Model - антипаттерн или SOLID?
Anemic Domain Model - антипаттерн или SOLID?Anemic Domain Model - антипаттерн или SOLID?
Anemic Domain Model - антипаттерн или SOLID?GoSharp
 
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2Oleg Poludnenko
 
DDD on example of Symfony (SfCampUA14)
DDD on example of Symfony (SfCampUA14)DDD on example of Symfony (SfCampUA14)
DDD on example of Symfony (SfCampUA14)Oleg Zinchenko
 
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!Kacper Gunia
 
DDD Modeling Workshop
DDD Modeling WorkshopDDD Modeling Workshop
DDD Modeling WorkshopDennis Traub
 
DDD — правильный курс в потоке изменений требований
DDD — правильный курс в потоке изменений требованийDDD — правильный курс в потоке изменений требований
DDD — правильный курс в потоке изменений требованийSQALab
 
Прыжок веры. От настоящего к будущему
Прыжок веры. От настоящего к будущемуПрыжок веры. От настоящего к будущему
Прыжок веры. От настоящего к будущемуSQALab
 
Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)Tom Kocjan
 
Implementing DDD Concepts in PHP
Implementing DDD Concepts in PHPImplementing DDD Concepts in PHP
Implementing DDD Concepts in PHPSteve Rhoades
 
Domain Driven Design using Laravel
Domain Driven Design using LaravelDomain Driven Design using Laravel
Domain Driven Design using Laravelwajrcs
 

Viewers also liked (18)

Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Domain Driven Design - как, почему и зачем?
Domain Driven Design - как, почему и зачем?Domain Driven Design - как, почему и зачем?
Domain Driven Design - как, почему и зачем?
 
DDD Workshop
DDD WorkshopDDD Workshop
DDD Workshop
 
SECON'2014 - Максим Цепков - DDD: от требований до кода
SECON'2014 - Максим Цепков - DDD: от требований до кодаSECON'2014 - Максим Цепков - DDD: от требований до кода
SECON'2014 - Максим Цепков - DDD: от требований до кода
 
Применение DDD подхода в Symfony 2 приложении
Применение DDD подхода в Symfony 2 приложенииПрименение DDD подхода в Symfony 2 приложении
Применение DDD подхода в Symfony 2 приложении
 
О usability водопроводных кранов
О usability водопроводных крановО usability водопроводных кранов
О usability водопроводных кранов
 
DDD — эффективный способ работы в условиях системной сложности
DDD — эффективный способ работы в условиях системной сложностиDDD — эффективный способ работы в условиях системной сложности
DDD — эффективный способ работы в условиях системной сложности
 
Anemic Domain Model - антипаттерн или SOLID?
Anemic Domain Model - антипаттерн или SOLID?Anemic Domain Model - антипаттерн или SOLID?
Anemic Domain Model - антипаттерн или SOLID?
 
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
 
DDD on example of Symfony (SfCampUA14)
DDD on example of Symfony (SfCampUA14)DDD on example of Symfony (SfCampUA14)
DDD on example of Symfony (SfCampUA14)
 
Introduction to Domain-Driven Design
Introduction to Domain-Driven DesignIntroduction to Domain-Driven Design
Introduction to Domain-Driven Design
 
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
 
DDD Modeling Workshop
DDD Modeling WorkshopDDD Modeling Workshop
DDD Modeling Workshop
 
DDD — правильный курс в потоке изменений требований
DDD — правильный курс в потоке изменений требованийDDD — правильный курс в потоке изменений требований
DDD — правильный курс в потоке изменений требований
 
Прыжок веры. От настоящего к будущему
Прыжок веры. От настоящего к будущемуПрыжок веры. От настоящего к будущему
Прыжок веры. От настоящего к будущему
 
Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)
 
Implementing DDD Concepts in PHP
Implementing DDD Concepts in PHPImplementing DDD Concepts in PHP
Implementing DDD Concepts in PHP
 
Domain Driven Design using Laravel
Domain Driven Design using LaravelDomain Driven Design using Laravel
Domain Driven Design using Laravel
 

Similar to DDD - модель вместо требований

Ddd happy dev-2013-tsepkov
Ddd happy dev-2013-tsepkovDdd happy dev-2013-tsepkov
Ddd happy dev-2013-tsepkovMaxim Tsepkov
 
DDD-secon-2014-tsepkov
DDD-secon-2014-tsepkovDDD-secon-2014-tsepkov
DDD-secon-2014-tsepkovMaxim Tsepkov
 
Ddd softwarepeople-2012-tsepkov
Ddd softwarepeople-2012-tsepkovDdd softwarepeople-2012-tsepkov
Ddd softwarepeople-2012-tsepkovMaxim Tsepkov
 
Ddd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkovDdd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkovMaxim Tsepkov
 
DDD: проблемы и решения при отражении модели предметной области в код
DDD: проблемы и решения при отражении модели предметной области в кодDDD: проблемы и решения при отражении модели предметной области в код
DDD: проблемы и решения при отражении модели предметной области в кодCUSTIS
 
Необъектные модели предметной области
Необъектные модели предметной областиНеобъектные модели предметной области
Необъектные модели предметной областиCUSTIS
 
Как выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиямиКак выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиямиSQALab
 
Как выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиямиКак выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиямиCUSTIS
 
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
 
Три точки опоры в архитектуре корпоративных систем
Три точки опоры в архитектуре корпоративных системТри точки опоры в архитектуре корпоративных систем
Три точки опоры в архитектуре корпоративных системCUSTIS
 
Проектирование_и_архитектура_ПС_2022_L06.ppt
Проектирование_и_архитектура_ПС_2022_L06.pptПроектирование_и_архитектура_ПС_2022_L06.ppt
Проектирование_и_архитектура_ПС_2022_L06.pptdinarium2016
 
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
 
Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...
Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...
Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...Dakiry
 
Domain Driven Design: модель вместо требования
Domain Driven Design: модель вместо требованияDomain Driven Design: модель вместо требования
Domain Driven Design: модель вместо требованияCUSTIS
 
Itgm #9. dmn. как моделировать принимаемые решения
Itgm #9. dmn. как моделировать принимаемые решенияItgm #9. dmn. как моделировать принимаемые решения
Itgm #9. dmn. как моделировать принимаемые решенияSPbCoA
 
2012 04 05_моделирование бизнес-процессов
2012 04 05_моделирование бизнес-процессов2012 04 05_моделирование бизнес-процессов
2012 04 05_моделирование бизнес-процессовReshetnikov Alexander
 
Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4Dima Dzuba
 
Roles happy dev-2013-tsepkov
Roles happy dev-2013-tsepkovRoles happy dev-2013-tsepkov
Roles happy dev-2013-tsepkovMaxim Tsepkov
 

Similar to DDD - модель вместо требований (20)

Ddd happy dev-2013-tsepkov
Ddd happy dev-2013-tsepkovDdd happy dev-2013-tsepkov
Ddd happy dev-2013-tsepkov
 
DDD-secon-2014-tsepkov
DDD-secon-2014-tsepkovDDD-secon-2014-tsepkov
DDD-secon-2014-tsepkov
 
Ddd softwarepeople-2012-tsepkov
Ddd softwarepeople-2012-tsepkovDdd softwarepeople-2012-tsepkov
Ddd softwarepeople-2012-tsepkov
 
Ddd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkovDdd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkov
 
DDD: проблемы и решения при отражении модели предметной области в код
DDD: проблемы и решения при отражении модели предметной области в кодDDD: проблемы и решения при отражении модели предметной области в код
DDD: проблемы и решения при отражении модели предметной области в код
 
Необъектные модели предметной области
Необъектные модели предметной областиНеобъектные модели предметной области
Необъектные модели предметной области
 
Как выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиямиКак выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиями
 
Как выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиямиКак выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиями
 
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
 
Три точки опоры в архитектуре корпоративных систем
Три точки опоры в архитектуре корпоративных системТри точки опоры в архитектуре корпоративных систем
Три точки опоры в архитектуре корпоративных систем
 
Проектирование_и_архитектура_ПС_2022_L06.ppt
Проектирование_и_архитектура_ПС_2022_L06.pptПроектирование_и_архитектура_ПС_2022_L06.ppt
Проектирование_и_архитектура_ПС_2022_L06.ppt
 
Practice of enterprice development ProfsoUX-2017
Practice of enterprice development  ProfsoUX-2017Practice of enterprice development  ProfsoUX-2017
Practice of enterprice development ProfsoUX-2017
 
Сотрудничество с корпорациями: рецепты из практики
Сотрудничество с корпорациями: рецепты из практикиСотрудничество с корпорациями: рецепты из практики
Сотрудничество с корпорациями: рецепты из практики
 
Опыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурамиОпыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурами
 
Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...
Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...
Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...
 
Domain Driven Design: модель вместо требования
Domain Driven Design: модель вместо требованияDomain Driven Design: модель вместо требования
Domain Driven Design: модель вместо требования
 
Itgm #9. dmn. как моделировать принимаемые решения
Itgm #9. dmn. как моделировать принимаемые решенияItgm #9. dmn. как моделировать принимаемые решения
Itgm #9. dmn. как моделировать принимаемые решения
 
2012 04 05_моделирование бизнес-процессов
2012 04 05_моделирование бизнес-процессов2012 04 05_моделирование бизнес-процессов
2012 04 05_моделирование бизнес-процессов
 
Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4
 
Roles happy dev-2013-tsepkov
Roles happy dev-2013-tsepkovRoles happy dev-2013-tsepkov
Roles happy dev-2013-tsepkov
 

More from SQALab

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировкуSQALab
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаSQALab
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиSQALab
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияSQALab
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...SQALab
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testingSQALab
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженSQALab
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииSQALab
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовSQALab
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовSQALab
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsSQALab
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеSQALab
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииSQALab
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестированиеSQALab
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"SQALab
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовSQALab
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных системSQALab
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросSQALab
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...SQALab
 

More from SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 

DDD - модель вместо требований

  • 1. Domain-Driven Design: Модель вместо требований Максим Цепков Главный архитектор дирекции развития решений Москва, 24 мая 2014 года
  • 2.  Есть разные способы работы с требованиями  Выбор конкретного зависит от проекта  В сложных проектах уместна работа с моделями  И DDD – наиболее эффективный способ для этого О чем этот доклад? DDD – ключ к построению сложных систем и их развитию вслед за потребностями бизнеса 2/64
  • 3.  Теория  Кто и что проектирует – области и роли  DDD – единый язык проекта и одна модель системы  Модели были давно, но две: бизнес-области и системы  Единый язык проекта создает общее поле понятий  И позволяет работать с одной общей моделью  Но в большом проекте следует выделять контексты  Практика  Единый язык в конкретных примерах  DDD в корпоративных приложениях  Заключение Что будет в докладе? 3/64
  • 5. А что такое требования? Essence (OMG, SEMAT) Kernel Alphas 5/64
  • 6. Разработчик Аналитик Приложение Что мы проектируем? Интерфейс Бизнес-слой Хранение Рассмотрим на стандартной 3-уровневой схеме приложения разделение ответственности 6/64
  • 7. Проектирование от внешних требований Интерфейс Бизнес-слой Хранение Остальное проектирует разработчик, создавая код Требования к пользовательскому интерфейсу Требования к межсистемной интеграции Аналитик не всегда представляет значимость этого «остального», но именно оно сшивает систему в единое целое 7/64
  • 8. Интерфейс Бизнес-слой Хранение Проектирование от данных Остальное проектирует разработчик, создавая код Представление данных в интерфейсе Модель хранимых данных, обычно – ER-диаграмма Межсистемная интеграция 8/64
  • 9. Интерфейс Бизнес-слой Хранение Проектирование по модели Разработчик «лишь реализовывает» и возникают проблемы: насколько модель хороша для реализации Представление данных в интерфейсе Модель предметной области Межсистемная интеграция 9/64
  • 10.  Концептуальная книга Эрика Эванса  на английском – в 2003 г.  на русском – только в 2010 г. DDD: как оно начиналось  Практическая книга Джимми Нильссона  на английском – в 2006 г.  на русском – в 2007 г. (почти сразу!) 10/64
  • 12.  Построен на основе терминов предметной области  Его понимают ИТ-специалисты и эксперты бизнеса  На нем описана модель ИТ-системы и ее место в бизнес-процессах Единый язык (ubiquitous language) Понятия единого языка: клиент, накладная, платеж, долг – из предметной области 12/64
  • 13.  Парадигма моделирования определяет  Элементы языка  Способ их соединения в сложные конструкции  Визуальный образ для представления  Способ отражения модели в код А где здесь ООП? ООП – это парадигма моделирования Объекты с атрибутами и методами Диаграмма классов и другие UML-диаграммы Типы, соответствующие бизнес-объектам Я сосредоточусь на разработке модели, а не на ее реализации 13/64
  • 14. Модель системы не соответствует представлению бизнеса о ее месте в модели предприятия Зачем нужен единый язык? Модель предприятия Представление о месте ИТ-системы Модель ИТ-системы «Не то чтобы совсем не попал, но только не попал в шарик…» 14/64
  • 15. Единый язык позволяет совместить модель системы с представлениями бизнеса о ее месте Итерационное развитие модели ИТ-система Модель ИТ-системы Место ИТ в бизнес-процессе Управляющее воздействие на модель Итерация 15/64
  • 16.  Аналитик собирает требования и строит модель: сначала – предметной области, затем – системы  Артефакты модели описывают и систему, и ее использование в бизнес-процессах предприятия  Разработчик реализует модель  Артефакты модели можно проследить в коде Единая модель Модель предметной области становится моделью системы 16/64
  • 17.  Верификация постановок бизнес-специалистами  Общее понимание требований на стороне бизнеса  Обсуждение модели бизнесом и IT, поиск баланса в сложных решениях  Перенос моделей из других предметных областей  Бизнес представляет потенциальные возможности системы и сложность различных доработок  На этапе эксплуатации – эффективное общение бизнес-пользователей и IT без квалифицированных переводчиков-аналитиков Плюсы единой модели 17/64
  • 18. Границы единого языка Устаревшая системаНовая система Бизнес-область проектируемого приложения Единый язык Единый язык должен быть шире области приложения, но не обязан охватывать всю предметную область. И на нем описывается интеграция 18/64
  • 19. Контексты и их карта Устаревшая системаНовая система Бизнес-область проектируемого приложения Единый язык Контекст 1 Контекст 2 Контекст интеграции со старой системой Область приложения может быть разделена на несколько слабо зависимых контекстов. Об их сопряжении – позднее Контексты интеграции выделяются, если сопряженные системы имеют другой язык 19/64
  • 20. Единый язык и слои приложения Приложение Интерфейс работает с объектами предметной области. Язык расширяется понятиями конструирования интерфейса – экраны, таблицы, кнопки… Единый язык ориентирован на описание модели для бизнес- слоя, его объекты отражаются в реализации При описании интеграции и хранения в единый язык добавляются понятия описания потоков данных, транзакций и другого межсистемного взаимодействия Хранение Бизнес-слой Интерфейс 20/64
  • 22.  В процессе обработки документа (сделки, договора, контракта) обеспечить проверку и одобрение определенными сотрудниками или отделами Задача Задача касается конкретного документа 22/64
  • 23. Выбор проектного решения Каждая виза – со своим жизненным циклом Существует несколько типовых шаблонов 23/64
  • 24.  Шаблоны обладают разной гибкостью и сложностью  Для выбора нужно понимать требуемый баланс гибкости и сложности решения Традиционный подход  На этапе сбора требований аналитики формулируют задачу для конкретного документа  Исходя из этого в системе проектируется решение  Выбранное решение отражает текущую ситуацию В чем проблема? Решение надо принимать с учетом потенциального изменения бизнес-процессов 24/64
  • 25.  Проверка сделки казначейством и отделом рисков – не получается выполнять параллельно  Юристы отозвали одобрение кредита, а служба безопасности на него опиралась – связи между визами не контролируются системой  Настройку виз для одобрения договоров с недвижимостью передали в IT из-за сложности Примеры 25/64
  • 26.  Представляем шаблоны, описанные применительно к конкретному документу, показываем разницу  Бизнес-специалисты оценивают потенциальную потребность в реализации бизнес-процессов  Решение принимается с учетом перспективы Решение в рамках DDD 26/64
  • 27.  Для решения модель надо описать понятно бизнесу  Можно описать обобщенные решения для документов, «состояния» и «визы», и на них ссылаться  Можно описывать каждый случай отдельно  Термины должны быть понятны заказчику  Например, «визированием» могут считать одобрение документа, требующее только просмотра, а если требуется дополнительная работа, то это называется «обработкой» или «проверкой»  Общий шаблон надо «перевести» на язык проекта В чем единый язык? 27/64
  • 28.  Мы используем известные шаблоны решений  Заказчик оценивает вариант решения не только с точки зрения текущих потребностей, но и из предположений о развитии бизнес-процессов  Проектируя изменения бизнес-процессов, заказчик представляет потенциал гибкости системы и принимает решения с учетом этого Результат 28/64
  • 29. Вопрос: Как обеспечить легкое развитие системы при изменениях правил проверки и одобрения документа? Ответ: Для этого нужны точки расширения.  Стратегии – именованные алгоритмы обработки, включаемые в определенных точках  Проверки или обработка при переходе в состояние  Алгоритм определения состояния документа по визам  Стратегии дополняем спецификациями – декларативными описаниями условий, применяемых для выбора стратегий по параметрам документа  Декларативное описание графа перехода документа и набора виз, связанных с переходами Точки расширения 29/64
  • 31.  Пользователи создают документы  По необходимости заполняют справочники  Потом документы исполняют  При этом меняются учетные данные  Которые влияют на исполнение документов  И отражаются в отчетах Типичное корпоративное приложение Жизненный цикл документа 31/64 Объектная модель Учет – не объектная модель
  • 32. Одна модель или несколько? Связь Учетные показателиДокументы Если учет существенно влияет на исполнение документов, то необходима единая модель А то при документах появляется свой «маленький учет» 32/64
  • 33. Модель документооборота (поведение документов) Учетная модель (учетные показатели) Информационная модель (структура документов) Три проекции модели системы 33/64
  • 34. Информационная модель (структура документов) Модель документооборота (поведение документов) Учетная модель (учетные показатели) Документы и справочники – диаграмма классов Учет – диаграммы учета Документооборот – диаграмма состояний Диаграммы для проекций 34/64
  • 37. Сложность объектного представления учета:  Нет идентификации единичного объекта  Работа идет с показателями, текущее значение которых меняется  Изменение числового значения может менять состояние с точки зрения принятия бизнес- решения  Часто интерес представляют агрегаты, а не отдельные значения Учетная модель – не объектная Представление учета оказалось за рамками UML. Для него не придумано эффективного представления 37/64
  • 38.  Для представления учетной модели мы придумали диаграммы учета  Они показывают элементы учета  Какие есть синтетические счета и их аналитику  Как проводки перемещают ресурсы по синтетическим счетам  С какими событиями связано исполнение проводок Статья «Диаграммы учета: мост между бухгалтером и разработчиком» (журнал «Бухгалтер и компьютер», №5-2011) Учетная модель 38/64
  • 39. Диаграммы учета Показывают, как отражается движение ресурсов в учете 39/64
  • 40. Бухгалтеры могут применять диаграммы учета для разработки учетной политики. Диаграммы учета для бизнеса Они нагляднее, чем Excel 40/64
  • 42.  Объекты с атрибутами и методами – элементы единого языка для предметной области и способ их соединения в сложные конструкции  Для отражения документооборота используем состояние документа  Диаграмма классов и диаграмма состояний UML – визуальный образ для наглядного представления  Объекты в программе – способ отражения модели в реализацию Хорошо работает объектная модель 42/64
  • 43. Классы соответствуют бизнес-объектам – заказчик видит знакомые названия Модель должен понимать заказчик Представляем диаграммой классов Используем цветовые выделения 43/64
  • 44.  Не нужно  Стараться изобразить все классы на одной диаграмме  Отображать вспомогательные атрибуты  Использовать технические коды  Использовать сложную нотацию  Диаграммы должны понимать заказчики, а не только разработчики Не нужно усложнять диаграмму 44/64
  • 45.  Документу приписываем состояние, оно определяет этап жизненного цикла  Какие действия можно совершать и кому  Кто отвечает за обработку документа  Возможные изменения состояний документа образуют граф переходов – State machine diagram Модель документооборота UML Язык ООП «с расширениями». Названия состояний и переходов – на языке бизнеса 45/64
  • 47.  Сочетание декларативного и императивного  Типизация документов, графы при наследовании  Если граф переходов настраивается – надо уметь подхватывать настройки в интерфейсе и логике  Если в любом случае требуется кодирование – в чем будет выгода от настроек?  Развитие правил обработки на переходе  В коде через наследование объектов  Через стратегии в точках расширения  Через декларативное описание правил выбора стратегий  Настройка прав доступа Точки расширения в логике переходов 47/64
  • 48. DDD для корпоративных приложений Часть 4. Разделение контекстов 48/64
  • 49. Контексты в единой модели Связь Учетные показателиДокументы Документы Справочники Показатели Отчеты Счета Проводки Контекст документооборота Контекст учета 49/64
  • 50.  Розничный магазин  Продажи и Склад магазина  Продажи, Склад магазина, Заказы товара  Торговая компания  Закупки и Продажи  Закупки, Продажи и Склад  Оптовые продажи  Заказы и Отгрузки  Заказы, Отгрузки, Оплаты Вертикальная декомпозиция 50/64
  • 51. Вертикальная декомпозиция Подсистема 1 Документы и справочники 1 Подсистема 2 Учет 1 Отчеты и показатели Документы и справочники 2 Учет 2 Отчеты и показатели Общие справочники Общий учет Отчеты и показатели 51/64
  • 52.  Примеры  Магазин: со складом и без склада, продажа с заказом  Логистика и склад: много систем с заказами товара  Банк: Главная книга и много систем по банковским продуктам  Подходы  Смысловое ядро  Общее ядро  Абстрактное ядро  Подключаемые компоненты  Крупноблочная структура  Уровни разделения обязанностей Сопряжение контекстов 52/64
  • 54. Ведение взаиморасчетов с клиентами по продажам  Обеспечивающее ведение управленческих лимитов  И отражение расчетов в бухгалтерию Задача 54/64
  • 55.  Менеджеры по продажам: долг – основа для управленческих решений. Увеличивается, как только приняли решение об отгрузке, уменьшается, когда признали претензию  Бухгалтеры: долг – в соответствии с ПБУ, с учетом оформления документов и прохождения процедур  Следствие: управленческий и бухгалтерский долг имеют систематические различия Проблема: Смешение языков на бизнес-уровне 55/64
  • 57.  Контроль правильности учета запаздывает  Менеджеров не получается контролировать через бухгалтерию  Имеются две разные суммы долга, что затрудняет принятие управленческих решений  Для сверки с клиентом и решения проблем менеджеры должны вникать в ПБУ Проблемы двух пониманий долга 57/64
  • 58.  Вырабатываем единый язык, описывающий долг в терминах, понятных менеджерам и бухгалтерам  Строим модель, которая показывает управленческий и бухгалтерский долг и их различие  Ситуации, в которых долг различается, описываем на едином языке, согласуем со специалистами  Вырабатываем требования по контролю различий, а также по устранению несущественных различий  Результат – общий взгляд у бизнес-специалистов на предметную область, описанный в модели, которая реализуется разработчиками Решение от DDD 58/64
  • 59. Модель долга клиента Этого долга нет у бухгалтеров Этих платежей нет у менеджеров Овалы – счета стрелки – проводки «Общее» понимание долга Сверку с клиентом успешно выполняют менеджеры 59/64
  • 60.  Согласовано понимание предметной области у различных бизнес-специалистов  Реализована модель, отвечающая интересам всех заинтересованных сторон проекта Результат 60/64
  • 62.  Ограниченные контексты и их изоляция  Способы выделения общего в контекстах  Стратегии и Политики  Выделение общих объектов  Абстракция через интерфейсы Практики проектирования применяем для бизнес-анализа Технические практики наполняются бизнес- смыслом и служат для общения с заказчиком 62/64
  • 63.  Единый язык + Единая модель:  Дают надежную основу для общения всех участников проекта при принятии решений  Успешно заменяют мелкую россыпь требований  Позволяют эффективно развивать сложную систему  Это требует дополнительных усилий:  Формирование единого языка  Понимание разработчиками предметной области  По опыту, результат окупает усилия Что же достигает DDD? 63/64