Материал учебного циклаОткрытый материал

DFD: как данные проходят через систему

Практическое введение в DFD и моделирование потоков данных. Разбираем внешние сущности, процессы, хранилища и потоки данных, Context Diagram, уровни декомпозиции, баланс между уровнями, связь DFD с API, безопасностью, BPMN и Sequence Diagram.

Продукт и интерфейсы #API #DFD #архитектура #потоки данных
Учебный цикл Моделирование и проектирование информационных систем Материал 5 из 9

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

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

Нужно понимать ещё одну вещь:

Какие данные входят в систему, кто их создаёт, куда они передаются, где хранятся и кто их использует дальше?

Например, абитуриент отправляет заявку в CRM.

С точки зрения бизнес-процесса нас может интересовать:

Подать заявку -> Проверить -> Согласовать

С точки зрения базы данных:

Student 1:N Application N:1 Program

А с точки зрения движения информации:

Applicant -> Application data -> CRM -> Application record -> PostgreSQL

Именно последний вопрос описывает DFD - Data Flow Diagram.

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

Что такое DFD

DFD расшифровывается как Data Flow Diagram.

В основе диаграммы четыре элемента:

External Entity - внешний источник или получатель данных
Process - преобразование данных
Data Store - место хранения данных
Data Flow - передаваемые данные

Простейшую модель можно представить так:

Applicant -> Application data -> Application Processing -> Application record -> Applications Store

Здесь видно:

  • кто передаёт данные;
  • какие именно данные передаются;
  • какой процесс их обрабатывает;
  • что сохраняется после обработки.

DFD отвечает прежде всего на вопрос:

Куда движется информация и что происходит с ней по пути?

External Entity

External Entity - объект за границей рассматриваемой системы, который отправляет или получает данные.

Например:

Applicant
Manager
Payment Provider
Education Platform
Email Provider
Government Registry

External Entity не обязательно является человеком.

Это может быть:

  • пользователь;
  • организация;
  • внешняя информационная система;
  • API другого сервиса;
  • платёжный провайдер;
  • государственная система.

Главный критерий:

Рассматриваем ли мы этот объект как часть моделируемой системы?

Если проектируется CRM, то Applicant является внешней сущностью.

Если проектируется вся цифровая экосистема образовательной платформы, та же CRM может сама оказаться одним из внутренних компонентов.

Поэтому граница DFD зависит от выбранного масштаба модели.

Process

Process - преобразование входных данных в выходные.

Например:

Register Application
Verify Documents
Calculate Payment
Generate Report
Send Notification

Процесс должен что-то делать с данными.

Плохое название:

Application

Непонятно, что происходит.

Лучше:

Process Application
Validate Application
Create Application

Это связано с важным правилом DFD:

External Entity - обычно существительное
Data Store - обычно существительное
Data Flow - название данных
Process - действие

Например:

Applicant -> Application data -> Validate Application

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

Если процесс получает данные и отдаёт абсолютно те же данные без какого-либо смысла, стоит проверить, нужен ли он вообще на диаграмме.

Data Flow

Data Flow - данные, передаваемые между элементами DFD.

Поток изображается стрелкой.

Но стрелка сама по себе почти ничего не говорит.

Плохо:

Applicant -> CRM

Непонятно, что именно передаётся.

Лучше:

Applicant -> Application data -> Application Processing

Другой пример:

Application Processing -> Application status -> Applicant

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

Хорошо:

Application data
Payment details
Verification result
Document metadata
Notification data
Report parameters

Плохо:

Send
Process
Check
Request

Поток данных отвечает на вопрос:

Что передаётся?

Data Store

Data Store - место, где данные сохраняются между операциями.

Например:

Applications
Documents
Users
Payments
Audit Log

На логической DFD обычно не обязательно писать:

PostgreSQL
Redis
S3

если нас интересует прежде всего смысл хранимых данных.

В таком случае лучше:

Application Store
Document Store
User Store

Это важное различие между логической и физической DFD.

Логическая DFD показывает:

что хранится

Физическая DFD может показывать:

где именно хранится

Например:

Application Store -> PostgreSQL
Document Store -> MinIO
Session Store -> Redis

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

Основные правила соединения элементов

DFD имеет простые, но важные ограничения.

Допустимо:

