Или ментальные «ловушки», которые мешают аналитикам использовать нотации.

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

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

В этой статье вы узнаете:
  • о том, что думают о BPMN системные аналитики и их команды;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Product owner

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

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

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

Программист

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

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

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 — Данные. Это могу быть объекты данных, базы данных. Например, сервис сформировал список депозитов и отправил их для отображения на сайте пользователю.

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

Как построить диаграмму за 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 диаграммы текстом, чтобы сэкономить время»

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

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

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

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

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

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

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

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

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

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

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

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

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

А что в итоге?

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

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

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

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

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

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

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

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

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

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

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

Комментарии (13)


  1. Tarakanator
    24.06.2022 14:18
    +1

    Смотрю схему https://habrastorage.org/r/w1560/getpro/habr/upload_files/042/d66/a5f/042d66a5f34e041acdf9d9d7d65749b4.jpg
    Допустим у нас есть неактивные депозиты.
    В таком случае мы должны их подсветить.
    Вопрос: где мы их подсвечиваем, если список депозитов выводится только в случае отсутствия неактивных депозитов?

    Как понять блок не показывать виджет?
    Именно "не показывать", а не "убрать"
    Ничего не делать? зачем тогда этот блок нужен?


    1. anna_ovzyak Автор
      24.06.2022 19:43

      Да, стоит переименовать действие "В списке подсветить неактивные депозиты" на "Показать список депозитов активных и подсвеченными неактивными", а действие " Показать список" Заменить на "Показать список активных депозитов".

      Не показывать и убрать в данном случае синонимы, это значит информации по депозитам не должно быть на сайте


      1. Bronx
        27.06.2022 00:47

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

        Просто представьте, что помимо «активный/неактивный» у вас завтра появится ещё 4 категории депозитов и 4 разновидности их подсветок. Сколько ветвлений вам придётся сделать? 2 в пятой степени, для каждой возможной комбинации (это в лучшем случае, если все категории — бинарные)?

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

        Если список депозитов пуст, скрыть виджет.
        Список депозитов отсортировать по [времени|активности|...].
        Для каждого элемента списка депозитов:
            Если депозит неактивный, то подсветить.
            ...
        


        P.S. Кроме того, блок «Получить список депозитов» должен именоваться как «Запросить список депозитов», потому что событием, передающим управление от сайта к сервису, является «запрос», а «получение» — это событие-ответ, следущее за запросом, и там могут быть варианты, включающие «нет ответа».


        1. anna_ovzyak Автор
          27.06.2022 09:58

          Насчёт переименования, здесь именно показать список, потому что в сервисе есть сформиоовать. Нужно в сервисе показать отправить, но для упрощения схемы это действие пропустила.

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


  1. dm_deko
    24.06.2022 16:11
    +2

    По моему опыту не стоит усложнять варианты ветвления: как только появляются коллекции "крестов" внутри ромбов - заказчик "плывет". Я ставлю ромб, внутри условие, например "депозиты есть?" и два выхода: да/нет. Наглядно.


    1. anna_ovzyak Автор
      24.06.2022 17:14

      Спасибо за комментарий! ???? да, нагладность это большой плюс в схемах


  1. alexandertortsev
    24.06.2022 23:41

    Bpmn, как и любая другая блок-схема, не работает, если участники не знают контекст и не погружены в значение значков, при этом считается, что bpmn отличается от блок-схем как раз одинаковым пониманием. На самом деле это не так, что и показал ваш опыт. По схеме нельзя создать код, нельзя описать идею, это просто некая отрисовка основных моментов и возможно каких-то опорных точек в процессе. Даже если все и все понимают и уже тысячу раз проговорили детали, технология и схемотехника не заменит подход человека к этим задачам. Ну и bpmn нужно уметь знать и понимать не хуже, чем уметь сопоставлять разные трактовки святого писания, а это умеет делать не так много людей.


    1. FactGS
      25.06.2022 16:46

      Не уверен, что bpmn это нотация для системных аналитиков, она скорее нужно бизнес-аналитикам. Системные аналитики по моему наблюдению используют flowchart, idef0, uml диаграммы. Если bpmn диаграмма нужна для команды разработки, то скорее для общего понимания бизнес-процесса, но для технического задания лучше использовать uml, idef0, flowchart.


      1. anna_ovzyak Автор
        25.06.2022 16:48

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


  1. cudu
    25.06.2022 09:26
    +1

    Я бы аналитиков заставлял рисовать схемы для себя(для начала) - если получился осьминог, то задачу точно надо упрощать до щупальца. А потом уже презентовал там команде....Да и команде оно не надо...разрабу нужно щупальце, а оно укладывается в понятие сценарий, для которого сложные инструменты обычно только вредят.


    1. anna_ovzyak Автор
      25.06.2022 16:49

      Хорошее сравнение???? да, схемы осьминоги сложно читать


  1. Unholy_jazon
    27.06.2022 09:37

    У вас в схеме 2 (uml) не используются варианты, что искусственно ухудшает uml в пользу bpmn


    1. anna_ovzyak Автор
      27.06.2022 09:52

      Спасибо за комментарий! Вы правы, что не добавлены варианты, но на uml их редко используем, чаще показывается как альтернативный сценарий