Академический Документы
Профессиональный Документы
Культура Документы
ориентированное
проектирование
~@~ ~@~!НJ@~
• •
о аlП- Гlvеп
• ••
eSI IS 1 е
Vaughn Vernon
••• Addison-Wesley
80ston • Columbus • Indianapolis • New York • San Francisco • Amsterdam • Саре Town
Dubai • l ondon • Madrid • Milan • Munich • Paris • Montreal • Toronto • Delhi • Mexico City
Sao Paulo • Sydney • Hong Kong • Seoul • Singapore • Taipei • Tokyo
е метно
о иенти ованное
п оекти ование
~~ о о ~Ll r О [85[}={] О t.=:::J
Вон Вернон
Москва. Санкт-Петербург. Ки е в
2017
ВВК 32.973.26-0 18.2. 75
В35
УДК681.3.07
Вервов. Вон.
В35 Предметно-ориентированное проектировани е : самое основное. : Пер.
сангл. -СпВ.: 000 "Альфа-книга". 2017. - 160с.: ил. -Парал. тит. англ.
ISBN 978-5-9908463-8-8 (рус.)
ББК 32.973.26-018.2.75
Все названия программных ПРОдУКТов ЯВllяются зарегистрированными торговыми марка
ми соответствующих фирм.
Никакая часть настоящего издания ни в каких целях не может быть воспроизведена в ка
кой бы то ни было форме и какими бы то ни было средствами. будь то электронные или меха
нические. включая фотокопирование и запись на магнитный носитель. если на это нет ПИСЬ
менного разрешения издательства Addison-Wesley Pиblishlng Сотрanу. Inc.
Authorlzed tгanslatlon from the English language edltlon published Ьу АddJsоп-Wеslеу
Pиblishing Сотрапу. Inc. © 20 16 Ьу Pearson Education. Inc.
АН rights reserved. 111Js publJcatlon is protected Ьу copyright. and permlsslon must Ье obtalned
from the publlsher prior to anу proh.ibited reproductlon. storage in а retrieval system. ог transmls-
sion in апу form ог Ьу anу means. electronlc. mechanical. photocopying. recording. ог likewise.
Rights to thls book were obtalned Ьу arrangement with Pearson Educatlon. Inc.
Russian language еdltlоп pubUshed Ьу Dialektlka Computer Books РиЫishiпg ассогdiпg to the
Agгеетепt with R&I Епtегрrisеs Iпtеmаtlопal. Copyright © 20 17
Научно-гюnулярное издание
ВонВернон
Предметно-ориеН"I'ированное
проектированиесамоеосвоввое
Предисловие 10
Благодарности 14
06 авторе 15
ГЛАВА 1
Краткий обзор DDD 17
-
ГЛАВА 2
Стратегическое проектирование
с помощью ОГРАНИЧЕННЫХ КОНТЕКСТОВ и ЕДИНОГО ЯЗЫКА 27
ГЛАВА 3
Стратегическое проектирование с помощью ПОДОБЛАСТЕЙ 61
ГЛАВА 4
Стратегическое проектирование
на основе СВЯЗЫВАНИЯ КОНТЕКСТОВ 67
ГЛАВА 5
Тактическое проектирование с помощью АГРЕГАТОВ 89
ГЛАВА 6
Тактическое проектирование
~ ~
ГЛАВА 7
Инструментальные средства для повышения
эффективности проектирования 125
Библиография 151
Предметный. указатель 153
Содержание
Предисловие 10
Для кого предназначена эта книга 11
Темы. рассмотренные в книге 12
Соглашения 13
Благодарности 14
Об авторе 15
ГЛАВА 1
Краткий обзор DDD 17
Вреден ли ООО? 18
Хороший. плохой и эффективный дизайн 19
Стратегическое проектирование 23
Тактическое проектирование 24
Процесс обучения и уточнения знаний 25
Поехали! 26
ГЛАВА 2
Стратегическое npоектирование с помощью ОГРАНИЧЕННЫХ
КОНТЕКСТОВ И ЕДИНОГО ЯЗЫКА 27
Эксперты проблемной области и бизнес-факторы 34
Типичный пример 37
Необходимость фундаментального стратегического
проектирования 41
Ставьте проблемы и обобщайте 45-
Разработка ЕДИНОГО Я ЗЫКА 51
Реализация сценариев 55
Далекие перспективы 57
Архитектура 57
Резюме 59
ГЛАВА 3
Стратегическое npоектирование с помощью ПОДОБЛАСТЕИ- 61
Что такое ПОДОБЛАСТЬ 62
Типы ПОДОБЛАСТЕЙ 62
Проблема сложности системы 63
Резюме 66
Содержание
ГЛАВл4
Стратегическое npоектирование
на основе СВЯЗЫВАНИЯ КОНТЕКСТОВ 67
Способы связ ывания контекстов 69
ПАРТНЕРСТВО 70
ОБЩЕЕ ЯДРО 70
КЛИЕНТ - ПОСТАВЩИК 71
КОНФОРМИСТ 71
ПРЕДОХРАНИТЕЛЬНЫЙ УРОВЕНЬ 72
СЛУЖБА С ОТКРЫТЫМ ПРОТОКОЛОМ 73
ОБЩЕДОСТУП НЫЙ ЯЗЫК 73
ОТДЕЛЬНОЕ СУЩЕСТВОВАНИЕ 74
БОЛЬШОЙ КОМ ГРЯЗИ 74
Правильное использование СВЯЗЫВАНИЯ КОНТЕКСТОВ 76
Удаленный вызов процедур по протоколу SOAP 77
Протокол RESТful Н1ТР 78
РАССЫЛКА СООБЩЕНИЙ 80
Пример СВЯЗЫВАНИЯ КОНТЕКСТОВ 85
Резюме 88
ГЛАВл5
Тактическое проектирование с помощью АГРЕГАТОВ 89
Заче м нужны АГРЕГАТЫ 90
Эмпирические правила проектирования АГРЕГАТОВ 95
Правило 1. Защищайте бизнес-инварианты
в границах АГРЕГАТА 95
Правило 2. Проектируйте маленькие АГРЕГАТЫ 97
Правило 3. Ссылайтесь на другие АГРЕГАТЫ только
по идентификаторам 98
Правило 4. Обновляйте другие АГРЕГАТЫ . руководствуясь
u
принципом итого во и согласованности 99
Моделирование агрегатов 102
Тщательно выбирайте абстракции 107
Агрегаты правильного размера 109
Тестируемые модули 111
Резюме 112
ГЛАВл6
Тактическоеnpоектирование
u u
ГЛАВА 7
Инструментальные средства для повышения эффективности
проектирования 125
СОБЫТИЙ НЫЙ ШТУРМ 126
Други е ин струменты 138
Прим е не ние принципов ООО для гибкого проектирования 138
Начне м с начала 140
И с пол ьзование swar-анализа 140
Вс плес ки и долги моделирования 142
Идентификация задач и оценивание 143
Модел ировани е с ограничением времени 145
Реали зация 146
Взаимоде йстви е с ЭКСПЕРТАМИ ПРЕДМЕТН О Й ОБЛАСТИ 148
Резюм е 149
Библиография 151
Предметный указатель 153
Посвящается НИКОЛЬ И ТРИСТан!
Мы сделалИ это снова!
Предисловие
людей. или территорий и строительства. и кто знает. что еще. Точно так же
видеоигры- это модели. Они моделируют сказочный мир с причудливыми
персонажами. играющими фантастические роли. Даже колода карт и кар
точные игры моделируют власть. Мы настолько часто используем модели.
что. как правило. не осознаем этого. Модели - это часть нашей жизни.
Но почему? У каждого человека есть свои особенности восприятия.
Существует множество видов восприятия. но среди них есть три главные -
слух. зрение и осязание. Люди. воспринимающие реальность через слух.
познают мир. слыша и слушая. Люди. у которых превалирует зрительное
восприятие. обучаются. читая или видя образы. Люди. воспринимаю
щие реальность через осязание. получают знания. прикасаясь к чему-то.
тестировщиков. Пользу от чте ния этой книги могут получить все, кто свя
зан с информационными технологиями и научно-исследовательс кими или
конструкторскими про е ктами.
Соглашения
В книге принято лишь несколько соглашений. Все шаблоны 000. ко
торые мы будем обсуждать. набраны ПР О ПИС НЫМИ БУКВАМИ . Например. вы
будете читать об О ГРАНИЧЕННЫХ КО НТЕК С ТАХ и СО БЫТИЯХ ПРЕДМЕТН О Й ОБ
Л АСТИ. Другое соглашение касается фрагментов кода - они выделены
мо н о ширинным шрифт ом . Аббревиатуры источников. которые приведены в
_ библиографии. указаны в главах в квадратных скобках.
Кроме того. в книге особое внимание уделяется многочисленным диа
граммам и рисункам. которые обычно воспринимаются читателями лучше.
чем текст. Обратите внимание на то, что рисунки не пронумерованы, пото
му что я не хотел смущать читателей их большим количеством. Рисунки и
диаграммы всегда предшествуют их обсуждению в тексте, так что опреде
ленный визуальный образ постоянно будет сопровождать вас при чтении.
Это означает, что, читая текст, вы можете вернуться к предыдушему рисун-
~
Благодарности
Это уже третья моя книга. опубликованная уважаемым издательством
Addlson-Wesley. Кроме того. я в третий раз работаю с моим редактором
Крисом Гузиковски (Chris Guzikowski) и техническим редактором Крисом
3аном (Chris Zaп). Я счастлив сказать, что третий раз был таким же прият
ным. как первые два. Еще раз спасибо за выбор моей книги для публикации.
Ни одна книга не может быть успешно написана и издана без кри
тических замечаний. На сей раз я обратился к практикам ООО. Это не
всегда были преподаватели или авторы книг и статей. но эти люди иг-
v
рали важную роль в проектах. помогая другим использовать мощныи ин-
Об авторе
Вреден ли DDD?
Возможно. вы слышали, что ООО - сложный подход к разработке про
граммного обеспечения. Сложный? Он не сложнее задач. для решения ко
торых предназначен. Действительно. ООО - это совокупность передовых
методик. которые используются при разработке сложного программного
обеспечения. С учетом мощи и масштаба этого подхода для его самостоя
тельного изучения без помощи эксперта вам потребуется так много усилий.
что это может отпугнуть вас от его освоения. Вы. вероятно. также думаете.
что другие книги по 000. содержащие сотни страниц. очень трудно понять
и применить полученные навыки на практике. Мне пришлось затратить
много слов. чтобы подробно объяснить 000 и дать его исчерпывающее
описание. осветив более десятка специальных тем и шаблонов. В резуль
тате этих усилий в свет вышла книга Implementing Domain-Driven Design
IIDDDI. Эта новая лаконичная книга должна ознакомить вас с самыми важ
ными частями 000 так быстро и просто. насколько это возможно. Почему?
Потому что многих читателей угнетают длинные тексты. Им нужны крат
кие справочники. чтобы немедленно присrynить к освоению новых мето
дов. Я выяснил. что специалисты. использующие ооо. перечитывают кни
J;'и по нескольку раз. Вы можете подумать. что полностью изучить ооо не
возможно. и поэтому станете использовать эту книгу как справочник. обра
щаясь за подробным описанием к другим источникам по мере углубления
ваших знаний. Другие уже столкнулись с проблемами. пытаясь объяснить
000 своим коллегам и менеджерам. Эта книга поможет вам сделать это. не
только объясняя 000 в сжатом виде. но и демонстрируя доступные инстру
ментальные средства. позволяющие ускорить проектирование и обеспе
чить его управляемость.
Конечно. по этой книге нельзя пройти полный курс по DОО. потому что
я преднамеренно изложил методики ОDО в сжатом виде. Для более глубо
кого изучения этого подхода обратитесь к моей книге Implementing Domain-
Driven Design IIDDD] или запишитесь на трехдневный семинар IDDD Work-
shop. Трехдневный интенсивный курс. который я провожу по всему миру
для широкой аудитории. состоящей из сотен разработчиков. позволит вам
быстро войти в курс дела. Кроме того. я также провожу обучение методам
ооо в интерактивном режиме на сайте htt p: // f or Compre he nsion . сот .
Хорошие новости заключаются в том. что ооо не должен повредить
вам. Поскольку вы. вероятно. уже столкнулись со сложностью В ваших про
ектах. вы можете учиться использовать 000. чтобы преодолеть сложность
с помощью менее болезненных средств.
Хороший, плохой
и эффективный дизайн
Люди часто говорят о хорошем и плохом дизайне. К какой категории
проектов относится то. что делаете вы? Многие группы разработчиков про
граммного обеспечения даже не думают о дизайне. Вместо этого они дела
ют то. что я называю "перетасовкой задач на доске" ("taskboard s huff1e").
Члены группы составляют список задач, связанных с разработкой. вроде
журнала пожеланий продукта Scrnm. или бэклога продукта (backJog). и пе
ремещают стикер из столбца "В планах" в столбец "В работе". Разработчики
Глава 1. Краткий обзор DDD
обслуживать.
степени, а во втором - в
~
максимальнои.
СтивДжобс
Ограниченный контекст
Единыйязык
Стратегическое проектироваиие
Мы начинаем со стратегического проектирования. важного во всех от
ношениях. Невозможно эффективно применять тактическое проекти
рование. если сначала не выполнить стратегическое проектирование.
работать Е:ДИНЫЙ ЯЗЫК (UBIQUI TOUS LANGUAG E:) в качестве МОДЕ:ЛИ ПРЕ: ДМЕ:Т
НОЙ ОБЛАСТИ в пределах точно определенного ОГРАНИЧЕ:ННОГО КОНТЕКСТА .
Вы узнаете . насколько важно привлекать к работе над Е:ДИНЫМ ЯЗЫКОМ
не тол ько разработчиков, но и ЭКСП Е: РТОВ П РЕ:ДМ Е: Т Н ОЙ ОБЛАСТИ (DOМAIN
E:XPERTS) . Вы увидите, как сотрудничают группы разработчиков про
граммного об ес пе чения и ЭКСПЕРТЫ ПРЕДМЕТ Н ОЙ ОБЛАСТИ . Это жизненно
важно е объедин е ние умных и мотивированных людей , которое необходимо
для того, чтобы предметно-ориентированное проектирование принесло на
илучшие ре зультаты. Язык, который вы разрабатываете , сотрудничая вме
сте, станет единым и вездесущим языком общения и моделирования.
По м е р е углубле ния в дебри страте гиче с кого проектирования вы столк
н етесь с поняти е м ПОДОБЛАСТИ ( SUBDOМAIN ) и узнаете , как оно позволяет
с ни з ить сл ожно с ть унасл едованных с исте м и достичь отличных р езуль
ограниченный контекст
'/-"""""'-..........
Тип агрегата 2
Тип агрегата 1
1
Другой ограниченный
, контекст
,
Тактическое проектировакие
После того как я дам вам прочные ос новы стратегичес кого проектиро
вания, вы обн а ружите самые мощные с р едства тактич ес кого пр оектирова-
Глава 1. Краткий обзор DDD
Поехали!
Даже в сжатом представлении информация о ООО является довольно
обширной . Начнем с главы 2. "Стратегическое проектирование с помощью
О ГРАНИЧЕННЫХ КОНТЕКСТОВ и ЕДИНОГО ЯЗЫКА" .
Глава 2
Стратегическое
проектирование с помощью
Ограниченный контекст
. ' '---:--
, •
. . Единый язык
, .
Ограниченный контекст
Глава 2. Стратегическое проектирование с помощью Ограниченных ...
Ограниченный контекст
, Рта =
Ограниченные контексты, группы
и репозитории исходных текстов
Еще раз подчеркнем очень важное требование, что одна группа долж
на работать только над одним О ГРАНИЧЕННЫМ КОНТЕКСТОМ . Это полно
стью устраняет возможности любых неприятных сюрпризов, которые
•
могут возникнуть, когда другая группа вносит изменения в ваш исходныи
код. Ваша группа имеет свой исходный код и базу данных и определяет
официальные интерфейсы, с помощью которых должен использоваться
ваш ОГ РАНИЧЕННЫЙ КО НТЕКСТ . В этом заключается одно из преимуществ
использования ООО.
Ограниченный контекст
- ........
Единыйязык
I
---------------------,
I
1,..--_ _
I
I I
:'---
I
I
I
I Вне контекста I
I
,---------------------,
В естественных языках терминология развивается в течение долгого
времени. и в разных странах одни и те же или похожие слова имеют раз
Скорее всего, они будут в той или иной степени отличаться от компонентов,
которые моделируются вашей группой. Это прекрасно.
Глава 2. Стратегическое проектирование с помощью Ограниченных ...
:r L, .:l. -... ~ ~
L
Z 10<
71\\ \
~
~ ~
Заключение договора
Политика
•
. -~
•
#" .tj '
. ''' &\ ''. J, ~. .... 4:I
...-.,-''-.
:<'
Инспекции
Претензии
Политика
и' " ,е' .
... ~J~.
..
• ~ ... ~OCI
Политика •
-; ...
~
.•.""
~; . .~
.~'
•
•
Подсказать. где проходят границы модели. может разделение организа-
ции на отделы или рабочие группы. Обычно всегда можно найти хотя бы
одного бизнес-эксперта по конкретной бизнес-функции. В последнее вре
мя наблюдается тенденция объединять людей. работающих над проектом.
в группы. а подразделения и даже функциональные группы. образующие
иерархию управления. становятся все менее популярными. Даже столк
нувшись с новыми бизнес-моделями. вы все еще будете обнаруживать. что
проекты организованы в соответствии с бизнес-факторами и в границах
областей знания. Возможно. о разделении функций следует думать именно
в этих терминах.
Глава 2. Стратегическое проектирование с помощью Ограниченных ...
Тако е раздел ени е н еобходимо. когда анализ показ ывает. что каждая биз
н ес -функция может ис пользовать разны е определе ния одного и того же
те рмина. Разб е ре м ко нцепцию rюлитика и пос мотрим . как и з ме ня ется ее
зн а че ние в раз ных областях страхового дел а . Ле гко понять. что те рмин по
литика при подпи с ании с трахового до говора с ов е рш е нно отлич ается от
пол итики уре гул ирования претензий или ин с пе ктирования . Более подр об-
-
н о э ти р азл ичия о пи с аны во вр ез ке . прив еде ннои ниж е .
альной стоимости.
Политика урегулирования претензий . Политика урегулирования пре
тензий регламентирует процесс рассмотрения претензии на возмещение
убытков в терминах политики заключения страховых договоров. Политика
-
урегулирования претензии должна ссылаться на правила заключения стра-
I,
Политика
• "
~
I Заключение договора -
,
~.
,
•
,
Претензии -
Инспекции
•
• •
• "• •
I Политика I
Контекст подписания
договоров
•
--
. ,
I Политика I'
Iг-п-о-л-ити-ка
.....1 Контекст инспектирования
" урегУлирования
" Контекст
"
ТЕКСТА . Назовите эту концепцию просто Policy во всех трех ОГРАНИЧ ЕННЫХ
КОНТЕКСТАХ .
Глава 2. Стратегическое проектирование с помощью Ограниченных ...
. ном ОГРАНИЧЕ Н НОМ КОН Т ЕКС ТЕ . Моделирование всех трех терминов в од
ном и том же ОГРАНИЧЕ Н НОМ КО Н ТЕКСТЕ привело бы к путанице .
Product
$prlnt
Типичный пример
Для того чтобы пол нее разъя снить причины и с п ользов ания ОГРАНИ
ЧЕННЫХ КОНТ Е КСТОВ . позвольте мне про иллюстриро вать их н а приме ре од
1 В с кобках указаны име н а соответствую щих кл ассо в . прив еде нных н а диа гра м
Produc'
тei"'lont
Dtасussюn
Е а"",оtюnL ogЕntrу
Producl
Tenont F",um
8ockloQltetn
~.с:u.sюn Col«Idot Entry
Е stll\'lO!:юnl..ogЕntry
F'rodvc. t
Т"""'"
DI$Gu,мon CoI.rIcsarEnlry
Ро"
P«><lu<'
Co!.ndorEntr)'
TOik
IntlOofnt
ProducctO WtI@I"
,,-,
'...... "'-
L
"'-,
.J!: L,
iar.IolDQ lt.on
.:L
R • .- ... ~ ~ с_
,-
f.'~oofnlfJ
"OOU<:lo-...
~
T...,.~
......... ~ -- \~
T~IO(IW
...- .........
__
~ ~
1Ч1 ,
T~tRмourц
5d 1 ~_
•
:z
Q '~ .. ty
;1
I
L
I I
Группа уже дал е ко продвинулась к поставке БОЛЬШОГО КОМА ГРЯЗИ . хотя про
ект е ще только начался.
Глава 2. Стратегическое проектирование с помощью Ограниченных ...
Ограниченный контекст
.
....-г-
ЕДиныйязык
-
Необходимость фундаментального
стратегического проектирования
Какие инструменты ООО позволяют избежать описанных выше лову
шек? Для этого нужны по крайней мере два инструмента фундаменталь
ного стратегического проектирования. Первый - ОГРАНИЧЕННЫЙ КОНТЕКСТ ,
второй - ЕДИНЫЙ ЯЗЫК . Использование ОГРАНИЧЕННОГО КОНТЕКСТА заставля
ет нас ответить на вопрос: "Что является ядром?" ОГРАНИЧЕННЫЙ КОНТЕКСТ
должен объединять близкие концепции, которые являются ядром страте
гической инициативы, и отбросить все остальное. Оставшиеся конце пции
являются частью ЕДИНОГО ЯЗЫКА группы. В дальнейшем мы покажем, как
подход ООО позволяет избежать создания монолитных приложений.
Проверка преимуществ
Поскольку ОГРАНИЧЕННЫЕ КОНТЕКСТЫ не монолитны, их использование
приносит дополнительные преимущества. Одно из них состоит в том, что
тесты сосредоточиваются на одной модели, а значит, их количество умень
шается и они выполняются быстрее. Хотя это не главное преимущество
ОГРАНИЧЕННЫХ КОНТЕКСТОВ , оно окупается во многих ситуациях.
Глава 2. Стратегическое проектирование с помощью Ограниченных ...
Ограниченный контекст
Внутри контекста...
Ограниченный контекст
Внутри контекста... .
•
Примите к сведению
Концепции, прошедшие строгий отбор ДЛЯ включения в ядро, являются
частью ЕДИНОГО языКА группы, владеющей ОГРАНИЧЕННЫМ КОНТЕКСТОМ .
Граница подчеркивает строгий порядок внутри контекста.
Глава 2. Стратегическое проектирование с помощью Ограниченных ...
ПРОДУКТА ИЛИ
ЭКСПЕРТ ПРЕДМЕТНОЙ ОБЛАСТИ?
Вы можете задаться вопросом, в чем различие между ВЛАДЕЛ ЬЦ Е М ПРО
ДУКТА Scrum и ЭКСП Е РТОМ ПРЕДМЕТ Н ОЙ ОБЛАСТИ DDD. В некоторых случа
ях эти роли может играть один и тот же человек, способный их выполнить.
И все же не следует удивляться тому, что ВЛАДЕЛЕЦ ПРОД УКТА обычно
сильнее сосредоточивается на управлении и распределении приоритетов
,
ТОВ ПРЕДМЕТ Н ОИ ОБЛАСТИ и не заменяете их ВЛАдЕЛЬЦАМИ ПРОДУКТА, не
???
• • •
???
• • •
s•
.,,
Тenon\
Produ<;\
и.Of
To.k S~logl t em
Product
О ls сu.sеюп
$prtnl
__ ...-----~,-~- _:-:_~:::=::::;~":_~_::-:- - - - 1
I I
ТtЮm
Е 8ttmotюnlog Е пtгу
I
I
••
:
•
,---"';
ProductOwnм
...;--
•
•
I ' -_ _ _. . 1,._ _ __
,---------------,•
Концепции Арендатор. Пользователь и Полномочия (Permission) должны
быть заменены концепциями Группа ( Теаm). Владелец продукта (Pr oduct -
Owne r ) и Член группы (TeamMember). Концепции Владелец продукта и Член
группы фактически представляют собой концепцию Пользователь внутри
концепции Аренда ( Тепапсу). но Владелец продукта и Член группы - это тер
мины ЕДИН ОГО ЯЗЫКА Scrum. Это естественные термины. которые мы ис
пользуем. говоря о Sсгum-проДУКтах и работе группы. которая их разраба
тывает.
Product
Вocl<logl,om
E.timotoonlogEn'rj'
ProouctOwn+f"
Product
T.om
Е sUm<:!tюnLogЕntrу
ProductOw"..,.
Resоurс.моnog"
т lfТI@Consum,ngR",ource
Sch.dul ..
......Iob'bty
_1
ReI8ca•• Sprinl
T08I<
г' - -
,'---- , E'~ooEntry
-----_ ....
ProductOwn.r TeomМIi,1b«
......
C ~ t . rмSorEnlJy
ProductOWNW
Produ<:t
------
1.----- 1
1 1
I Or.CU881On I
Sprint 1 1
,------'
То '"
Т...",
е а timotюnl ogеf't,у
P,odUGtO_ TeomМemb«
, ,
Product •
• CoI.ndarEntry
• •
,
Producl
OtаС U II Юn
R.мю ••
T08k Commilt.юВod<logllom
Теот
VoIunt"" е.timotюnLogЕпtrу
ProductOwner
--
После того как элемент бэююга будет назначен для спринта. извести
те об эmoм заинтересованные стороны.
Реализация сценариев
Вы можете задаться вопросом. как перейти от письменного сценария к
некоему артефакту. который можно использовать для проверки вашей мо
дели предметной области на соответствие спецификациям. разработанным
группой. Для этого можно использовать методику под названием специфи
кация иа npuмepax (Specification Ьу Example) ISpecificationl: ее также назы
вают разработкой. осиоваииой иа поведении (Behavior-Oriven Oevelopment)
IBOOI. с помощью этого подхода вы можете обеспечить совместную разра
ботку и уточнение ЕДИНОГО ЯЗЫКА . моделирование на основе общих прин
ципов и проверку соответствия вашей модели вашим спецификациям. Для
этого организуются приемочные тесты. Ниже показано. как можно перепи
сать предыдущий сценарий в виде исполняемой спецификации.
Сце нарий: владелец продукта назначает элемент бэклога для спри нта
И целев ой с принт
/*
Владелец продукта включает элемент бэклога в спр инт. Элемент бэклога
может быть включен в спри нт/ только если он уже намечен для выпу ска /
и если кворум членов группы одобрил эту о перацию. После тог о как
*/
Глава 2. Стратегическое проектирование с помощью Ограниченных ...
[ Те ст]
11 Когда
backlogltem . Commit To (sprint , pr oduc t Owner , qu o rum ) ;
11 Тогда
Assert . IsTrue (backlogltem . I sCommitted ()) ;
var backlogltemCommitted =
backlogltem . Events . OfType<BacklogltemCommitted> () . SingleOr Default () ;
Далекие перспективы
Теперь у вас может возникнуть вопрос: как поддерживать ЕДИНЫЙ ЯЗЫК .
когда закончится период внедрения и начнется период обслуживания? На
практике приобретение новых знаний происходит в течение долгого вре
мени. даже на протяжении периода обслуживания. Многие группы делают
типичную ошибку. прекращая совершенствовать язык. когда начинается
обслуживание.
Возможно. худшее. что можно сделать. - это распространить концеп
цию "стадия обслуживания" на СМЫСЛОВОЕ ЯДРО. Процесс непрерывного
~ ~ ~
Архитектура
Есть еще один вопрос. который может вас заинтересовать. Что находит
ся в ОГРАНИЧЕ НН ОМ КОНТЕКСТЕ? Используя архитектурную диаграмму ПОРТЫ
И АДАПТЕРЫ IIDDDI. можно убедиться. что в ОГРАНИЧЕННЫЙ КОНТЕКСТ входит
не только модель предметной области.
Глава 2. Стратегическое проектирование с помощью Ограниченных ...
Молеяь _
П~
События предметной
облааи Хранение данных События предметной '--''--J
облааи
Резюме
в этой главе вы узнали:
ТЕКСТЕ :
Стратегическое
проектирование с помощью
\J
ПОДОБJ I АСТЕИ
,• ,
т""""
... ) ,
...., ..., • ,
\'
•
, -' - -
ОБЛ АСТИ . которые очень хорошо понимают аспекты бизнеса. веде ние кото
рого облегчает данная ПОДОБЛАСТЬ . Кроме того. П ОДОБЛАСТЬ также имеет в
некоторой степени стратегическое значение для вашего бизнеса.
Если бы для разработки ПОДОБЛАСТИ использовался подход ООО. то она
была бы реализована как точно определенный ОГРАНИЧЕННЫЙ КО НТЕКСТ .
ЭКС ПЕРТАМИ ПРЕДМЕТН ОЙ ОБЛАС ТИ. которые специализируются в данной
конкретной сфере бизнеса. были бы члены группы. разработавшей данный
О ГРАНИЧЕННЫЙ КО НТЕКС Т . Использование ООО для разработки точно опре
деленного ОГРАНИЧЕННОГ О КОНТЕКСТА - оптимальный выбор. о котором
иногда приходится только мечтать.
Типы ПОДОБЛАСТЕЙ
В рамках про екта есть три простых типа ПОДОБЛАСТЕЙ .
не может быть лидером во всем, что она делает. ваше СМЫСЛОВОЕ ЯДРО
выделяет область ее конкурентного преимущества. Для того чтобы
достичь такой глубины знаний, необходимы заинтересованность,
сотрудничество и экспериментирование. Именно сюда организа
ция должна вложить самые большие инвестиции, предназначенные
для разработки программного обеспечения. Позднее мы рассмотрим
средства ускорения и управления выполнением проектов.
их. если они влияют на С МЫСЛ О ВОЕ ЯДРО проекта. Для этого в качестве ин
струмента для обсуждения вашего ПР ОС ТРАНСТВА СОСТОЯ НИ Й необходимо
использовать ПОДОБЛАСТИ .
Глава З. Стратегическое проектирование с помощью Подобластей
•••••••• •••
~---._-_.-------- ••••• _._ ••• _._._ ; Подобласть :
: Подобnaсть заказов :: выnoлнения:
,• ..
••
' -......
•
,'-------_.
• __ ._._. __ ._ .,
,,• .. .. - l1oд06nюь
Под06nаоь учетных заnмсей : .. .. •
•,
~- _.. _. - -. --- -. --- -- --
_а,. .
..
ДО<тавки
,,,
,j...-"1г-уj:=J.'.: '7-............ '----..... '----':,:,---_ ... _.- ...,
г--I-..., г- ---;':
Ic. ,
,,•
. ,"
'"\'\
,,
·.,,-,---, ,
,.• •
,,•
,,
,
,
•
•
•
КОМЕ ГРЯЗИ обведена пунктиром. На рисунке показаны пять логичес ких мо
делей, или ПОДОБЛАСТЕЙ. Обработка логических ПОДОБЛАСТЕЙ также помога-
Глава З. Стратегическое проектирование с помощью Подобластей
рые имеют большую ценность для бизнеса и необходимы для наше го прое к
та. и те. которые не заслуживают большого внимания.
Учитывая сказанное. вы можете даже по казать СМЫСЛОВОЕ ЯДРО . над
которым работаете или собираетесь работать. на той же самой про
стой диаграмме. Это поможет вам понять связи и зави с имости м ежду
ПОДОБЛАСТЯМИ. Но я отложу детали этого обсуждения для КАРТ КОНТЕКСТ ОВ .
,---------------------------,
: Смысловое ядро :
, ,,
,,
,,
,----------------------,
,•
., ------_ .............................. _.... ,
: Универсальная подобласть' ,, Вспомогательная
.\ КоНтею управrieния • : подобласть
,,
,, .
гмбким .npoeктирова,!ием
,
- ,,
:
,,
,
, , Контекст
Контекст идентификации : : сотрудничества
и доступа
,, I ------------------ •• -------
,
,
,,
, .. _--_ ............ _------_ ... .
._---_ ............. _. __ ..... . ,
в рамках подхода ООО между ОГРАНИЧЕННЫМИ КОНТЕКСТАМИ и ПОДОБЛА
СТЯМИ должно существовать взаимно однозначное соответствие. Таким
образом. если в проекте ООО существует ОГРАНИЧЕННЫЙ КОНТЕКСТ . то в н е м
следует выделить одну модель ПОДОБЛАСТИ . Это может оказаться не всегда
возможным или практичным. но к этому необходимо стремиться. Это со
хранит ваши ОГРАНИЧЕННЫЕ КОНТЕКСТЫ точно определенными и позволит
~ ~
полностью отдельный МОДУЛЬ (IDDDI. (МОДУЛЬ ооо - это. как правило. па
кет в языках ScaJa и Java или пространство имен в языках F# и С#.) Это
Глава 3. Стратегическое проектирование с помощью Подобластей
позволит ясно выразить. что одна модель - это ядро. а вторая носит вспо
Резюме
в этой главе вы узнали:
• что такое ПОДОБЛАСТИ и как они используются в ПР ОСТРАНСТВЕ ПРО
УНИВЕРСАЛЬНАЯ ПОДОБЛАСТЬ ;
Стратегическое
проектирование на ОСНОВЕ
С КОНТЕКСТОВ
т...., ,
u••
АoIo
,
CoA.n<Ior Er;lry
....." ...,
-- •
Forum
~dQ(
P<Odu<. Ot8СUI8Юn
$prlnt
РOI'
F...um
Produ<; (
о..сu •• юn
- --
II """'"
, -- I
Diacus.ion
Sc>rint ~E n lry
•
- РооI
-------
--- - J
Глава 4. Стратегическое проектирование на основе связывания ...
долгого времени. Есть несколько видов СВЯ ЗЫВА Н ИЯ КОНТЕКСТОВ . как груп
повые. так и технические. которые можно изобразить линиями. В неко
торых случаях можно смешивать как отношения между группами. так и
инт е грацию.
,-----------------------------.
I I
I
I
•
, ,
I
I
{Q'I"<Ф
I I
I I
I I
I , I
I I
I I
I I
I I
,--------------------------.--,
ПАРТНЕРСТВО
только до тех пор. пока это приносит выгоду его участникам. После этого
группы должны установить новые отношения.
О - 111 Е ЯДРО
КЛИЕНТ-ПС
КОНФОРМИСТ
v
ПРЕДОХРАНИТЕЛЬНЫИ УРОВЕНЬ
с ОТКРЬ1'rым ПРОТОКОЛОМ
гого типа.
ЯЗtJК
ОБЩЕДОСТУ ПНЫЙ ЯЗЫК (PUBLISHE D LANGUAG E), показанный на предыдущей
диаграмме. - это хорошо документированный язык информационного об
мена. допускающий простое употребление и перевод для любого количест
ва ОГРАНИЧЕ ННЫХ КОНТЕКСТОВ . Потребители. читающие и пишущие на об
щедоступном языке, могут осуществлять прямой и обратный перевод с об
щего языка на общедоступный (и наоборот) с полной уверенностью, что их
интеграция является правильной. Такой ОБЩЕДОСТУП НЫЙ ЯЗЫК может быть
определен с помощью языков XМL Schema, JSON Schema или более спе
циальных языков наподобие Protobuf или Ауго. Часто СЛУЖБЫ С ОТКРЫТ ЫМ
ПРОТОКОЛОМ поддерживают и используют ОБЩЕДОСТУПНЫЙ ЯЗЫК , чтобы обес
печить лучшую интеграцию для третьих сторон. Эта комбинация делает
оче нь удобным перевод между двумя ЕДИНЫМИ ЯЗЫКАМИ .
Глава 4. Стратегическое проектирование на основе связывания ...
ОТДЕЛЬНОЕ :СТВОВАНИЕ
А"
..- .'"
о·
•
••
RESТfoJ нt тр
(.J:MLJ
• RESТful
RPC
Orpэ,.rteННыi
КOHтetI(Т ny6дмкaЦ!lli
Рассыпка сообщений
Правильное использование
связыАния КОНТЕКСТОВ
Бы можете задать вопрос: какой конкретный вид интерфейса позвол.яет
осуществить интеграцию с заданным ОГ РАН ИЧ Е Н Н ЫМ КОНТЕКСТОМ? ЭТО зави
сит от группы. владеющей О ГРАНИЧЕННЫМ КО Н Т Е КС Т ОМ. Это может быть уда
ленный вызов процедур (Remote Procedure СаН - RPC) по протоколу SOAP.
или интерфейсы RESТfu! с ресурсами. или интерфейс рассылки сообще
ний. или механизм ИЗДАТЕЛЬ - П ОДПИСЧИК (PUBLISH - SUBSCRIBE ). В крайнем
случае можно использовать интеграцию базы данных или файловой систе
мы. но будем наде.ятьс.я. что этого никогда не случитс.я. Интеграции базы
данных действительно нужно избегать. но если вы все же вынуждены бу
дете свернуть на этот путь. то сначала должны убедитьс.я. что изолировали
свою модель с помощью ПРЕДО ХРАНИТЕЛЬН О Г О УР О ВНЯ .
Рассмотрим три наиболее надежных типа интеграции и будем двигатьс.я
от наименее надежного к самому надежному. Сначала рассмотрим подход
RPC. затем RESТful Н1ТР и наконе ц рассылку сообщений.
Глава 4. Стратегическое проектирование на основе связывания ...
•• • • ..••
..
•
•. '
•• .'
••
•••
·
Находит службу
Ограниченный контекст
cnyжбы SOAP ( XML ) -
. Офаниченный
контекст клиента
~
..."'ii. -~ . ( XМl )
о:
Ограниченный
~MмeHTa
R E S Тf ul н п р
.'
arp;••NtННЫЙ
J\OНТf:К(T клиента
POST
GET
PUT
DELETE
R E SТfvl нпр
0'P'H",ltHHыii
IfDНТttrCТ uмttna
"
Orplllll'lellныli lCOИТtICТ
CII)'Жбы
0rpJe1l'lell_
~..( КOНТt8CCТ КNI!ИТ3
"
ной области . Иногда модель выглядит точно так. как хочет клиент. Но на
~ ~
РАССЬШКАСС
Агрегат
Агрегат
контекст
подлиски
ArperaT •
Агрегат
КOIIТtIICТ
I
nOДПlККII
,
•
•
Идемпотентный получатель
,
. tl ,
OrpaH_bIi конrero
ООДПIККII
Получатель
·8·~
ДОСТАВКА НЕ РЕЖЕ ОД НОГ О РАЗА (АТ - LEAST - ONC E DELIVE RY) [Reactivej- это
шаблон рассылки сообщений. в котором механизм рассылки периодически
повторно передает данное сообщение. Это происходит при потере сообще
ния. а также если получатели медленно реагируют или не в состоянии под
Получатель Открыть
" I Политика ,
•
I Iloлитика , .
Контекст претetl3llй
•
Политика
к созданию
к созданию
,
Политика
Политика
l<OНТeIfCТ ИНО,ЕКЦ!IЙ
Кoнтtкcт претензий
•
"
1, <
Глава 4. Стратегическое проектирование на основе связывания ...
Политика
Публикация
- poIicyld данных лолитики
Запрос
Политика
- issuedPoli<yld
•
Кoнтt'I((Т лодnи<ки
Компромисс между
обогащением и обратными запросами
Иногда полезно обогатить СОБЫТИЯ ПР ЕДМЕТ Н ОЙ ОБЛАСТИ достаточно
большим объемом данных, чтобы удовлетворить потребности всех потре
бителей. Иногда полезно хранить тонкие СОБЫТИЯ П РЕДМ Е ТНОЙ ОБЛ АСТИ
И разрешать обратные заПРОСbl, когда потребители нуждаются в большем
количестве данных. Первый вариант допускает большую автономию за-
Глава 4. Стратегическое проектирование на основе связывания ...
Публикация
даННЫХ
-----""";;G-:ЕТ~,:poI:'С=IeS/{1 8SU~dРОIIGУld}
"'......
KOНII!I(CТ nOAfllКlOl
Product ! ,
....
'~.
Резюме
в этой главе вы узнали:
Тактическое
проектирование с помощью
РЕГАТОВ
•
P<Oduc:'
А....... ~ E"try
РОО'
FOfum
C<Wndor
Рое.
остальных СУЩН ОСТЕЙ того же самого или другого типа. Очень часто, воз
можно, даже в подавляющем большинстве случаев, СУЩНОСТЬ является из
менчивой, Т.е. ее состояние с течением времени изменяется. Однако это не
обязательно, и СУЩНОСТЬ может быть неизменной. Главная отличительная
черта СУЩНОСТИ - ее уникальность, Т.е. индивидуальность.
Тип агрегата 2
...--...
Тип агрегата 1
Корень агрегата 1
Сущность
Глава 5. Тактическое проектирование с помощью Агрегатов
Тип агрегата 2 •
Тип агрегата 1
Корень arperaтa 1
i
Сущность
(УЩНРСТЬ
•
Тип агрегата 2
Тип агрегата 1
Корень агрегата 2
Корень агрегата 1
Сущно<ть
Сущно<ть
06ъект-значение
Отдельная транзакция
Тип агрегата 2
Тип агрегата 1
КореНЬ агрегата 2
КореНЬ агрегата 1
СУЩНОСТЬ
СУЩНОСТЬ
СУЩНОСТЬ
Объект-значение
Для того чтобы взглянуть на это с другой точки зрения. рассмотрим сле
дующую ситуацию. Хотя здесь представлены два АГРЕГАТА . только один из
них должен быть зафиксирован в отдельной транзакции. Это общее прави
ло проектирования АГРЕГАТОВ : в одной транзакции можно модифициро
вать и фиксировать только один экземпляр АГРЕГАТА . Именно поэтому вы
видите только экземпляр первого типа АГРЕГАТА в пределах транзакции.
Другая транзакция
Тип агрегата 2
Тип агрегата 1
Корень агрегата 2
Корень агрегата 1
Сущность
Сущность
Объект-значение Сущность
Объект-значение
Другая транзакция
Отдельная транзакция
-- --""' .... ,
, Тип агрегата 2
Тип агрегата 1
I
Корень агрегата 1
Корень агрегата 2
,
Сущность
Сущность
I
Объект-значение Сущность
I
Объект-значение
Эмпирические правила
проектирования АГРЕГАТОВ
Рассмотрим четыре основных правила проектирования АГРЕГАТ О В .
Агрегат Product
,,
, ~
Агрегат Sprint
\ I
, ,
I
Produ<;t!o ,
, \
I
I
PrQduct EЮcl..loo It.m
, Gommltt od Вocklogltom , I
.... ... ~
.... - - "'"
~
........ _---
Правило 1. Защищайте бизнес-инварианты
в границах АГРЕГАТА
Правило 1 означает. что именно бизнес должен в конечном счете опреде
лять состав АГРЕГАТА . основываясь на том. какие концепции должны оста
ваться согласован ными по сле совершения транзакции. В предыдущем при-
Глава 5. Тактическое проектирование с помощью Агрегатов
мере класс Produ c t проектируется так. что в конце транзакции все обра
зованные экземпляры ProductBacklogltem должны быть совместимыми
и согласованными с корнем класса Product. Кроме того. класс Sprint про
ектируется так. чтобы в конце транзакции все образованные экземпляры
класса CommittedBa c klogltem были совместимыми и согласованными с
корнем класса Sprint .
Агрегат Вacklogltem
Вoa.logltem
TtJ8k
АГРЕГАТ Backl o gltem должен иметь состояние DONE . Таким образом. в кон
це транзакции этот очень конкретный бизнес-инвариант должен быть вы
полне н. Этого требует бизнес-правило.
Крупный агрегат
Product
Sprint
Глава 5. Тактическое проектирование с помощью Агрегатов
Агрегат Product
«root»
Produc:t
«root»
8ackloQ l tem I [:::'::: I
Агрегат 5print
примере.
Агрегат Product
P'cductld
Агрегат Sprint
« SpГlnt
root» I .. I Productld I
Агрегат Вacklogltem
Spno,ld
ВocldoQlt...ld
ТО&!<
, 50<,"'
, 1
I
S""".ld
\ I
Commo"~ВocJ<Iog I .",,,
"
....... .. - ...."'"
Агрегат Backlogltem
i!od<log Homld
To.~
Агрегат Spгint
- - ....
Вocklog lioml d
....
-
в рамках транзакции АГРЕГАТ BacklogItem публикует СОБЫТИЕ ПРЕД
МЕТН ОЙ ОБЛАСТИ по имени Ba cklogItemCommitted. Когда транзакция
Ba c klogltem завершается. ее состояние сохраняется вместе с СОБЫТИЕМ
ПРЕДМЕТНОЙ ОБЛ АСТИ ItemCommitted . Когда экземпляр класс а BacklogItem
Committed поступает к локальному подписчику. начинается транзак
ция и состояние экземпляра класса Sprint изменяется. чтобы сохранить
идентификатор Ba cklogItemId назначенного экземпляра Backlogltem.
Экземпляр кла сс а Sprint сохраняет экземпляр класса BacklogItemId в но
вой СУЩНОСТИ Commi ttedBacklogltem.
Глава 5. Тактическое проектирование с помощью Агрегатов
Контекст управления
гибким проектированием
\
Sprint
,.
•
Глава 5. Тактическое проектирование с помощью Агрегатов
Моделирование агрегатов
в работе над моделью предметной области вас поджидает несколько
ловуше к, связанных с реализацие й АГРЕГАТОВ . Самая крупная и опасная
ловушка - АНЕМИЧНАЯ МОД ЕЛЬ ПРЕДМЕТНОЙ ОБЛАСТИ IШDD]. ЭТО объект-
Глава 5. Тактическое проектирование с помощью Агрегатов
Тип агрегата 1
Корень arper<IТa 1
(ущНOClb
Для начала необходимо создать класс для вашей КОР Н ЕВОЙ СУЩН ОС Т И АГ
РЕГАТА . Ниже представлена диаграмма UML (Unlfied Modeling Language).
описывающая КОР НЕВ УЮ СУЩН ОС Т Ь P roduc t. На ней также по казан класс
Product на языке С#. который расширяет базовый класс Enti ty . Этот
базовый класс включает в себя несколько стандартных характеристик
СУЩНОСТИ . Исчерпывающее описание вопросов. связанных с проектирова
нием и реализацией СУЩН ОСТ ЕЙ и АГ Р ЕГАТ О В. см. в [IDDDI.
To8nOntld
P~t.ld
T..мnt ld
Productld
«root»
Produe.t T."ont!d
+ o.кtlPtlOtr .trll"l9
.. Nnm. 5ttng ~ Produ<:: tld
Pro~7 Teononlld
.. De.trIPUon. • tnnо
1_ N""", stЩ """ P"","cU d
:-... "'_1001._
P~oduct8odclogl tem
.. ScheOJ~-'-о..
1+ SeheduМtSpr.,1
)
}
Ргodщ l
Sprint
VoIun .....
Е аtlmotюnlogЕ ntry
ProductOwner
готипа.
щими проблемами.
. ~.
•
А1
о
!AzT
~ 'j/
AI" о
ост аНО8ИТ( Я:
о
А2 . немедленно о
С 1• . 30 секунд ~
/ А
I Событие I
...
Глава 5. Тактическое проектирование с помощью Агрегатов
Тестируемые модули
Вы должны про е ктировать ваши АГРЕГАТЫ так, чтобы об еспе чить на
дежную инкапсуляцию для модульного тестирования. Сложные АГРЕГАТЫ
трудно проверять. Следуя правилам прое ктирования АГРЕГАТ О В , вы сможе
те моделировать тестируемые АГРЕГАТЫ .
Глава 5. Тактическое проектирование с помощью Агрегатов
исходных кодов.
Резюме
в этой главе вы узнали:
Тактическое проектирование
с помощью со
..,
ПРЕ :ТНОИ О ти
Ограниченный
контекст пуБПИl<aЦМЙ .•
, .. . I •
,
"
, ,
контекст
, ПОАПIICКМ
Проектирование,реализация
.... ....
и использование СОБЫТИИ ПРЕ :ТНОИ
ОБЛАСТИ
Для эффективного проектирования и реализации СОБЫТИЙ ПРЕДМЕТНОЙ
ОБЛАСТИ в вашем ОГРАНИЧЕННОМ КОНТЕКСТЕ необходимо выполнить дейст
вия. описанные ниже. Кроме того. ниже приведены примеры того. как
используются СОБЫТИЯ ПРЕДМЕТНОЙ ОБЛАСТИ .
Глава б. Тактическое проектирование с ПОМОЩЬЮ событий предметной ...
CreatsPl'Oduct
•
•
er.oteP~t
.
,
• 18nantJd
• pn>ductld
• nome "-
• d.,c(iption
,,,.:' (~
Команда CreateProduct имеет следующие свойства: 1) tenantld . иде н
тифицирующее арендатора-подписчика: 2) productId . идентифицирую
щее уникальный создаваемый объект класса Product : З) имя пате объе к
та класса Product : и 4) описание description объе кта класса Product .
Каждое из этих свойств является необходимым для создания объекта клас
са Product .
, •
er.ateProduct
• 18nantJd
• pn>ductJd
· name
· dищ,1JOn
Глава б. Тактическое проектирование с помощью событий предметной ...
«owegote»
. ......• tt •
«~t.»
8od<logltem
~d!od<lo!Il-.Тоs".inl
. . boc:Iclogl-. . .
« 0\191 egote»
Ограниченный
контекст ПОДПИСКИ
1 Вocklogltem
2
b~!..." -. i! ....
. .pt ••• t ;
..,
источники совьrrии
Шаблон ИСТОЧНИКИ СОБЫТИЙ можно описать как хранение всех СОБЫТ ИЙ
ПРЕДМЕТНОЙ ОБЛАСТИ . связанных с экземпляром АГРЕГАТА. в виде записи
того. что изменилось в АГРЕГАТЕ. Вместо того чтобы сохранять все состо
яние АГРЕГАТА . в памяти хранятся все про изошедшие СОБЫТИЯ ПРЕДМЕТН ОЙ
О БЛАСТИ . которые связаны с ним. Давайте посмотрим. как это делается.
Все СОБЫТИЯ ПРЕДМЕТН ОЙ ОБЛАСТИ . которые произошли с одним экзем
пляром АГРЕГАТА . упорядочиваются. поскольку они образуют поток собы
тий. Поток событий начинается с первого СОБЫТИЯ ПРЕДМЕТН ОЙ ОБЛАС ТИ. ко
торый когда-либо происходил с экземпляром АГРЕГАТА. и продолжается до
последнего произошедшего СОБЫТИЯ ПРЕДМЕТН ОЙ ОБЛАС ТИ. Когда происхо
дят новые СОБЫ Т ИЯ ПРЕДМЕТН ОЙ О БЛАС ТИ с данным экземпляром АГРЕГАТА.
они добавляются в конец его потока событий. Повторное воспроизведение
потока событий. связанных с АГРЕГАТ ОМ. позволяет воссоздать состояние
по информации. полученной из хранилища. и записать ее обратно в па
мять. Иначе говоря. с помощью И С Т О ЧНИКА СОБЫТИЙ АГРЕГАТ. который был
-
удален из памяти по какои-то причине. можно полностью воссоздать на ос-
N ( )
N ( )
Производительность
Если одной из основных целей вашей работы является производитель
ность, то вы оцените информацию о кешировании и снимках. Прежде все
го, в памяти кешируются высокопроизводительные АГРЕГАТЫ, что позво
шего АГР Е ГАТА (объекта, актора или записи) в базе данных. Снимки более
подробно обсуждаются в книгах /mp/ementing Domain-Driven Design (IDDD)
и Reactive Messaging Patteгns with the Actor Mode/ [Reactive).
Глава б. Тактическое проектирование с помощью событий предметной ...
бытия. Это может быть очень полезным для вашего бизнеса по многим при
чинам. как по тем. которые можно себе представить в настоящее время. на
пример. связанным с обеспечением бизнес-правил и бизнес-анализом. так
и по тем. которые вы пока не понимаете. Существуют также технические
преимущества. Например. разработчики программного обеспечения могут
использовать потоки событий для исследования тенденций использования
и отладки исходного кода.
Резюме
в этой главе вы узнали:
• что такое И СТО ЧНИКИ СОБЫТИЙ и как ваши СОБЫТИЯ ПРЕДМЕТН ОЙ ОБЛА
СТИ можно сохранять и использовать для представления состояния
ваших АГРЕГАТОВ .
Инструментальные
средства для повышения
э ективности
проектирования
, \\ ' 1 ' 11 ,
, \ 12 1 ,
11 1
-10
~9 ~-3 ~
- 8
-
4 --
6 5
/'
...- - - - - -- ..... , /
.-- ......
"- ~
~- - ..- -- ,
/ \ /'
/ / "-
\ \
I I
I \
\
I \
I
I
\.
, ..... -. /'
/
\ /
\
I
I
- - - - ...-
\
"-
- /'
/
\
-- ~
.... ....
СОБЫ'fИИНЫИ
СОБЫТИЙ Н ЫЙ ШТУРМ (EVENT STORMING) - это методика быстрого прое кти
рования. предназначенная для вовлечения ЭКСПЕРТОВ ПРЕДМЕТН О Й ОБЛАСТИ
И разработчиков в быстро изменяющийся процесс изуч е ния. Она сосредо
точена на бизнесе и бизнес-процессах. а не на именах существительных и
данных.
понимающий основы UML. Это был очень полезный подход. но нужно было
найти способ непосредственно вовлечь бизнес-экспертов в процесс проек
тирования. Вероятно. это означало отказ от UML в пользу более привлека
тельных для бизнес-экспертов инструментов проектирования.
Впервые я узнал о СОБЫТИЙНОМ ШТУРМЕ много лет назад от Альберто
Брандолини (Alberto Вгandоliпi) [Ziobrando]. который также экспери
ментировал с другой формой событийно -управляемого моделирования.
Однажды. испытывая острый недостаток времени. Альберто решил отка
заться от UML и вместо него использовать стикеры. Так появился новый
метод быстрого обучения и проектирования программного обеспечения.
который позволял быстро вовлечь в процесс обсуждения всех его участни
ков. Ниже перечислены некоторые из его преимуществ.
-
протяжении трех-четырех днеи. а не в течение одиого длинного сеан-
Время
------------------------------~
Commit
Backlogltem
Время
----------------------------------~~
КОМАНДОЙ .
этапу.
Глава 7. Инструментальные средства ДЛЯ повышения эффективности ...
Вacklogltem
Commit
Вacklogltem
Время
-----------------------------------~
мают и могут быстро прекратить обсужде ние. Этот шаг был перене
се н на третье место в С О БЫТИЙНОМ ШТУРМЕ . потому что МЫ хотим в пер
вую очередь сосредоточиться на бизнес-процессе. а не на данных.
Если мы и должны подумать о данных в некоторый момент. то на
этом этапе. На данном этапе бизнес-эксперты. вероятно. поймут. что
в игру вступают данные. Ниже приводятся не которые рекомендации.
касающиеся моделирования АГРЕГАТ О В .
моему опыту. в течение одного и того же сеанса штурма группы часто при
границам.
определенной роли.
Другие инструменты
Конечно. все это не мешает вам экспериментировать. например. нано
сить на вашу поверхность моделирования другие рисунки и пытаться вы
историю или количе ство опе раций в час. Он нацеле н на повыше ни е эф
фективности. а не контроль стоимо сти и не предус матривает оце нивания
любой задачи. для р е ш е ния кото рой. в е роятно. потр е буется н ес колько
Глава 7. Инструментальные средства ДЛЯ повышения эффективности ...
месяцев. Я не ОТfuюняю этот подход. И все же. когда я писал книгу. lUIиен
ты. с которыми я работал. все еще требовали предоставлять сметы и оцен
ки временных затрат даже для таких задач. как программирование мелко
Назначенная Назначенная
встреча встреча
.---....
Там. где я использую термины задача или доска задач.. они относятся
ко всем методикам гибкого проектирования. даже к КапЬап. Там. где я ис
пользую термин спринт я буру пытаться вставлять слова иmeрацuя, если
речь идет о гибком проектировании вообще. и WIP(work in progress - неза
вершенная работа). если речь идет о методике Кanban. Это может не всегда
быть совершенно уместным. поскольку я не пытаюсь определять реальные
процессы. Надеюсь. вы просто извлечете выгоду из идей и найдете способ
правильно применить их в конкретном вашем каркасе гибкого проектиро
вания.
Начнем сначала
Одно из самых важных условий. гарантирующих успешное использова
ние подхода DDD для проектирования. состоит в том. чтобы нанять хоро
ших специалистов. Хорошие и очень хорошие специалисты просто неза
менимы. DDD - это продвинутая методология разработки программного
обеспечения. требующая привлечения разработчиков высокого и очень
высокого уровня. Никогда не недооценивайте важность найма правильных
-
людеи с правильными навыками и мотивациеи. -
Сильные Слабые
__ стороны стороны
что необходимо сделать, чтобы достичь успеха все, что можно улучшить
Возможности Угрозы
дdCredits AdSpot
..--I~--.
Consume:::----I. DefineAdSpot
Credit
4. Укажите часы или доли часа. необходимые для каждого уровня слож
ности: простого. умеренного и сложного. Эти оценки включают не
только время. необходимое для выполнения задачи. но и учитывают
дальнейшие усилия по проектированию и тестированию. Стремитесь
к точности оценок и будьте реалистами.
к вопросу о ТОЧНОСТИ
Этот подход работает. В одной большой корпоративной программе ор
ганизация потребовала оценки для большого и сложного проекта в рам
ках широкой программы. Для решения этой задачи были назначены две
Глава 7. Инструментальные средства ДЛЯ повышения эффективности ...
AdSpQ! AdCredits
Арроiпtmепt Aggregate (3)
Aggregate (1)
Aggregate (2)
-
AdSpQt ApPQintment
Commands (1) Events (2) дdCredits
Commands (1)
•
дdSpQ!
Events (1.5) - AdCredits
Events (1)
ServiceShop
Aggregate (2)
Payment (0.5)
Моделирование с ограничением
времени
Теперь. имея оценки для каждого типа компонентов, вы можете оце ни
вать ваши задачи непосредственно по этим компонентам. Вы можете со
.2 КомандаА1
Тестовый
Агрегат В
агрегат В
Реализация
Даже если вы имеете артефакты. идентифицированные в ходе СОБЫТИЙ
НОГО ШТУРМА. вы не обязательно обладаете полным знанием. необходимым
для работы с определенным сценарием предметной области, пользователь
ской историей и сценарием использования. Если необходимы более глубо
кие знания. убедитесь. что в своих оценках вы учли время. необходимое
для приобретения знаний. Время для чего? Напомню. что главе 2 было про
демонстрировано создание конкретных сценариев на основе модели пред
Команда Al
Глава 7. Инструментальные средства ДЛЯ повышения эффективности ...
тестовые данные.
из этих обязанностей?
Резюме
В этой главе вы узнали:
• о СОБЫТИЙНОМ ШТУРМЕ и способах его проведения вместе с вашей груп
пой для ускорения процесса моделирования;
ТИЙНЫМ ШТУРМОМ ;
Библиогра ия
Принцип с
единственной обязанно-
Связывание контекстов 24. 68
сти. SPR 97 Служба приложения 58
Приобретение знаний 22 Смысловое ядро 28. 62
П рограммирование
Снимок 122
объектно-ориентированное 103 Событие предметной области 25
функциональное 103 Событийный штурм 51. 126
Проектирование
Согласованность
стратегическое 23 итоговая102
тактическое 24 причинная 1 13
Пространство
Сушность 90
задач 28
решений 28 у
Протокол
Удаленный вызов процедур 76
RESТful НТГР 78 Унаследованная система 64
SOAP 77 неограниченная 64
Процесс 131
э
р
Эксперт предметной области 24
Рассылка сообщений 80
Доставка не реже одного раза 84
Идемпотентный получатель 84
АНАЛИЗ И ПРОЕКТИРОВАНИЕ
ИНФОРМАЦИОННЫХ СИСТЕМ
С ПОМОЩЬЮ UML 2.0
ТРЕТЬЕ ИЗДАНИЕ
и проектирования
промышленных
информационных систем
с использованием языка
UML. Отличительной
особенностью книги является
обилие учебных примеров ,
упражнений, контрольных
вопросов и многовариантных
тестов. Уникальный
характер книги обусловлен
оптимальным сочетанием
практического опыта и
u
теоретических представлении.
архитекторам, программистам,
преподавателям и студентам
по информационным
технологиям .
Вон Вернон
В книге описаны
реализация методов
предметно-ориентированного
проектирования (ООО)
и специализированные
на основе современной
архитектуры, а также показана
важность ориентации на
проектирования и
предназначена для
Эрик Эванс
t D
гии коммуникации в группе.
э кстремального программирова
www.williamspubIishing.com
использования
унифицированного процесса
(UP) как легкого и гибкого
подхода к разработке совместно
с приемами из других
ХР и Scrum.
Данная книга будет прекрасным
·~
C_
__"IOI "
~
) )' _
dIO.O _ _ ,..
... .... ,,1I&o(
",
0_
J
_~ _ T~
'"
_
~. _ .-,
".
t!I'I!;OO' . .. OOC_ <ot ·
___
руководством для как для