External Entity -> Process
Process -> External Entity
Process -> Data Store
Data Store -> Process
Process -> Process

Например:

Applicant -> Application data -> Submit Application
Submit Application -> Application record -> Applications Store
Applications Store -> Application record -> Review Application
Review Application -> Review result -> Manager

Некоторые прямые связи обычно не имеют смысла.

External Entity -> Data Store

Плохо:

Applicant -> Applications Database

Если пользователь пишет данные в базу через систему, между ними должен существовать процесс:

Applicant -> Application data -> Submit Application -> Application record -> Applications Store

Иначе DFD пропускает саму обработку.

Data Store -> Data Store

Плохо:

Applications Store -> Archive Store

Данные не должны самостоятельно перемещаться между хранилищами.

Нужен процесс:

Applications Store -> Archived application -> Archive Application -> Archive record -> Archive Store

External Entity -> External Entity

Если два внешних участника взаимодействуют напрямую и система в этом не участвует, такое взаимодействие обычно находится за пределами DFD рассматриваемой системы.

Если взаимодействие проходит через систему:

Applicant -> Request -> CRM Process -> Notification -> Manager

тогда его уже имеет смысл показывать.

Пример простой DFD

Представим CRM образовательной программы.

Абитуриент подаёт заявку.

Система сохраняет её.

Оператор позже получает данные заявки и проверяет их.

После проверки статус заявки изменяется.

На DFD это можно представить так:

Applicant -> Application data -> Submit Application -> Application record -> Applications Store
Applications Store -> Application data -> Review Application
Manager -> Review decision -> Review Application
Review Application -> Updated application -> Applications Store
Review Application -> Application status -> Applicant

Здесь уже видно несколько важных вещей:

  • Applicant создаёт данные заявки;
  • процесс Submit Application принимает их;
  • данные сохраняются;
  • Review Application читает их из хранилища;
  • Manager передаёт решение;
  • изменённое состояние снова сохраняется;
  • Applicant получает результат.

DFD позволяет увидеть информационные зависимости без погружения в HTTP, SQL или реализацию frontend.

Context Diagram

Начинать большую DFD удобнее не с внутренних процессов, а с Context Diagram.

На Context Diagram вся рассматриваемая система представляется одним процессом.

Например:

Applicant -> Application data -> CRM System
CRM System -> Application status -> Applicant

Manager -> Review decision -> CRM System
CRM System -> Application data -> Manager

CRM System -> Payment request -> Payment Provider
Payment Provider -> Payment result -> CRM System

CRM System -> Enrollment data -> Education Platform
Education Platform -> Enrollment result -> CRM System

Внутренние детали CRM пока не показываются.

То есть отсутствуют:

Application Management
Document Management
Notifications
PostgreSQL
RabbitMQ
Celery

На этом уровне нас интересует только граница:

внешний мир -> CRM System -> внешний мир

Context Diagram позволяет быстро ответить на вопросы:

  • кто взаимодействует с системой;
  • какие данные входят;
  • какие данные выходят;
  • какие внешние интеграции существуют;
  • где проходит граница ответственности системы.

Зачем начинать с Context Diagram

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

Например, на одной диаграмме появляются:

Applicant
React
Django
PostgreSQL
Redis
RabbitMQ
Celery
MinIO
Payment Provider
Email Provider
Manager

И уже непонятно, что именно анализируется.

Context Diagram заставляет сначала определить:

что находится внутри системы

и:

что находится снаружи

Это особенно полезно перед проектированием интеграций и API.

Level 0

После Context Diagram система декомпозируется.

Допустим, на верхнем уровне был один процесс:

CRM System

На Level 0 его можно разбить на несколько крупных процессов:

1.0 Manage Applications
2.0 Manage Documents
3.0 Send Notifications
4.0 Generate Reports

И добавить хранилища:

D1 Applications
D2 Documents
D3 Users

Теперь схема становится подробнее.

Например:

Applicant -> Application data -> 1.0 Manage Applications
1.0 Manage Applications -> Application record -> D1 Applications
D1 Applications -> Application data -> 4.0 Generate Reports
2.0 Manage Documents -> Document metadata -> D2 Documents
3.0 Send Notifications -> Notification -> Applicant

Level 0 показывает основные функции системы и движение данных между ними.

Level 1

Любой крупный процесс Level 0 можно декомпозировать дальше.

