- Диаграммы потоков данных (Data Flow Diagrams – DFD)
- Нотации, используемые для описания DFD диаграмм
- Пример DFD-схем в двух нотациях
- Нотация Йордана-Де Марко
- Нотация Гейна-Сарсона
- Внешняя сущность
- Системы и подсистемы
- Процесс
- Накопитель данных
- Поток данных
- Цель:
- Рекомендации к построению:
- Проектирование систем:
- Сложные системы:
- Спецификация:
- Языки спецификаций:
- Описание DFD-диаграмм
- Потоки данных
- Пример 1. Приготовление кофе в кофейном автомате
- Пример 2. Обработка заявки клиента
- Пример 3. Отгрузка товара клиенту (пошаговый)
- С помощью чего рисовать диаграммы
- Основные ошибки при разработке DFD-диаграмм
Диаграммы потоков данных (Data Flow Diagrams – DFD)
Выполнила студентка гр. БПИ21-01 Сергеева С.Е
Проверил: Кишкан В.В
Диаграммы потоков данных (DFD) представляют собой иерархию функциональных процессов, связанных потоками данных. Цель такого представления — продемонстрировать как каждый процесс преобразует свои входные данные в выходные, а также выявить отношения между этими процессами.
Нотации, используемые для описания DFD диаграмм
Для описания DFD диаграмм, используется две основные нотации: нотация Йордана-Де Марко и Гейна-Сарсона. Основное отличие заключается в графическом представлении элементов диаграмм.
Пример DFD-схем в двух нотациях
Нотация Йордана-Де Марко
- Внешние сущности
- Системы и подсистемы
- Процесс
- Накопитель данных
- Поток данных
Нотация Гейна-Сарсона
- Внешняя сущность
- Системы и подсистемы
- Процесс
- Накопитель данных
- Поток данных
Внешняя сущность
- Представляет собой материальный объект или физическое лицо, являющееся источником или приемником информации (например, клиент, поставщик, склад).
- Внешняя сущность находится за пределами границ анализируемой системы.
Системы и подсистемы
- При построении модели сложной системы она может быть представлена в самом общем виде на так называемой контекстной диаграмме в виде одной системы, либо в виде ряда подсистем.
- Наименование системы/подсистемы представляется в виде словосочетания с отглагольным существительным.
Процесс
- Представляет собой преобразование входных потоков данных в выходные в соответствие с определенным алгоритмом.
- Процесс именуется в виде словосочетания с активным глаголом в неопределенной форме, за которым следует существительное в винительном падеже.
Накопитель данных
- Абстрактное устройство для хранения информации.
- Накопитель данных в общем случае является прообразом будущей базы данных.
Поток данных
- Определяет информацию, передаваемую через некоторое соединение от источника к приемнику.
- Поток данных на диаграмме обозначается линией, которая показывает направление потока. Каждый поток данных имеет имя, отражающий его содержание.
Цель:
сделать описание системы ясным и понятным на каждом уровне детализации, а также разбить описание на части с точно определенными отношениями между ними.
Рекомендации к построению:
- Размещать на каждой диаграмме от 3 до 6-7 процессов.
- Не загромождать диаграммы несущественными на данном уровне деталями.
- Декомпозицию потоков данных осуществлять параллельно с декомпозицией процессов. Эти две работы должны выполняться одновременно, а не одна после завершения другой.
- Выбирать ясные, отражающие суть дела имена процессов и потоков, при этом стараться не использовать аббревиатуры.
Проектирование систем:
При проектировании относительно простых систем строится единственная контекстная диаграмма или DFD – 0-го уровня со звездообразной топологией, в центре которой находится так называемый главный процесс, соединенный с приемниками и источниками информации, посредством которых с системой взаимодействуют пользователи и другие внешние системы.
Сложные системы:
Для сложных систем (признаками сложности могут быть наличие большого количества внешних сущностей десять и более) строится иерархия контекстных диаграмм. При этом контекстная диаграмма верхнего уровня содержит не единственный главный процесс, а набор подсистем, соединенных потоками данных.
Контекстные диаграммы следующего уровня детализируют контекст и структуру подсистем. DFD 1-го уровня дает более детальное представление об элементах контекстной схемы. Разбив обобщенный процесс контекстной схемы на подпроцессы, можно выделить основные функции системы.
Спецификация:
Спецификация является конечной вершиной иерархии DFD. Решение о завершении детализации процесса и использовании спецификации принимается исходя из следующих критериев:
- наличия у процесса относительно небольшого количества входных и выходных потоков данных (2-3 потока)
- возможности описания преобразования данных процессов в виде последовательного алгоритма
- выполнения процессом единственной логической функции преобразования входной информации в выходную
- возможности описания логики процесса при помощи спецификации небольшого объема (не более 20-30 строк).
Языки спецификаций:
Языки спецификаций могут варьироваться от структурированного естественного языка или псевдокода до визуальных языков моделирования. Структурированный естественный язык применяется для понятного, достаточно строгого описания спецификаций процессов. При его использовании приняты следующие соглашения:
- логика процесса выражается в виде комбинации последовательных конструкций, конструкций выбора и итераций
- глаголы должны быть активными, недвусмысленными и ориентированными на целевое действие (заполнить, вычислить, извлечь, а не модернизировать, обработать)
- логика процесса должна быть выражена четко и недвусмысленно.
### Моделирование потоков данных (процессов)
Источники информации (внешние сущности) порождают информационные потоки (потоки данных), переносящие информацию к подсистемам или процессам. Те в свою очередь преобразуют информацию и порождают новые потоки, которые переносят информацию к другим процессам или подсистемам, накопителям данных или внешним сущностям - потребителям информации. Таким образом, основными компонентами диаграмм потоков данных являются:
- внешние сущности;
- системы/подсистемы;
- процессы;
- накопители данных;
- потоки данных.
## Что такое DFD?
Каждый бизнес-процесс имеет свою уникальную последовательность шагов, которые могут быть достаточно простыми или достаточно сложными. В ходе процесса что-то входит, обрабатывается и преобразуется, чтобы создать что-то новое или достичь какой-то цели. Важно отметить, что каждый процесс требует входных данных или ресурсов, которые могут быть в различных формах, например, информационные данные или физические предметы, необходимые для выполнения действий в процессе.
Входные данные могут поступать из разных источников, как внутренних, так и внешних, и могут быть переданы через различные каналы передачи данных. Поэтому для более эффективного управления бизнес-процессами, необходимо ясно понимать, какие данные входят в процесс и как они взаимодействуют в рамках этого процесса.
### Моделирование процессов
Моделирование процессов можно делать с помощью разных инструментов, каждый из которых имеет свои особенности и преимущества, поэтому выбор зависит от конкретной задачи и потребностей бизнеса. Про некоторые из них я уже упоминал на своем блоге, а по BPMN уже была отдельная статья. Сейчас же речь пойдет о таком инструменте как DFD (Data Flows Diagrams) – диаграммах потоков данных.
DFD — методология графического структурного анализа, описывающая внешние по отношению к системе источники и адресаты данных, логические функции, потоки данных и хранилища данных, к которым осуществляется доступ.
### Аккуратность и четкость
Аккуратная и четкая DFD может графически отобразить значительную часть требований к системе. Она может быть ручной, автоматизированной или сочетать оба способа. Он показывает, как информация входит в систему и выходит из нее, что изменяет информацию и где она хранится. Цель DFD – показать масштаб и границы системы в целом. Она может использоваться как инструмент коммуникации между системным аналитиком и любым человеком, играющим роль в системе, который служит отправной точкой для перепроектирования системы.
### Бизнес-моделирование
Кроме того диаграммы потоков данных являются мощным инструментом бизнес-моделирования, позволяющим описывать бизнес-процессы с точки зрения потоков и преобразования данных. Это особенно полезно в тех случаях, когда вы хотите лучше понимать, как данные перемещаются внутри бизнес-процесса, и какие преобразования с ними происходят.
Диаграммы потоков данных известны очень давно. В фольклоре упоминается следующий пример использования DFD для реорганизации переполненного клерками офиса, относящийся к 20-м годам.
Описание DFD-диаграмм
Осуществлявший реорганизацию консультант обозначил кружком каждого клерка, а стрелкой – каждый документ, передаваемый между ними. Используя такую диаграмму, он предложил схему реорганизации, в соответствии с которой двое клерков, обменивающиеся множеством документов, были посажены рядом, а клерки с малым взаимодействием были посажены на большом расстоянии. Так родилась первая модель, представляющая собой потоковую диаграмму – предвестника DFD.
Одним из ключевых преимуществ использования DFD является возможность создания моделей на разных уровнях детализации. На бизнес-уровне, DFD позволяют представлять бизнес-процессы и бизнес-данные, что позволяет бизнес-аналитикам и менеджерам лучше понимать, как работает бизнес и какие могут быть узкие места.
Кроме того, DFD также могут быть использованы на уровне системы, показывая, как ИТ-приложения, базы данных и файлы взаимодействуют друг с другом внутри системы. Это особенно полезно при анализе существующих систем и проектировании новых.
Потоки данных
Теперь давайте поговорим о движении данных. Что тут имеется в виду? С потоками данных мы сталкиваемся не только при решении задач, но и в реальной повседневной жизни.
Одним из примеров потока данных может стать документооборот, когда входящие обращения попадают в ту или иную папку (каталог или журнал), а часть обращений находится в работе, на подписании или в архиве.
Другим примером может стать товарооборот, когда перемещаются со склада в магазины и обратно. Или это может быть товарооборот с дополнительным потоком данных для дистанционной торговли: торговая площадка — банк — торговая площадка.
Еще одним примером (с которым мы сталкиваемся практически каждый день) есть финансовые транзакции. Вы пришли в магазин, взяли , пошли на кассу и начали рассчитываться карточкой на кассе магазина. Cистемы эквайринга отправляют запросы и получают ответы, а мы получаем товар. Схематически этот процесс можно представить так:
| Элемент | Описание |
|---|---|
| Процесс | Действие |
| Внешняя сущность | Источник или получатель |
| Хранилище данных | Хранилище |
| Поток данных | Передача данных |
Правила для построения не так уж и много:
- Контекстная диаграмма в нотации Йордана де Марко
- Контекстная диаграмма содержит три основных компонента:
- Процесс
- Внешняя сущность
- Поток данных
При этом есть два варианта графического отображения этих элементов Юрдана (Yourdon) и Гейна-Сарсона (Gane-Sarson).
С помощью этой нотации можно описать любые действия и она может дать понимание того из чего должна состоять система, но в то же время DFD не может быть инструментом для описания бизнес-процесса. В ней нет такого параметра как время, нет понятия условия и “развилки”, которая может возникнуть при том или ином условии. В DFD мы рассматриваем откуда появляются данные, какие данные нужны, их обработку и куда результаты отправить. Т.е. в этой нотации описывается не столько непосредственно процесс, сколько движение потоков данных. Для работы с процессами можно использовать BPMN или IDEF3.
DFD первого уровня строится как декомпозиция процесса, который присутствует на контекстной диаграмме.
Построенная диаграмма первого уровня также имеет множество процессов, которые в свою очередь могут быть декомпозированы в DFD нижнего уровня. Таким образом строится иерархия DFD с контекстной диаграммой в корне дерева. Этот процесс декомпозиции продолжается до тех пор, пока процессы могут быть эффективно описаны с помощью коротких (до одной страницы) миниспецификаций обработки (спецификаций процессов). Теперь давайте рассмотрим несколько примеров (а один я распишу пошагово).
Пример 1. Приготовление кофе в кофейном автомате
Как происходит процесс приготовления кофе в кофейном автомате.
Контекстная диаграмма для этого процесса будет выглядеть следующим образом.
Пример DFD: приготовление кофе в кофейном автомате. Контекстная диаграмма
Теперь давайте сделаем декомпозицию данного процесса. Тут важно понять, что в первую очередь необходимо рассчитать стоимость заказа на основании параметров заказа: сколько требуется воды, сиропа, зерен и сахара.
Кроме того, нужно знать, достаточно ли этих ингредиентов в аппарате. Данные об ингредиентах мы обозначим как хранилища, которые передают данные об остатках в процесс Рассчитать стоимость заказа.
Стоимость ингредиентов передаётся в процесс расчёта из соответствующей базы. Результатом процесса является рассчитанная стоимость заказа, которая попадает в хранилище Счёт на оплату. Дальше стоимость заказа поступает в процесс Оплатить заказ, клиент вносит деньги, а сам процесс взаимодействует с внешней сущностью Система банковского эквайринга. Процесс направляет счёт на оплату и получает чек за покупку.
Когда заказ оплачен, ингредиенты и рецепт передаются в процесс Приготовить кофе. Готовый напиток наливается в стаканчик, переданный из Склада стаканов. Это происходит в процессе Налить кофе. В результате клиент получает готовый напиток.
Пример 2. Обработка заявки клиента
Давайте представим, что у нас есть клиент, который делает заявку через сайт или по телефону. Есть менеджер, который регистрирует эту заявку. Таким образом, в системе появляются данные – клиент и его заказ. Работник склада должен это увидеть и произвести отгрузку товара с оформлением всех необходимых документов и передать документы клиенту.
Последовательность получается такая:
С точки зрения 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 хорошей практикой считается визуально располагать сущности одного типа на одном уровне, обычно по горизонтали. Тогда становится очевидным правило для процесса «один вход — один выход».
Источники для написания статьи
