SlideShare a Scribd company logo
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

DDD-secon-2014-tsepkov
DDD-secon-2014-tsepkovDDD-secon-2014-tsepkov
DDD-secon-2014-tsepkov
Maxim Tsepkov
 
Ddd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkovDdd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkov
Maxim Tsepkov
 
Requirement modelling in software creation process
Requirement modelling in software creation processRequirement modelling in software creation process
Requirement modelling in software creation process
Dima Dzuba
 
Itgm #9. dmn. как моделировать принимаемые решения
Itgm #9. dmn. как моделировать принимаемые решенияItgm #9. dmn. как моделировать принимаемые решения
Itgm #9. dmn. как моделировать принимаемые решения
SPbCoA
 
Практический анализ и визуальное моделирование на UML
Практический анализ и визуальное моделирование на UMLПрактический анализ и визуальное моделирование на UML
Практический анализ и визуальное моделирование на UML
Nikolai Kireev
 
Практический анализ по RUP
Практический анализ по RUPПрактический анализ по RUP
Практический анализ по RUP
SQALab
 
Domain Driven Design: модель вместо требования
Domain Driven Design: модель вместо требованияDomain Driven Design: модель вместо требования
Domain Driven Design: модель вместо требования
CUSTIS
 
Практика применения Enterprise Architect и T4-шаблонов для разработки систем...
Практика применения Enterprise Architect и T4-шаблонов для разработки систем...Практика применения Enterprise Architect и T4-шаблонов для разработки систем...
Практика применения Enterprise Architect и T4-шаблонов для разработки систем...
CUSTIS
 
Модель системы — архитектура для Agile-разработки
Модель системы — архитектура для Agile-разработкиМодель системы — архитектура для Agile-разработки
Модель системы — архитектура для Agile-разработки
CUSTIS
 
Базовые принципы и понятия технологии разработки объектно-ориентированных инф...
Базовые принципы и понятия технологии разработки объектно-ориентированных инф...Базовые принципы и понятия технологии разработки объектно-ориентированных инф...
Базовые принципы и понятия технологии разработки объектно-ориентированных инф...
DEVTYPE
 
Проектирование Программных Систем. Лекция 01
Проектирование Программных Систем. Лекция 01Проектирование Программных Систем. Лекция 01
Проектирование Программных Систем. Лекция 01
Dima Dzuba
 
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
Alex V. Petrov
 
C++ осень 2012 лекция 12
C++ осень 2012 лекция 12C++ осень 2012 лекция 12
C++ осень 2012 лекция 12Technopark
 
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
Alex V. Petrov
 
Внедрение Бизнес-Анализа, ИТ Бизнес-Аналитиков и UML
Внедрение Бизнес-Анализа, ИТ Бизнес-Аналитиков и UMLВнедрение Бизнес-Анализа, ИТ Бизнес-Аналитиков и UML
Внедрение Бизнес-Анализа, ИТ Бизнес-Аналитиков и UML
Edgar Khachatryan
 
Как выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиямиКак выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиями
CUSTIS
 
Software Engineering Knowledge Matrix
Software Engineering Knowledge MatrixSoftware Engineering Knowledge Matrix
Software Engineering Knowledge Matrix
Olena Syrota
 
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
Maxim Tsepkov
 
Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4Dima Dzuba
 
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...Alex V. Petrov
 

What's hot (20)

DDD-secon-2014-tsepkov
DDD-secon-2014-tsepkovDDD-secon-2014-tsepkov
DDD-secon-2014-tsepkov
 
Ddd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkovDdd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkov
 
Requirement modelling in software creation process
Requirement modelling in software creation processRequirement modelling in software creation process
Requirement modelling in software creation process
 
Itgm #9. dmn. как моделировать принимаемые решения
Itgm #9. dmn. как моделировать принимаемые решенияItgm #9. dmn. как моделировать принимаемые решения
Itgm #9. dmn. как моделировать принимаемые решения
 
Практический анализ и визуальное моделирование на UML
Практический анализ и визуальное моделирование на UMLПрактический анализ и визуальное моделирование на UML
Практический анализ и визуальное моделирование на UML
 
Практический анализ по RUP
Практический анализ по RUPПрактический анализ по RUP
Практический анализ по RUP
 