Например:

1.0 Manage Applications

раскладывается на:

1.1 Receive Application
1.2 Validate Application
1.3 Store Application
1.4 Review Application
1.5 Update Application Status

Теперь поток можно показать подробнее:

Applicant -> Application data -> 1.1 Receive Application -> Raw application -> 1.2 Validate Application
1.2 Validate Application -> Valid application -> 1.3 Store Application -> Application record -> D1 Applications
D1 Applications -> Application data -> 1.4 Review Application
Manager -> Review decision -> 1.4 Review Application -> Review result -> 1.5 Update Application Status
1.5 Update Application Status -> Updated application -> D1 Applications

Так одна крупная функция постепенно раскрывается без превращения всей DFD в огромную схему.

Нумерация процессов

При декомпозиции обычно используется иерархическая нумерация.

Например:

1.0 Manage Applications
2.0 Manage Documents
3.0 Send Notifications

Декомпозиция процесса 1.0:

1.1 Receive Application
1.2 Validate Application
1.3 Store Application
1.4 Review Application

Декомпозиция процесса 2.0:

2.1 Upload Document
2.2 Validate Document
2.3 Store Document

Нумерация помогает понять, к какому родительскому процессу относится более подробная схема.

Баланс между уровнями

Одно из важнейших правил декомпозиции DFD - balancing.

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

Представим Level 0:

Applicant -> Application data -> 1.0 Manage Applications
1.0 Manage Applications -> Application status -> Applicant

На Level 1 процесс 1.0 раскрывается.

Там должен сохраниться вход:

Application data

и выход:

Application status

Например:

Applicant -> Application data -> 1.1 Receive Application -> 1.2 Validate Application -> 1.3 Store Application
1.3 Store Application -> Application status -> Applicant

Нельзя внезапно добавить на дочернем уровне новый внешний поток:

Applicant -> Passport Scan

если на родительском уровне никакого такого потока не существовало.

И наоборот, нельзя потерять вход или выход верхнего уровня.

Именно это называется балансом между уровнями.

Почему balance важен

Без balancing разные уровни начинают описывать разные системы.

Например, Context Diagram говорит:

Payment Provider -> Payment result -> CRM

а после декомпозиции никакой Payment result больше нигде не существует.

Возникает вопрос:

Куда исчезли данные?

Или наоборот, на Level 1 внезапно появляется:

Tax Service -> Tax data -> Calculate Payment

хотя на Context Diagram такой интеграции не было.

Это значит, что верхний уровень уже не отражает реальные границы системы и должен быть обновлён.

Какой уровень детализации нужен

Нет смысла бесконечно раскладывать процессы.

Например:

Validate Application

можно разложить:

Validate required fields
Validate email
Validate program
Validate documents

А потом ещё глубже:

Parse email
Compare regex
Check domain

Но DFD быстро превратится в описание программного алгоритма.

Остановиться стоит тогда, когда текущий уровень уже отвечает на аналитический вопрос.

Для бизнес-анализа может хватить:

Validate Application

Для проектирования интеграции может понадобиться:

Validate Application -> Validate Program -> Verify Documents

Для описания конкретного Python-кода DFD обычно уже не лучший инструмент.

Логическая и физическая DFD

Это различие полезно фиксировать отдельно.

Логическая DFD

Показывает, что делает система и какие данные движутся.

Например:

Applicant -> Application data -> Process Application -> Application Store

Здесь нет:

React
Django
PostgreSQL
HTTP
JSON

Это модель предметной логики.

Физическая DFD

Показывает, какими конкретными технологиями реализовано движение данных.

Например:

React -> JSON application payload -> Django REST API -> SQL INSERT -> PostgreSQL

или:

Django -> Notification message -> RabbitMQ -> Celery Worker -> Email Provider

Физическая модель ближе к архитектуре реализации.

Главное - не смешивать оба уровня случайным образом.

Плохо:

Applicant -> Django -> Application Store -> RabbitMQ -> Проверить заявку

Здесь одновременно находятся:

  • пользователь;
  • framework;
  • логическое хранилище;
  • инфраструктура;
  • бизнес-действие.

Сначала нужно определить цель схемы.

DFD и безопасность

DFD особенно полезна для security analysis, потому что она показывает, где именно движутся чувствительные данные.

