Print Friendly, PDF & Email

Что такое DFD?

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

Моделирование процессов можно делать с помощью разных инструментов, каждый из которых имеет свои особенности и преимущества, поэтому выбор зависит от конкретной задачи и потребностей бизнеса. Про некоторые из них я уже упоминал на своем блоге, а по BPMN уже была отдельная статья. Сейчас же речь пойдет о таком инструменте как DFD (Data Flows Diagrams) — диаграммах потоков данных.

DFD —  методология графического структурного анализа, описывающая внешние по отношению к системе источники и адресаты данных, логические функции, потоки данных и хранилища данных, к которым осуществляется доступ

Аккуратная и четкая DFD может графически отобразить значительную часть требований к системе. Она может быть ручной, автоматизированной или сочетать оба способа.

Он показывает, как информация входит в систему и выходит из нее, что изменяет информацию и где она хранится. Цель DFD — показать масштаб и границы системы в целом. Она может использоваться как инструмент коммуникации между системным аналитиком и любым человеком, играющим роль в системе, который служит отправной точкой для перепроектирования системы.

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

Диаграммы потоков данных известны очень давно. В фольклоре упоминается следующий пример использования DFD для реорганизации переполненного клерками офиса, относящийся к 20-м годам.

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

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

Кроме того, DFD также могут быть использованы на уровне системы, показывая, как ИТ-приложения, базы данных и файлы взаимодействуют друг с другом внутри системы. Это особенно полезно при анализе существующих систем и проектировании новых.

Теперь давайте поговорим о движении данных. Что тут имеется в виду? С потоками данных мы сталкиваемся не только при решении IT-задач, но и в реальной повседневной жизни.

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

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

Еще одним примером (с которым мы сталкиваемся практически каждый день) есть финансовые транзакции. Вы пришли в магазин, взяли товар, пошли на кассу и начали рассчитываться карточкой на кассе магазина. Cистемы эквайринга отправляют запросы и получают ответы, а мы получаем товар. Схематически этот процесс можно представить так:

Нотация DFD

Нотация DFD включает всего лишь 4 основных элемента: процесс, внешняя сущность, хранилище данных и поток данных.

  • Процесс (англ. Process), т.е. функция или последовательность действий, которые нужно предпринять, чтобы данные были обработаны. Это может быть создание заказа, регистрация клиента и т.д. В названиях процессов принято использовать глаголы, т.е. «Создать клиента» (а не «создание клиента») или «обработать заказ» (а не «проведение заказа»). Здесь нет строгой системы требований, как, например, в IDEF0 или BPMN, где нотации имеют жестко определенный синтаксис, так как они могут быть исполняемыми. Но все же определенных правил стоит придерживаться, чтобы не вносить путаницу при чтении DFD другими людьми.
  • Внешние сущности (англ. External Entity). Это любые объекты, которые не входят в саму систему, но являются для нее источником информации либо получателями какой-либо информации из системы после обработки данных. Это может быть человек, внешняя система, какие-либо носители информации и хранилища данных.
  • Хранилище данных (англ. Data store). Внутреннее хранилище данных для процессов в системе. Поступившие данные перед обработкой и результат после обработки, а также промежуточные значения должны где-то храниться. Это и есть базы данных, таблицы или любой другой вариант организации и хранения данных. Здесь будут храниться данные о клиентах, заявки клиентов, расходные накладные и любые другие данные, которые поступили в систему или являются результатом обработки процессов.
  • Поток данных (англ. Data flow). В нотации отображается в виде стрелок, которые показывают, какая информация входит, а какая исходит из того или иного блока на диаграмме.

При этом есть два варианта графического отображения этих элементов Юрдана (Yourdon) и Гейна-Сарсона (Gane-Sarson).

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

Правила построения DFD-диаграмм

Правил для построения не так уж и много:

  1. Все потоки данных перемещаются между хранилищами через процессы. Если явного хранилища нет, нужно показывать по крайней мере промежуточные хранилища.
  2. DFD — нотация представления структуры процессов, поэтому не содержит логических операторов (XOR, AND OR) в отличие от процессно-событийных нотаций BPMN, EPC и UML-activity.
  3. Потоки данных на диаграмме должны быть названы и описаны в словаре данных. Иными словами, на диаграмме не должно быть элементов без имени.
  4. В отличие от IDEF0 для диаграммы потоков данных не важно, с какой стороны стрелка входит в блок «процесс» или «хранилище данных», а также с какой стороны выходит. Поток данных, выходящий из процесса, является его выходом или результатом, а входящий — входом.
  5. Как и в IDEF0, проектирование DFD начинается с создания контекстной диаграммы. Это верхний уровень, который кратко и емко описывает назначение и границы системы. Контекстная диаграмма относится к категории диаграмм, описывающих систему на уровне «черного ящика». Это означает, что на диаграмме отражены только внешние свойства, а не содержание системы. Потоки данных в нашем случае — это и есть внешние свойства системы. Дальнейшая декомпозиция этого «черного ящика» выполняется на следующих уровнях иерархии — вложенных диаграммах.