Domain Driven Design: модель вместо требования
Domain Driven Design: модель вместо требованияDomain Driven Design: модель вместо требования
Domain Driven Design: модель вместо требования
 
Практика применения Enterprise Architect и T4-шаблонов для разработки систем...
Практика применения Enterprise Architect и T4-шаблонов для разработки систем...Практика применения Enterprise Architect и T4-шаблонов для разработки систем...
Практика применения Enterprise Architect и T4-шаблонов для разработки систем...
 
Модель системы — архитектура для Agile-разработки
Модель системы — архитектура для Agile-разработкиМодель системы — архитектура для Agile-разработки
Модель системы — архитектура для Agile-разработки
 
Базовые принципы и понятия технологии разработки объектно-ориентированных инф...
Базовые принципы и понятия технологии разработки объектно-ориентированных инф...Базовые принципы и понятия технологии разработки объектно-ориентированных инф...
Базовые принципы и понятия технологии разработки объектно-ориентированных инф...
 
Проектирование Программных Систем. Лекция 01
Проектирование Программных Систем. Лекция 01Проектирование Программных Систем. Лекция 01
Проектирование Программных Систем. Лекция 01
 
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
 
C++ осень 2012 лекция 12
C++ осень 2012 лекция 12C++ осень 2012 лекция 12
C++ осень 2012 лекция 12
 
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
 
Внедрение Бизнес-Анализа, ИТ Бизнес-Аналитиков и UML
Внедрение Бизнес-Анализа, ИТ Бизнес-Аналитиков и UMLВнедрение Бизнес-Анализа, ИТ Бизнес-Аналитиков и UML
Внедрение Бизнес-Анализа, ИТ Бизнес-Аналитиков и UML
 
Как выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиямиКак выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиями
 
Software Engineering Knowledge Matrix
Software Engineering Knowledge MatrixSoftware Engineering Knowledge Matrix
Software Engineering Knowledge Matrix
 
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
 
Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4
 
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
 

Viewers also liked

Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)
Pavel Tsukanov
 
RESPONSIVE WEB DESIGN
RESPONSIVE WEB DESIGNRESPONSIVE WEB DESIGN
RESPONSIVE WEB DESIGN
Pavel Tsukanov
 
Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.
Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.
Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.
Pavel Tsukanov
 
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИ
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИSIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИ
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИ
Pavel Tsukanov
 
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVMKNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
Pavel Tsukanov
 
Введение в Knockout
Введение в Knockout Введение в Knockout
Введение в Knockout
Pavel Tsukanov
 
Sql azure federations
Sql azure federations Sql azure federations
Sql azure federations Pavel Tsukanov
 
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...
Pavel Tsukanov
 
Thinking in parallel ab tuladev
Thinking in parallel ab tuladevThinking in parallel ab tuladev
Thinking in parallel ab tuladev
Pavel Tsukanov
 
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВРАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВPavel Tsukanov
 
РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.
РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.
РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.
Pavel Tsukanov
 
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
Pavel Tsukanov
 
Unit tests
Unit testsUnit tests
Unit tests
Pavel Tsukanov
 
TDD (Test-driven Development) как стиль разработки.
TDD (Test-driven Development) как стиль разработки.TDD (Test-driven Development) как стиль разработки.
TDD (Test-driven Development) как стиль разработки.
Pavel Tsukanov
 
Автоматизированное тестирование UI на C# + Selenium WebDriver
Автоматизированное тестирование UI на C# + Selenium WebDriverАвтоматизированное тестирование UI на C# + Selenium WebDriver
Автоматизированное тестирование UI на C# + Selenium WebDriver
Pavel Tsukanov
 
Реализация REST и SOAP сервисов с помощью WCF
Реализация REST и SOAP сервисов с помощью WCFРеализация REST и SOAP сервисов с помощью WCF
Реализация REST и SOAP сервисов с помощью WCF
Pavel Tsukanov
 
Ruby - или зачем мне еще один язык программирования?
Ruby - или зачем мне еще один язык программирования?Ruby - или зачем мне еще один язык программирования?
Ruby - или зачем мне еще один язык программирования?
Pavel Tsukanov
 