Например:

Applicant -> Personal data -> CRM
CRM -> Payment data -> Payment Provider
CRM -> Student data -> Education Platform

Теперь можно определить типы информации:

Personal data
Credentials
Payment data
Documents
Access tokens
Internal identifiers

После этого можно анализировать каждый поток отдельно.

Например:

Applicant -> Personal data -> CRM

возникают вопросы:

  • передаются ли данные по защищённому соединению;
  • какие поля действительно нужны;
  • где данные сохраняются;
  • кто получает к ним доступ;
  • сколько времени они хранятся.

Trust Boundaries

При threat modeling поверх DFD часто добавляют trust boundaries.

Trust Boundary показывает переход между областями с разным уровнем доверия.

Например:

Internet | Trust Boundary | Backend Network

или:

CRM | Trust Boundary | External Payment Provider

Поток:

Browser -> Access token -> Backend

пересекает границу доверия.

Такой переход требует отдельного анализа.

Например:

  • authentication;
  • authorization;
  • encryption;
  • input validation;
  • rate limiting;
  • logging;
  • secret management.

Важно понимать, что trust boundary не является одним из четырёх базовых элементов классической DFD. Это дополнительный слой, который часто используется при threat modeling.

DFD как основа threat modeling

Представим поток:

Applicant -> Passport data -> Upload Document -> Document Store

Теперь можно последовательно проверить:

External Entity -> Data Flow -> Process -> Data Store

На каждом участке возникают свои угрозы.

Для External Entity:

кто отправляет данные?
как проверяется пользователь?

Для Data Flow:

защищён ли канал?
можно ли изменить данные по дороге?

Для Process:

валидируется ли вход?
можно ли загрузить вредоносный файл?

Для Data Store:

кто имеет доступ?
шифруются ли данные?
есть ли retention policy?

Поэтому DFD используется как удобная исходная карта системы для threat modeling.

DFD и API

DFD показывает:

что передаётся

API contract показывает:

как именно это передаётся

Например, DFD:

Applicant -> Application data -> CRM

На уровне API это может превратиться в:

POST /applications
{
  "program_id": 42,
  "first_name": "Sergey",
  "last_name": "Kitov"
}

DFD не должна содержать полный JSON schema.

Её задача выше уровнем:

Application data

А OpenAPI уже описывает:

  • HTTP method;
  • URL;
  • headers;
  • request body;
  • field types;
  • validation;
  • response;
  • error codes.

Поэтому связь выглядит так:

DFD Data Flow -> API operation -> OpenAPI contract

Один Data Flow не всегда равен одному HTTP request

Это тоже важно.

Например, на DFD существует:

CRM -> Student data -> Education Platform

Технически это может быть реализовано через:

REST API

или:

Webhook

или:

RabbitMQ

или:

Kafka

или:

SFTP file exchange

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

Поэтому сначала можно определить:

какие данные должны двигаться

а затем:

каким способом их передавать

DFD и BPMN

BPMN и DFD часто моделируют одну предметную область, но смотрят на неё по-разному.

Представим процесс:

Подать заявку -> Проверить -> Согласовать

BPMN показывает:

порядок действий

DFD для того же сценария показывает:

Applicant -> Application data -> Application Processing -> Application record -> Applications Store
Manager -> Review decision -> Application Processing
Application Processing -> Application status -> Applicant

Главное различие:

BPMN - что происходит в процессе
DFD - какие данные движутся

В BPMN важны:

  • события;
  • задачи;
  • gateway;
  • участники;
  • последовательность.

В DFD важны:

  • источники данных;
  • преобразования;
  • хранилища;
  • информационные потоки.

DFD и Sequence Diagram

Sequence Diagram показывает взаимодействие во времени.

Например:

React -> Django: POST /applications
Django -> PostgreSQL: INSERT
Django -> RabbitMQ: publish
Django -> React: 201 Created

DFD может описать тот же сценарий намного выше уровнем:

Applicant -> Application data -> Application Processing -> Application record -> Applications Store

Sequence Diagram отвечает на вопрос:

Кто кого вызывает и в каком порядке?

DFD:

Какие данные проходят между частями системы?

Поэтому:

Sequence Diagram - temporal interaction
DFD - information movement

DFD и ERD

ERD показывает структуру данных:

