DFD-диаграмма: полное руководство по созданию и анализу

Иван Корнев·24 июня 2026·6 мин

DFD-диаграмма (Data Flow Diagram) — это инструмент визуализации того, как информация перемещается внутри системы: от внешних источников через процессы преобразования к хранилищам и конечным получателям. В отличие от блок-схем, DFD не показывает логику принятия решений или последовательность операций во времени, а фокусируется исключительно на движении данных. Это делает её идеальным инструментом для согласования требований между бизнесом и разработчиками на ранних этапах проектирования.

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

Оглавление

  1. Базовые элементы DFD
  2. Сравнение нотаций: Yourdon-Coad и Gane-Sarson
  3. Пошаговый алгоритм рисования DFD
  4. Как правильно читать диаграмму
  5. Частые ошибки при моделировании
  6. Инструменты для создания DFD
  7. FAQ

Базовые элементы DFD

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

  • Внешняя сущность (External Entity). Источник или получатель данных, находящийся за пределами исследуемой системы. Это может быть человек (клиент, менеджер), другая информационная система или аппаратное устройство. На диаграмме обозначает границу взаимодействия системы с внешним миром.
  • Процесс (Process). Действие, которое преобразует входящие данные в исходящие. Процесс всегда имеет вход и выход. Например, «Проверка кредита» получает данные заявки и выдаёт решение «одобрено/отклонено». Процесс не может просто хранить данные или передавать их без изменения.
  • Хранилище данных (Data Store). Место, где данные сохраняются для последующего использования. Это может быть база данных, файл, таблица Excel или даже картотека. Хранилище обозначает состояние системы в момент времени.
  • Поток данных (Data Flow). Направленное движение информации между элементами. Изображается стрелкой с обязательной подписью, указывающей, что именно передаётся (например, «Номер заказа», а не просто «Данные»).

Сравнение нотаций: Yourdon-Coad и Gane-Sarson

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

ЭлементНотация Yourdon-CoadНотация Gane-Sarson
ПроцессКруг или овалПрямоугольник со скруглёнными углами
Внешняя сущностьКвадрат или прямоугольникКвадрат (часто с тенью или жирной рамкой)
Хранилище данныхДве параллельные горизонтальные линииПрямоугольник, открытый справа (или слева)
Поток данныхСтрелка с подписьюСтрелка с подписью

Для новых проектов рекомендуется использовать нотацию Gane-Sarson. Её геометрические формы легче выравнивать по сетке, что повышает читаемость сложных схем с большим количеством элементов.

Пошаговый алгоритм рисования DFD

Построение диаграммы идёт по принципу декомпозиции: от общего вида системы к деталям. Нельзя сразу рисовать все мелкие процессы — это приведёт к хаосу.

Шаг 1. Контекстная диаграмма (Уровень 0)

Это самый высокий уровень абстракции. Вся система изображается как один единственный процесс.

  1. Нарисуйте центральный процесс, назвав его именем системы (например, «Интернет-магазин»).
  2. Определите всех внешних пользователей и смежные системы (Клиент, Банк, Служба доставки).
  3. Соедините их стрелками потоков данных, показывая только ключевые документы или сообщения (Заказ, Оплата, Уведомление о доставке).
  4. На этом уровне хранилища данных обычно не показываются, так как они скрыты внутри «чёрного ящика» системы.

Шаг 2. Декомпозиция (Уровень 1)

Раскрываем центральный процесс на крупные функциональные блоки.

  1. Замените единственный процесс уровня 0 на 3–7 подпроцессов (например: «Обработка заказа», «Управление складом», «Финансовый учёт»).
  2. Добавьте хранилища данных, необходимые для взаимодействия этих блоков (База товаров, Реестр клиентов).
  3. Сохраните все внешние сущности и потоки с уровня 0. Новые потоки должны соединять только внутренние процессы и хранилища.

Шаг 3. Детализация (Уровень 2 и ниже)

Если какой-то процесс уровня 1 всё ещё слишком сложен, его можно разбить дальше.

  • Например, процесс «Обработка заказа» может распасться на: «Проверка наличия», «Резервирование товара», «Формирование счёта».
  • Важно соблюдать баланс: данные, входящие в процесс на уровне 1, должны в сумме совпадать с данными, входящими в его подпроцессы на уровне 2.

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

Как правильно читать диаграмму

Анализ готовой DFD помогает найти узкие места и логические дыры в требованиях.

  1. Проверка границ. Посмотрите на внешние сущности. Все ли участники процесса учтены? Нет ли «висящих» стрелок, уходящих в никуда?
  2. Анализ процессов. У каждого процесса должен быть минимум один вход и один выход. Процесс, который только потребляет данные («Чёрная дыра»), или только генерирует их из ничего («Чудо»), является ошибкой моделирования.
  3. Чтение хранилищ. Обратите внимание, какие процессы пишут в хранилище, а какие только читают. Если два процесса одновременно пишут в одно хранилище без механизма блокировок, это потенциальный риск конфликта данных.
  4. Трассировка потока. Выберите один ключевой документ (например, «Заявка») и проследите его путь от внешней сущности до финального результата. Путь должен быть непрерывным.

Частые ошибки при моделировании

Даже опытные аналитики допускают типовые ошибки при построении DFD.

  • Отсутствие подписей на стрелках. Поток данных без названия не несёт информации. Избегайте общих терминов вроде «Информация» или «Данные». Используйте конкретику: «ID клиента», «Сумма платежа».
  • Прямая связь между хранилищами. Данные не могут перетекать из одной базы в другую сами по себе. Между двумя хранилищами всегда должен находиться процесс, который осуществляет перенос или копирование.
  • Прямая связь между внешними сущностями. DFD моделирует внутреннюю систему. Если два внешних участника обмениваются данными мимо вашей системы, эта связь не должна отображаться на диаграмме.
  • Смешивание потоков управления и данных. Не рисуйте стрелки вроде «Команда запуска» или «Сигнал ошибки». DFD показывает только материальные данные или документы. Логика управления («если... то...») остаётся за рамками этой диаграммы.

Инструменты для создания DFD

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

  • Draw.io (diagrams.net). Бесплатный онлайн-инструмент с поддержкой обеих нотаций. Идеален для быстрых набросков.
  • Lucidchart. Удобный интерфейс с коллаборацией в реальном времени. Хорошо подходит для командной работы.
  • Visual Paradigm. Профессиональное средство моделирования, поддерживающее не только DFD, но и UML, BPMN и другие стандарты.
  • Miro. Онлайн-доска с шаблонами DFD. Удобна для мозговых штурмов и совместного обсуждения структуры системы с нетехническими специалистами.

FAQ

Какую нотацию выбрать: Yourdon-Coad или Gane-Sarson? Разницы в смысловой нагрузке нет. Выбирайте ту, которая принята в вашей компании или проще рисуется в вашем инструменте. Gane-Sarson часто считается более современной и аккуратной для документов.

Можно ли использовать DFD для описания алгоритмов? Нет. Для алгоритмов и логики ветвления используйте блок-схемы (Flowcharts) или диаграммы активности UML. DFD отвечает на вопрос «Какие данные нужны?», а не «В каком порядке делать?».

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