Лекция Android
Лекция AndroidЛекция Android
Лекция Android
Pavel Tsukanov
 
СОЗДАЙ РОБОТА С НУЛЯ
СОЗДАЙ РОБОТА С НУЛЯСОЗДАЙ РОБОТА С НУЛЯ
СОЗДАЙ РОБОТА С НУЛЯ
Pavel Tsukanov
 

Viewers also liked (20)

Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)
 
RESPONSIVE WEB DESIGN
RESPONSIVE WEB DESIGNRESPONSIVE WEB DESIGN
RESPONSIVE WEB DESIGN
 
Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.
Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.
Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.
 
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИ
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИSIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИ
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИ
 
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVMKNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
 
Введение в Knockout
Введение в Knockout Введение в Knockout
Введение в Knockout
 
Sql azure federations
Sql azure federations Sql azure federations
Sql azure federations
 
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...
 
Thinking in parallel ab tuladev
Thinking in parallel ab tuladevThinking in parallel ab tuladev
Thinking in parallel ab tuladev
 
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВРАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
 
РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.
РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.
РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.
 
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
 
Unit tests
Unit testsUnit tests
Unit tests
 
TDD (Test-driven Development) как стиль разработки.
TDD (Test-driven Development) как стиль разработки.TDD (Test-driven Development) как стиль разработки.
TDD (Test-driven Development) как стиль разработки.
 
PaaS и SaaS
PaaS и SaaSPaaS и SaaS
PaaS и SaaS
 
Автоматизированное тестирование UI на C# + Selenium WebDriver
Автоматизированное тестирование UI на C# + Selenium WebDriverАвтоматизированное тестирование UI на C# + Selenium WebDriver
Автоматизированное тестирование UI на C# + Selenium WebDriver
 
Реализация REST и SOAP сервисов с помощью WCF
Реализация REST и SOAP сервисов с помощью WCFРеализация REST и SOAP сервисов с помощью WCF
Реализация REST и SOAP сервисов с помощью WCF
 
Ruby - или зачем мне еще один язык программирования?
Ruby - или зачем мне еще один язык программирования?Ruby - или зачем мне еще один язык программирования?
Ruby - или зачем мне еще один язык программирования?
 
Лекция Android
Лекция AndroidЛекция Android
Лекция Android
 
СОЗДАЙ РОБОТА С НУЛЯ
СОЗДАЙ РОБОТА С НУЛЯСОЗДАЙ РОБОТА С НУЛЯ
СОЗДАЙ РОБОТА С НУЛЯ
 

Similar to Domain-Driven Design: Модель вместо требований

Ddd happy dev-2013-tsepkov
Ddd happy dev-2013-tsepkovDdd happy dev-2013-tsepkov
Ddd happy dev-2013-tsepkov
Maxim Tsepkov
 
Ddd softwarepeople-2012-tsepkov
Ddd softwarepeople-2012-tsepkovDdd softwarepeople-2012-tsepkov
Ddd softwarepeople-2012-tsepkov
Maxim Tsepkov
 
DDD — правильный курс в потоке изменений требований
DDD — правильный курс в потоке изменений требованийDDD — правильный курс в потоке изменений требований
DDD — правильный курс в потоке изменений требований
SQALab
 
Необъектные модели предметной области
Необъектные модели предметной областиНеобъектные модели предметной области
Необъектные модели предметной области
CUSTIS
 
Как выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиямиКак выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиями
SQALab
 
Три точки опоры в архитектуре корпоративных систем
Три точки опоры в архитектуре корпоративных системТри точки опоры в архитектуре корпоративных систем
Три точки опоры в архитектуре корпоративных систем
CUSTIS
 
Проектирование_и_архитектура_ПС_2022_L06.ppt
Проектирование_и_архитектура_ПС_2022_L06.pptПроектирование_и_архитектура_ПС_2022_L06.ppt
Проектирование_и_архитектура_ПС_2022_L06.ppt
dinarium2016
 
Опыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурамиОпыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурами
ПрофсоUX
 
Сотрудничество с корпорациями: рецепты из практики
Сотрудничество с корпорациями: рецепты из практикиСотрудничество с корпорациями: рецепты из практики
Сотрудничество с корпорациями: рецепты из практики
CUSTIS
 
