BPMN не в теории, а на практике

От системного аналитика требуют знание нотации BPMN (Business Process Model and Notation). А действительно ли ей пользуются на практике? Если нет, то почему?

Этот вопрос подтолкнул меня провести опрос среди своих коллег — системных аналитиков. Большинство ребят считают, что нотации необходимы в работе, но на практике используют меньше половины. Почему возник такой парадокс?

d9137e7370f3306c4ed775559ad2e3b0.pngВ этой статье вы узнаете:

  • о том, что думают о BPMN системные аналитики и их команды;

  • зачем нужен BPMN;

  • об основных элементах BPMN и как их толковать;

  • с чего начинать в «рисовании» схем: 5 шагов и схема готова;

  • как презентовать схему разработчикам, чтобы её использовали;

  • немного об инструментах BPMN.

Результаты опроса

На вопросы отвечали 45 системных аналитиков четырёх уровней.

Кто ты?Кто ты?

86,7% из них считает, что BPMN-нотации необходимы системному аналитику.

Нужно ли системному аналитику знать BPMN-нотацию?Нужно ли системному аналитику знать BPMN-нотацию?

Но при этом в работе их использует меньше половины.

Ты используешь в работе BPMN диаграммы?Ты используешь в работе BPMN диаграммы?

Из оставшейся половины нотации используют как схему для визуального отображения процесса.

Для каких целей и задач используешь bpmn?Для каких целей и задач используешь bpmn?

Почему такое расхождение? Почему аналитики, которые считают нотации необходимыми, их не применяют?

В чем сложность работы с нотацией?В чем сложность работы с нотацией?

Три самых популярных ответа:

  • В схему никто, кроме рисующего не смотрит.

  • Разное толкование обозначений. 

  • Не знаю с чего начать.

Остальные ответы про 200 с лишним элементов, сложность нотаций, их декомпозицию, а ещё отсутствие опыта в «рисовании», можно отнести к этим трём пунктам.

Опрос подтолкнул меня, взять мою прошлую статью и переписать её так, чтобы закрыть эти проблемы, насколько смогу. 

№1. «Не знаю с чего начать» — показываем на практике

Давайте попробуем закрыть проблему «Не знаю с чего начать» и начнём с основных элементов.

BPMN позволяет аналитику, product owner (PO) и разработчику общаться на одном языке с помощью условных обозначений, который приняты в нотации. 

В отличие от обычной блок-схемы, она содержит распределение по ролям, передаваемые данные и сообщения, что позволяет ей детальнее показывать бизнес-процессы.

Представьте, что вы едете по дороге, а дорожные знаки каждый город ставит какие хочет. В такой ситуации, сложно ориентироваться, поэтому все дорожные знаки единообразны и одинаковы в каждом городе по всей стране. Так же и с BPMN-схемой: она позволяет команде понимать друг друга и предотвратить споры и конфликты, потому что все ориентируются на понятные и единообразные «дорожные знаки».

Представим ситуацию: на командном груминге PO воодушевлённо рассказывает аналитику, как важно показывать на сайте список депозитов. Аналитик послушал, записал все требования и отдал задание в разработку. Но когда фичу выкатили, результат оказался не таким, на какой рассчитывал РО.

c3cc2c738a0b58415425cd125eb98e50.png«Как же так?!» — разводит руками PO и не понимает как так вышло, что сделали не то, о чём он говорил.

Product owner

dc2d47009a4b988e9228cc0649aa3034.png«В доке описан алгоритм работы» — говорит системный аналитик.

Системный аналитик

1f9ed4d4eba9b8cf78b8b39bdc4e65c0.png«Я реализовал задачу по документации».

Программист

Вернёмся назад в прошлое, на несколько дней раньше. В нашей истории аналитик описал требования в формате текста:

«Пользователь заходит на сайт. Сервис находит список депозитов. Если депозиты не найдены, то пользователь не видит виджет, иначе показываем виджет со списком. В списке могут быть не доступные для пользователя депозиты, так как в калькуляторе выбраны определенные условия»

PO, проговаривая пользовательский путь, не учёл, что клиентам нужно подсветить депозиты, доступные по выбранным условиям и недоступные. Аналитик описал пользовательский путь текстом, и они с PO не заметили одно ответвление процесса.