Контекстная диаграмма в нотации Йордана де Марко

Контекстная диаграмма содержит три основных компонента:

  • Один процессный блок — проектируемый объект (например, система).
  • Одна или несколько внешних сущностей — взаимодействующих с проектируемым объектом элементов окружения (группы пользователей, смежные системы).
  • Исходящие и входящие потоки данных.

DFD первого уровня строится как декомпозиция процесса, который присутствует на контекстной диаграмме.

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

Пример 1. Приготовление кофе в кофейном автомате

Как происходит процесс приготовления кофе в кофейном автомате.

  1. Клиент задаёт машине параметры заказа, вносит в автомат деньги.
  2. Автомат обменивается данными с внешней системой банковского эквайринга, посылая счёт на оплату.
  3. Система возвращает чек за покупку.
  4. Аппарат выдаёт кофе клиенту.

Контекстная диаграмма для этого процесса будет выглядеть следующим образом.

Пример DFD: приготовление кофе в кофейном автомате. Контекстная диаграмма
Пример DFD: приготовление кофе в кофейном автомате. Контекстная диаграмма

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

Кроме того, нужно знать, достаточно ли этих ингредиентов в аппарате. Данные об ингредиентах мы обозначим как хранилища, которые передают данные об остатках в процесс Рассчитать стоимость заказа.

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

Пример DFD: приготовление кофе в кофейном автомате
Пример DFD: приготовление кофе в кофейном автомате

Когда заказ оплачен, ингредиенты и рецепт передаются в процесс Приготовить кофе. Готовый напиток наливается в стаканчик, переданный из Склада стаканов. Это происходит в процессе Налить кофе. В результате клиент получает готовый напиток.

Пример 2. Обработка заявки клиента

Давайте представим, что у нас есть клиент, который делает заявку через сайт или по телефону. Есть менеджер, который регистрирует эту заявку. Таким образом, в системе появляются данные – клиент и его заказ. Работник склада должен это увидеть и произвести отгрузку товара с оформлением всех необходимых документов и передать документы клиенту.

Последовательность получается такая:

  1. Клиент предоставляет свои данные и заявку.
  2. Менеджер проверяет и вносит полученные данные в систему.
  3. Работник склада формирует документы, например, расходную накладную, и отгружает товар.
  4. Клиент получает товар и пакет документов к нему.

С точки зрения DFD у нас имеются:

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

Контекстная диаграмма для этого процесса будет следующая:

Пример 3. Отгрузка товара клиенту (пошаговый)

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

Действительные заказы накапливаются, группируются в зоны отправки и передаются на склад для выполнения. После того как заказ подтверждается, определяется способ доставки и ее стоимость, после чего заказ отправляется, а складские запасы уменьшаются (что находит отображение в учете). Копия упаковочного листа поступает в бухгалтерию, где создается и отправляется счет-фактура (инвойс) клиенту. Потом бухгалтер разносит банковские выписки и привязывает оплаты к инвойсам. От клиентов могут поступать жалобы в службу поддержки. Они изучают запрос и отвечают клиенту как можно скорее. Любое действие предпринятые службой поддержки клиентов, которые влияют на бухгалтерский учет находить в нем свое отображение.

Давайте разложим этот процесс на процессы нижнего уровня используя:

  • Глаголы-объекты (в активном залоге)
  • Преобразующие действия — Указанное действие должно сделать что-то, что в конечном итоге будет представлено в виде данных, то есть оно преобразует входящие данные в исходящие данные.
  • Область действия
Действие Правило 1 «Глагол-объект» Правило 2 «Преобразующие действия» Правило 3 «Область действия» Внутренний процесс
Клиент начинает активность Триггер активности Нет Снаружи Нет
мы обрабатываем заказы, жалобы и платежи Отправка документов Нет Внутри Нет
Поступление заказа Обработка почты Да Внутри Да
мы подтверждаем кредитный лимит клиента Валидация кредитного лимита Да Внутри Да
мы подтверждаем наличие товаров Подтверждения наличия товаров Да Внутри Да
Подтверждение заказа Аккумулирование подтвержденных заказов Нет Внутри Нет
и группировка по зонам отправки Группировка заказов Да Внутри Да
Передача на склад Передача подтвержденных заказов Нет Внутри Нет
Заказ выполнен Выполненный заказ ? Снаружи Нет
………. ……… …….. …….. ……..