Practice of enterprice development ProfsoUX-2017
Practice of enterprice development  ProfsoUX-2017Practice of enterprice development  ProfsoUX-2017
Practice of enterprice development ProfsoUX-2017
Maxim Tsepkov
 
Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...
Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...
Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...
Dakiry
 
2012 04 05_моделирование бизнес-процессов
2012 04 05_моделирование бизнес-процессов2012 04 05_моделирование бизнес-процессов
2012 04 05_моделирование бизнес-процессовReshetnikov Alexander
 
Roles happy dev-2013-tsepkov
Roles happy dev-2013-tsepkovRoles happy dev-2013-tsepkov
Roles happy dev-2013-tsepkov
Maxim Tsepkov
 
Киев, BA Con 2017
Киев, BA Con 2017Киев, BA Con 2017
Киев, BA Con 2017
Natalia Zhelnova
 
Как выжить глобальной корпорации?
Как выжить глобальной корпорации?Как выжить глобальной корпорации?
Как выжить глобальной корпорации?
CEE-SEC(R)
 
Agile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектахAgile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектах
CUSTIS
 
Agile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектахAgile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектах
Maxim Tsepkov
 
Онтологические стандарты организационной модели
Онтологические стандарты организационной моделиОнтологические стандарты организационной модели
Онтологические стандарты организационной модели
Anatoly Levenchuk
 
Руководство MS по проектированию архитектуры приложений
Руководство MS по проектированию архитектуры приложенийРуководство MS по проектированию архитектуры приложений
Руководство MS по проектированию архитектуры приложений
govbooks
 
Внедрение CASE-технологий
Внедрение CASE-технологийВнедрение CASE-технологий
Внедрение CASE-технологийОтшельник
 

Similar to Domain-Driven Design: Модель вместо требований (20)

Ddd happy dev-2013-tsepkov
Ddd happy dev-2013-tsepkovDdd happy dev-2013-tsepkov
Ddd happy dev-2013-tsepkov
 
Ddd softwarepeople-2012-tsepkov
Ddd softwarepeople-2012-tsepkovDdd softwarepeople-2012-tsepkov
Ddd softwarepeople-2012-tsepkov
 
DDD — правильный курс в потоке изменений требований
DDD — правильный курс в потоке изменений требованийDDD — правильный курс в потоке изменений требований
DDD — правильный курс в потоке изменений требований
 
Необъектные модели предметной области
Необъектные модели предметной областиНеобъектные модели предметной области
Необъектные модели предметной области
 
Как выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиямиКак выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиями
 
Три точки опоры в архитектуре корпоративных систем
Три точки опоры в архитектуре корпоративных системТри точки опоры в архитектуре корпоративных систем
Три точки опоры в архитектуре корпоративных систем
 
Проектирование_и_архитектура_ПС_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
 
Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...
Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...
Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...
 
2012 04 05_моделирование бизнес-процессов
2012 04 05_моделирование бизнес-процессов2012 04 05_моделирование бизнес-процессов
2012 04 05_моделирование бизнес-процессов
 
Roles happy dev-2013-tsepkov
Roles happy dev-2013-tsepkovRoles happy dev-2013-tsepkov
Roles happy dev-2013-tsepkov
 
Киев, BA Con 2017
Киев, BA Con 2017Киев, BA Con 2017
Киев, BA Con 2017
 
Как выжить глобальной корпорации?
Как выжить глобальной корпорации?Как выжить глобальной корпорации?
Как выжить глобальной корпорации?
 
Agile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектахAgile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектах
 
Agile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектахAgile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектах
 
Онтологические стандарты организационной модели
Онтологические стандарты организационной моделиОнтологические стандарты организационной модели
Онтологические стандарты организационной модели
 
Руководство MS по проектированию архитектуры приложений
Руководство MS по проектированию архитектуры приложенийРуководство MS по проектированию архитектуры приложений
Руководство MS по проектированию архитектуры приложений
 
Внедрение CASE-технологий
Внедрение CASE-технологийВнедрение CASE-технологий
Внедрение CASE-технологий
 

More from CUSTIS

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

More from CUSTIS (20)

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

Domain-Driven Design: Модель вместо требований

  • 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