Student 1:N Application N:1 Program

DFD показывает движение данных:

Applicant -> Application data -> Application Processing -> Application Store

Связь между ними довольно естественная.

Если на DFD есть:

Application Store

в ERD, скорее всего, существуют сущности:

Application
Student
Program

Но соответствие не всегда один к одному.

Один Data Store на DFD может физически содержать десятки таблиц.

Например:

CRM Data Store

может включать:

users
applications
programs
documents
status_history
audit_log

DFD не обязана показывать внутреннюю реляционную структуру.

Как строить DFD с нуля

Для новой системы удобно идти сверху вниз.

1. Определить границу

Сначала сформулировать:

что именно считается системой

Например:

CRM образовательной программы

2. Найти внешние сущности

Например:

Applicant
Manager
Payment Provider
Education Platform
Email Provider

3. Найти входящие и исходящие данные

Например:

Application data
Review decision
Payment request
Payment result
Enrollment data
Notification

4. Построить Context Diagram

External Entities -> Data Flows -> CRM System

Без внутренней детализации.

5. Разделить систему на крупные процессы

Например:

Manage Applications
Manage Documents
Process Payments
Send Notifications
Generate Reports

6. Добавить Data Stores

Например:

Applications Store
Documents Store
Users Store
Payments Store

7. Соединить только реальные потоки данных

Каждая стрелка должна отвечать на вопрос:

Какие конкретно данные здесь проходят?

8. Декомпозировать сложные процессы

Manage Applications -> Receive -> Validate -> Review -> Update Status

9. Проверить balance

Входы и выходы дочернего уровня должны соответствовать родительскому.

10. Только после этого связывать DFD с реализацией

Например:

Data Flow -> REST / Event / Webhook
Data Store -> PostgreSQL / Redis / MinIO
Process -> Django service / Celery worker

То есть общий путь выглядит так:

Граница системы -> внешние сущности -> потоки данных -> процессы -> хранилища -> декомпозиция -> API и техническая реализация

Типичные ошибки

Первая ошибка - стрелки без названия.

Плохо:

Applicant -> CRM

Лучше:

Applicant -> Application data -> Submit Application

Вторая ошибка - процесс назван существительным.

Плохо:

Application

Лучше:

Process Application

Третья ошибка - Data Flow назван действием.

Плохо:

Send application

Лучше:

Application data

Четвёртая ошибка - прямое соединение External Entity и Data Store.

Плохо:

Applicant -> Applications Store

Лучше:

Applicant -> Application data -> Submit Application -> Application record -> Applications Store

Пятая ошибка - прямое соединение двух Data Stores.

Плохо:

Applications Store -> Archive Store

Нужен процесс преобразования или переноса.

Шестая ошибка - смешивание логической и физической модели.

Например:

Applicant -> React -> Validate Application -> PostgreSQL -> Notification Process -> RabbitMQ

Здесь смешаны:

  • внешняя сущность;
  • технология frontend;
  • бизнес-процесс;
  • конкретная СУБД;
  • логический процесс;
  • брокер сообщений.

Такая схема может быть полезна как отдельная физическая модель, но она должна строиться осознанно.

Седьмая ошибка - отсутствие Data Stores.

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

Восьмая ошибка - один гигантский уровень детализации.

Если на одной схеме одновременно находятся:

Submit Application
Validate Email
Check Program
Generate PDF
Publish RabbitMQ Message
Send Email
Create Student
Calculate Analytics

лучше разделить модель на Level 0 и Level 1.

Девятая ошибка - нарушение balance.

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

Десятая ошибка - попытка показать порядок выполнения через DFD.

DFD не предназначена для точного временного сценария.

Если важно показать:

сначала A -> потом B -> потом C

лучше использовать BPMN или Sequence Diagram.

Как проверить DFD

Перед завершением схемы полезно пройти по нескольким вопросам:

  • Определена ли граница системы?
  • Все ли External Entities действительно находятся снаружи?
  • Каждый ли Process преобразует данные?
  • Все ли Data Flows имеют понятные названия?
  • Понятно ли, какие именно данные проходят по каждой стрелке?
  • Есть ли Data Stores для данных, которые должны сохраняться?
  • Нет ли прямых External Entity -> Data Store связей?
  • Нет ли необъяснимых Data Store -> Data Store связей?
  • Не смешаны ли logical и physical уровни?
  • Сбалансированы ли Context Diagram, Level 0 и Level 1?
  • Не пытается ли DFD показать временную последовательность вместо потоков данных?
  • Можно ли по схеме определить основные API и интеграции?
  • Понятно ли, где проходят чувствительные данные?