Какое ветвление процесса не учли? Что в списке визуально будут отображены депозиты, которые не доступны пользователю при определенных условиях в калькуляторе, но по тексту программист этого не понял. Команда избежала бы конфликта, если бы аналитик зарисовал с помощью BPMN схему и согласовал его с PO и программистом.

Основные элементы BPMN

Вернёмся к нашим «дорожным знакам». Представьте, что BPMN — это язык, а элементы это слова. У «слов» есть обозначения и значения. Вот несколько основных элементов нотаций.

Pool — Пул. Определяет границы процесса и описывает один процесс на диаграмме. Пул также обозначает систему или роль.

Lanes — Дорожка. Это исполнители действий. Дорожки содержаться в пуле, в рамках одного пула могут находиться несколько дорожек. Дорожки указывают участников процессов в пуле.

Pool — Пул, и Lanes — ДорожкаPool — Пул, и Lanes — Дорожка

Event — Событие. Это то, что происходит в течение процесса. События могут происходить как в начале процесса, так и в конце и где-то в середине. Событие — это важное состояние в бизнес-процессе, оно влияет на дальнейшее развитие бизнес-процессов.

Event — СобытиеEvent — Событие

Activity — Действия. Это работа, которую выполняет исполнитель на каком-то этапе бизнес-процесса. Обозначаются прямоугольниками, внутри которых помещается задача действия. Задача — это простое действие. Она может быть абстрактной, сервисной или пользовательской. Например, нажимает пользователь на кнопку «Отправить» — это пользовательское действие.

Activity — ДействияActivity — Действия

Gateway — Шлюз. Элемент показывает ветвление, слияние процесса. Шлюз — это узел, который «ветвит» процесс, поэтому изображается ромбом. Например, когда пользователь выбирает депозит и видит его, то может перейти на следующий процесс — совершить какие-то действия с депозитами. Если они не показываются, то это уже другой процесс.

Gateway — Шлюз (ромбик)Gateway — Шлюз (ромбик)

Flow — Поток. Связывает элементы процесса: события, процессы, шлюзы. Обозначается стрелкой.

Flow — ПотокFlow — Поток

Data — Данные. Это могу быть объекты данных, базы данных. Например, сервис сформировал список депозитов и отправил их для отображения на сайте пользователю.

77f3430a3338e1b16723a6d4b456ebfe.jpg

Элементов нотации гораздо больше, но для начала хватит базовых.

Как построить диаграмму за 5 шагов

Давайте построим диаграмму для нашей задачи по списку депозитов вместе с аналитиком.

1️⃣ Выделяем участников процесса (lanes).

Это может быть Пользователь, Сайт, Сервис.

2️⃣ Находим события начала (start) и окончания (end) процесса.

Это важный этап — запланировать начало и конец процесса, чтобы обозначить его рамки, иначе процесс будет бесконечным, а нам это не нужно. Start будет начинать пользователь, а end будет несколько у сайта, так как процесс имеет ветвления.

3️⃣ Укажем действия участников внутри lanes.

  • Пользователь открывает страницу сайта.

  • Сайт отправляет запрос на получение информации.

  • Сервис собирает данные для ответа. Если есть депозиты, сайт показывает виджет. 

  • Дальше проверяет все ли депозиты доступны. Если не все, то подсвечивает их визуально для пользователя.

Если участников несколько, то сначала описываем действия одного участника, потом другого.

4️⃣ Нарисуем потоки данных (flow) и укажем сами данные (data).

В нашей схеме будет поток управления и данные со списком депозитов.

5️⃣ Обозначим на схеме шлюзы (gateway). 

Будет 2 ветвления:

Получили вот такую диаграмму.

BPMN диаграмма процессаBPMN диаграмма процесса

А что же было не так с текстовым описание процесса от аналитика? Теперь, когда у нас есть диаграмма, видно, что в тексте не учли ветвление «Есть ли активные депозиты?» На схеме это наглядно видно, что по тексту может быть неочевидно.

Инструменты. Для рисования я использовала инструмент storm.Bpmn2.ru, потому что он мне удобен (скачать файл можно по ссылке). В нём есть основные элементы, проверка диаграммы, возможность скачать *.jpg, *.bpmn. Но, по результатам моего опроса, он не самый популярный.

Большинство аналитиков применяют draw.io, Visio и Camunda Modeller.