После проведения анализа мы выяснили, что с заказами связано 4 внутренних процесса организации:

  • обработка заказа поступившего на почту
  • проверка кредитного лимита
  • проверка наличия товаров
  • группировка подтвержденных заказов

Итак у нас есть клиент от которого поступает заказ к нам на почту (на почту могут поступать и жалобы от него и информация о совершении платежа). Поскольку нас интересуют заказы, этот поток данных отобразим справа от процесса.

Для того, чтобы проверить информацию о кредитном лимите клиента, мне где-то эту информацию нужно взять. Добавим на нашу схему процесс «Проверка кредитного лимита» и хранилище «Клиенты»

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

Для проверки наличия товара нам нужно обратиться к хранилищу «Склад», где хранится эта информация. Также нам нужно хранилище, где будет храниться информация о подтвержденных заказах.

Если выявляется, что есть путаница с каким-то наименованием (например на складе не нашелся товар с указанным артикулом) — такие заказы считаются недействительными и отправляются в службу поддержки для уточнения у клиента. В ту же службу поддержки будут поступать и жалобы от клиентов.

После того как Служба поддержки уточнила у клиента детали заказа и если все ок заказ подтверждается и отправляется в хранилище подтвержденных заказов. Подтвержденные заказы группируются по зонам отправки и потом отправляются на склад для отгрузки. Платежи давайте отправим в бухгалтерию. Детализировать работу бухгалтерии  я сейчас не буду — остановимся на таком варианте диаграммы.

С помощью чего рисовать диаграммы

Можно рисовать DFD-диаграммы, используя привычные вам инструменты. Для этого подойдут, например, всем известные MS Visio или Draw.io. Но для выстраивания системы с разными уровнями детализации потребуются специализированные программы для моделирования.

Существует множество редакторов для построения DFD-диаграмм. Самым популярным является Ramus. Этот продукт имеет бесплатную версию, доступен в сетевом и локальном вариантах. StarUML — проект с открытым кодом, ещё один ходовой инструмент для создания диаграммы потоков данных. Для командной работы можно использовать облачное решение Lucidchart.

Основные ошибки при разработке DFD-диаграмм

1. Отсутствие контекстной диаграммы

На первый взгляд диаграмма с одним процессным блоком и несколькими внешними сущностями может показаться лишней. Некоторые аналитики сразу переходят к детализированным DFD. Однако построение контекстной диаграммы необходимо! При помощи контекстной диаграммы мы определяем границы и так называемый scope — объем будущей проектируемой системы.

Контекстная диаграмма наглядно отображает, что находится вне системы и даёт ответ на главный вопрос, какой внутренний процесс мы будем детализировать на диаграммах нижних уровней. Это помогает избежать одну из популярных ошибок проектирования систем, когда хочется «объять необъятное».

2. Неименованные потоки данных

Ещё одна часто встречающаяся ошибка — отсутствие названий у входящих и исходящих потоков. Каждая стрелка на схеме должна иметь название.

3. Отсутствие процессов


Наличие процесса — один из основополагающих принципов моделирования DFD-диаграммы. Когда на диаграмме отражен только обмен данными между хранилищами без привязки к процессу, непонятно, каким образом и для чего хранилища передают данные друг другу.4. Отсутствие внешних сущностейВажно помнить, что DFD-диаграмма должна содержать одну или несколько внешних сущностей — источников входящих в процесс данных.5. Путаница между хранилищами и потоками данныхЭтой ошибки можно избежать, помня, что данные в DFD представлены в двух состояниях. Данные в состоянии покоя помещаются в хранилища, а данные в состоянии движения отражаются при помощи входящих и исходящих потоков.6. Стремление показать логику выполнения процессов.DFD – это нотация, предназначенная для моделирования структуры информационной системы, но не её логики. Поэтому будет ошибкой привязывать элементы DFD-диаграммы к временным шкалам или использовать условные операторы XOR, OR, AND.

7. Некорректное название элементов нотации

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

8. Отсутствие выходов у процессов

Функциональное моделирование помогает рассматривать бизнес-модель с точки зрения результативности. При моделировании системы мы исходим из того, что имеем на входе, и того, что желаем получить на выходе. Иными словами, процесс — это действие с заданным результатом. В DFD хорошей практикой считается визуально располагать сущности одного типа на одном уровне, обычно по горизонтали. Тогда становится очевидным правило для процесса «один вход — один выход».

Источники для написания статьи

  1. Структурные модели бизнеса — DFD-технологии — А.Н. Калашян, Г.Н.Калянов
  2. Консалтинг при автоматизации предприятий — Г.Н.Калянов
  3.  DFD by Example — Thomas and Angela Hathaway
  4. Блог Рамиля Кинзябулатова
  5. habr.com
  6. systems.education
  7. Прочие источники в интернете