Если на эти вопросы есть ответы, DFD уже начинает выполнять практическую функцию, а не остаётся декоративной схемой.

Что важно запомнить

DFD описывает движение информации через четыре основных элемента:

External Entity - кто отправляет или получает данные
Process - что преобразует данные
Data Store - где данные хранятся
Data Flow - какие данные перемещаются

На верхнем уровне:

External Entities -> CRM System -> External Entities

На следующем:

Manage Applications
Manage Documents
Send Notifications
Generate Reports

После декомпозиции:

Manage Applications -> Receive -> Validate -> Store -> Review -> Update Status

При этом уровни должны оставаться сбалансированными.

DFD занимает своё место среди других моделей:

BPMN - ход бизнес-процесса
DFD - движение данных
ERD - структура данных
Sequence Diagram - взаимодействия во времени
OpenAPI - точный контракт передачи данных
C4 - архитектурная структура системы

Главный вопрос DFD можно сформулировать очень просто:

кто создаёт данные -> куда они идут -> какой процесс их изменяет -> где они сохраняются -> кто получает результат

Если схема позволяет быстро ответить на эти вопросы, значит модель построена правильно.

Продолжить

  1. 01 Как подключить внешний API к программе: методы, параметры, заголовки и тело запроса Разбираем, как подключить внешний API к Python-программе или автоматизации: найти endpoint, выбрать HTTP-метод, передать параметры, заголовки и JSON, прочитать ответ и обработать ошибки.
  2. 02 BPMN: от бизнес-процесса до требований к системе Что такое BPMN, зачем моделировать бизнес-процессы и как читать простую диаграмму от начала до результата.
  3. 03 UML: как описывать программную систему с разных сторон Введение в UML и основные виды диаграмм. Разбираем, зачем одной системе нужны разные представления, что показывают Use Case, Sequence, Class, Activity, State Machine, Component и Deployment Diagram и как выбрать подходящую диаграмму под задачу.
  4. 04 ERD и моделирование данных Подробное введение в ERD и моделирование данных. Разбираем сущности, атрибуты, первичные и внешние ключи, связи 1:1, 1:N и M:N, обязательность связей, нормализацию и переход от ERD к PostgreSQL и Django ORM.
  5. 05 State Machines: жизненный цикл сущностей Практическое введение в State Machine и моделирование жизненного цикла сущностей. Разбираем состояния, переходы, события, guard conditions, побочные эффекты и связь State Machine с BPMN, базой данных и API.
  6. 06 C4 Model: архитектура программной системы Практическое введение в C4 Model для описания архитектуры информационных систем. Разбираем уровни System Context, Container и Component, дополнительные Dynamic и Deployment Diagram, границы между ними и применение C4 для монолитов и микросервисов.
  7. 07 API Contracts: как системы договариваются о взаимодействии Практическое руководство по проектированию API-контрактов. Разбираем структуру HTTP API, ресурсы и action endpoints, request и response schemas, ошибки, OpenAPI, версионирование, совместимость, аутентификацию, авторизацию, webhook-контракты и безопасное изменение API для существующих consumers.
  8. 08 Event-Driven Modeling: события, очереди и асинхронные процессы Практическое руководство по Event-Driven Modeling и проектированию асинхронных взаимодействий. Разбираем команды и события, Producer, Broker и Consumer, очереди и routing, идемпотентность, порядок событий, retries, Dead Letter Queue, Transactional Outbox, eventual consistency и связь событий с BPMN и State Machine.
  9. 09 Как собрать BPMN, UML, ERD, C4 и API в одну проектную документацию Практическое руководство по сборке проектной документации информационной системы. Показываем, как связать BPMN, UML, ERD, State Machine, DFD, C4, API Contracts и Event-Driven Modeling так, чтобы каждая модель отвечала на свой вопрос и не дублировала остальные.

Обратная связь

Материал был полезен?

Нашли ошибку или неточность? Сообщить →

Начните вводить — найдём материал по всей библиотеке.