Инструменты для bpmnИнструменты для bpmn

Есть еще и другие, которые могут быть удобнее лично вам, но они оказались не такими популярными, например, drawio, Bpmn.io, Camunda Modeler или Chor-js (demo).

№ 2. «В схему никто, кроме рисующего не смотрит»

Этот ответ подтолкнул меня запустить опрос в своей команды и понять, а правда ли в схему никто не смотрит. На опрос ответило 14 человек с разными ролями.

Какая у тебя роль?Какая у тебя роль?

Большинство — 78,6% — всё же заглядывают в схему в документах аналитиков.

В документе от аналитиков вы смотрите на bpmn схемы?В документе от аналитиков вы смотрите на bpmn схемы?

Получилось, что в схемы команда смотрит. Может быть проблема в разном толковании этих схем?

№ 3. «Разное толкование схем»

Для проверки этой проблемы я провела опрос внутри команды. Всё те же 14 человек попросила выбрать понятную им схему в BPMN и UML Sequence.

Примечание. Как нарисовать UML Sequence описано в статье «Plantuml в работе системного аналитика. Пиши uml диаграммы текстом, чтобы сэкономить время»

Как выглядела схема в опросе (в двух вариантах).

c929bb5cd77412343b1224f2a99a21b6.jpg

Здесь мнения разделились.

По какой схеме проще понять процессПо какой схеме проще понять процесс

Но в проверочном вопросе, большинство выбрало правильный ответ, значит BPMN схему всё же понимают и разного толкования нет.

Что покажет сайт пользователю, если он выбрал такие параметры, что часть депозитов ему не доступна?Что покажет сайт пользователю, если он выбрал такие параметры, что часть депозитов ему не доступна?

У меня есть ещё данные опроса на Хабре. Большинство читателей используют BPMN чаще, чем остальные нотации, значит они всё же понятны.

Результаты опроса на habrРезультаты опроса на habr

По моему опыту, проблема не в толковании, а в недоинформированности об элементах схем и в сложности самих схем.

По первому пункту решение в том, чтобы уделить немного времени (об этом ниже) на рассказ об элементах, чтобы аналитики, РО и программисты находились в одном контексте. Описывать действия тоже стоит как можно проще.

Во втором случае решение в том, чтобы не создавать сложные диаграммы с множеством ветвлений. Сложная диаграмма не значит хорошая. Избыточное количество подпроцессов убивает информативность диаграммы.

Как презентовать BPMN команде?

Чтобы не возникало проблем с толкованием (а скорее, чтобы аналитику успокоить самого себя), стоит уделить описанию элементов и их взаимодействия немного времени, тогда нотации сразу становятся наглядными. Конечно для этого нужно время и отдельное мероприятие. По моему опыту, лучший вариант презентации схемы — на груминге/PBR команды. Если просто отправить документ в личку и ждать, что программист его прочитает и поймет, то можно не дождаться.

Примечание. Есть ещё вариант, чтобы разработчик посмотрел схему, нужно сделать так, чтобы она ему стала нужна для разработки кода. Например, о таком варианте рассказывал Дмитрий Жезлов на митапе Backend Stories (Java) в докладе «Zeebe для Банка в 2021 году».

А что в итоге?

Я верю, что после прочтения статьи у вас не возникнут три основные проблемы:

  • В схему никто, кроме рисующего не смотрит.

  • Разное толкование обозначений. 

  • Не знаю с чего начать.

Потому что на практике разработчики понимают диаграммы, элементы не такие сложные, чтобы в них долго разбираться. А диаграмму можно построить довольно быстро, особенно, если её не усложнять.

Единственная трудность возникает в:

  • Глубоком изучении BPMN, её элементов и абстракций. Я потратила довольно много времени на изучение, но наглядность схем бизнес-процессов сейчас оправдали эти «вложения».

  • Презентации. Но это уже вопрос другого порядка, скорее организаторский или из области психологии.

Решать, конечно, вам — использовать или нет BPMN диаграммы в работе, но теперь вы прочитали про практический опыт в одной из команд Альфа-Банка. Надеюсь, было полезно.

Сейчас нам в Альфа-Банк нужен системный аналитик. Если хотите, чтобы в команде смотрели и понимали ваши схемы, приходите:)

Статьи, которые могут быть интересны:

© Habrahabr.ru