В статье дается ответ на вопрос, что такое Event Storming, из каких строительных блоков он состоит и как эти строительные блоки увязываются в единый процесс.
Сложные системы часто разрабатывают большие группы людей, в которых мало или совсем никто не понимает предметной области проекта в целом. Каждый участник проекта знает какую-то свою часть, но собрать эти знания в единую картину достаточно сложно. Команды часто сталкиваются с неполными, противоречивыми или неверными требованиями, пытаются исправить положение с помощью технических решений и зарываются ещё глубже. Так происходит потому что ни одна технология не поможет исправить “плохих” требований.
Чтобы у команды появилось общее понимание (иногда это называют общей ментальной моделью) бизнес-процесса разрабатываемого продукта, нужно собрать вместе экспертов в предметной области (SME, Subject Matter Experts) и вооружить инструментом извлечения знаний. Причем, инструмент нужен действенный и понятный. Например, Event Storming.
here essay some people think that extreme sports does it help to have a college education but want to be a fireman dangerous sports essay nostradamus persuasive essay ce e mai bun ca viagra enter essay on temples in india does aetna pay for cialis 2 chainz viagra free download indian suppliers of viagra nuovo viagra zithromax prescribing information byu honor code essay contest 2016 viagra reviews in india agriculture paper watch https://albionfoundation.org/perpill/viagra-lustige-bilder/63/ follow link https://familytreecounseling.com/pill/kamagra-oral-jelly-nebenwirkungen/13/ essay on summer fruit mango https://assessmentcentertraining.org/exercises/essay-titles-about-money/58/ go to site cialis for 70 year olds https://independentfutures.com/overview/essay-kool-savas-black/57/ cialis cost at costco get link church goers arent perfect essay organizer recommended canadian viagra rx online follow follow site aciclovir contraindicaciones hipertension Что такое Event Storming
По сути техника Event Storming — это воркшоп с простой структурой, на котором эксперты по предметной области и разработчики совместно исследуют эту самую предметную область. По мере исследования участники раскрывают всё больше неопределенности и скрытой сложности, сверяют предположения с реальностью и снижают влияние предположений на качество продукта.
Event Storming применяется в исследованиях клиентского опыта, проектировании новых сервисов, получении знаний о работе legacy-систем, моделировании сложных предметных областей и проектировании микросервисной или событийной архитектуры.
Техника предусматривает итеративность. Модель предметной области можно постепенно детализировать (уточнять) с каждой сессией. Участники меньше утомляются, сессии можно посвящать отдельным вопросам и приглашать нужных специалистов, брать паузы для исследований.
Основные концепции
Event Storming задает определенную грамматику, которая помогает организовать обсуждение и зафиксировать знаний о предметной области в упорядоченную историю вместо набора абстракций.
Ниже представлены основные строительные блоки, так сказать, фундамент Event Storming:
Доменное событие (domain event) – основная концепция Event Storming. Это событие из мира экспертов в предметной области и происходящее в изучаемой предметной области. Формулируется как глагол в прошедшем времени, официальный цвет – оранжевый.
Неудовлетворенность (hotspot) – используются для обозначения и визуализации конфликтов. Источниками таких конфликтов могут быть рассогласованность используемого языка, недопонимание, несогласие, возражения, проблемы или желание отложить более глубокое изучение на потом. Официальный цвет – малиновый.
Временная ось (timeline) – порядок расположения событий, слева направо по мере их наступления. Параллельные потоки событий могут располагаться друг под другом.
Хаотическое исследование (chaotic exploration) – фаза, используемая в начале проведения Event Storming. Участники, каждый самостоятельно, размещают все события, которые приходят им в голову в том порядке, в котором, по их мнению, эти события происходят
Упорядочивание по временной оси (enforce the timeline) – фаза, следующая за хаотическим исследованием в рамках которой все события упорядочиваются на единой временной оси и устраняются дубликаты событий.
Основные виды Event Storming
В Event Storming принято выделять три основных уровня исследований, каждый последующий дополняет и развивает модель:
- Крупномасштабное исследование (Big Picture)
- Моделирование процесса (Process Modeling)
- Проектирование (Software Design)
На уровне Big Picture мы имеем дело с исследованием на большом масштабе. Например, запуск новых продуктов, проведение организационной ретроспективы, изучение организации с целью структурных изменений.
Process Modeling связан с моделированием бизнес-процессов и сервисов.
На уровне Software Design мы переходим к проектированию архитектурного решения, в идеале обладающего слабой связанностью и высокой масштабируемостью.
Крупномасштабное исследование (Big Picture)
Цель крупномасштабного исследования в том, чтобы оценить состояние существующего направления бизнеса или изучить жизнеспособность новой бизнес-модели, например, стартапа. Также этот вид Event Storming часто используется для проведения организационных ретроспектив, изучение организации с целью структурных изменений.
Основные концепции дополняются следующими:
Возможность (opportunity) – противоположность неудовлетворенности (hotspot), некоторая потенциальная выгода, что-то позитивное. Официальный цвет — зеленый. Используются после того, как события упорядочены по общей временной оси.
Действующее лицо (actor) – человек или группа людей, департамент, команда или конкретный человек, влияющие на и на которых влияет Доменное Событие.
Система (system) – ИТ-система, используемая как решение некоторой проблемы в домене. После того, как события будут упорядочены по единой временной оси, можно начать располагать системы вокруг Доменных Событий. Официально – широкий розовый стикер.
Ценность (Value) – после приведения событий в согласованное состояние на временной оси можно добавить в модель концепт ценности. Это явно показывает, где в домене ценность. Можно использовать маленькие зеленые и красные стикеры, чтобы отметить места, повышающие ценность и понижающие ее.
Поворотные события (Pivotal Events) – это самые важные, опорные для бизнеса события. Чаще всего это события, в которых заинтересовано наибольшее количество человек.
Параллельные потоки (swimlanes) – разделение общего потока событий потока на параллельные горизонтальные потоки с делением по некоторому принципу, например, по параллельным процессам, для разных действующих лиц.
Моделирование процесса (Process Modelling)
Цель моделирования процесса – исследовать отдельно взятый процесс, изучить его. Формирует среди участников общую ментальную модель вокруг процесса, помогает найти в процессе узкие места. Может использовать и для дизайн новых процессов, новых сервисов и линий бизнеса.
Структура Process Modelling
Некоторым элементам определения были даны ранее, ниже дадим определения недостающим:
Команда (Command) – решение, действие или намерение. Может быть инициирована действующим лицом или автоматизированным процессом. Формулируется в инфинитиве. Официальный цвет – голубой.
Правило (Policy) – это по сути реакция в формулировке «если произошло А, то делаем Б». Это может быть как ручной, так и автоматизированный процесс. Официальный цвет — сиреневый.
Модель чтения (информация, Read Model) – информация, используемая действующим лицом при принятии решения. Модель чтения определяется экспертами в предметной области. Официальный цвет — зеленый.
Процесс начинают со сбора событий, происходящих в бизнесе. Их выписывают в хронологическом порядке. Потом добавляют команды, которые эти события вызывают, и действующих лиц, которые эти команды отдают. Далее модель уточняется правилами и моделями чтения.
Простая грамматика помогает сосредоточиться на исследовании и формировать общий язык между разработкой и бизнесом. В итоге код, дизайн и архитектура получают модель, которая построена вокруг предметной области и отражает реальность.
Проектирование (Software Design)
Event Storming помещает детали технической реализации в контекст бизнес-процесса. Получается высокоуровая схема решения, от которой легко перейти к дизайну.
Software Design Event Storming дополняется еще одним элементом: агрегатом.
Агрегат (aggregate) – это термин из DDD и означает кластер сущностей, с которым мы работаем как с единым целым и который обладает обладает инвариантом для группы объектов, составляющих его, а не единичного объекта. Официальный цвет — желтый. Не всегда имеет смысл привносить в Event Storming терминологию из DDD, – в таких случаях можно использовать формулировки «ограничение» или «бизнес-правило».
Полная структура модели Event Storming на уровне Software Design:
Модель с использованием агрегата будет выглядеть следующим образом:
Агрегат, относящиеся к нему команды, события и модель чтения вполне можно выделить в микросервис. Разумеется, это далеко не единственный способ определить границы сервиса (подробнее в выступлении Сергея Баранова «Моделирование микросервисов с помощью Event Storming»), но в качестве примера вполне подходит.
Заключение
В этой, первой из цикла, статье мы познакомились с основной терминологией и основными строительными блоками Event Storming. В следующих статьях более подробно остановимся на отдельных аспектах и посмотрим на примеры сессий и какие бизнес-задачи достигнуты в рамках этих сессий.