Um diagrama de fluxo de dados (DFD) mostra como a informação se move por um sistema: de onde vem, o que a transforma, onde é armazenada e para onde vai. Ele não diz nada sobre tempo, laços ou qual servidor executa o quê, e essa é a sua força. Um DFD é o jeito mais rápido de chegar a um acordo sobre quais dados um sistema trata, e por isso aparece no levantamento de requisitos, em revisões de privacidade e na modelagem de ameaças.
Este post apresenta os símbolos de DFD nas duas notações clássicas e depois desenvolve um exemplo, uma loja online, em três níveis: o diagrama de contexto, o nível 0 e o nível 1. Ele também explica a confusão de nomes em torno do “nível 0”, a regra de balanceamento que mantém os níveis consistentes e os erros que os revisores procuram.
Símbolos de DFD
DFDs usam quatro elementos. Duas notações dominam, ambas vindas dos livros de análise estruturada do fim dos anos 1970: Yourdon e DeMarco, e Gane e Sarson.
| Elemento | O que é | Yourdon e DeMarco | Gane e Sarson |
|---|---|---|---|
| Entidade externa | Uma pessoa, organização ou sistema fora da fronteira que envia ou recebe dados | Retângulo | Quadrado, muitas vezes sombreado |
| Processo | Trabalho que transforma dados | Círculo, ou bolha | Retângulo arredondado com uma faixa de ID |
| Depósito de dados | Dados em repouso: uma tabela, um arquivo ou uma fila | Duas linhas paralelas | Retângulo aberto de um lado, com um ID como D1 |
| Fluxo de dados | Dados em movimento, nomeados com um substantivo | Seta | Seta |
As notações são equivalentes; escolha uma e mantenha. Muitas ferramentas modernas desenham depósitos de dados como cilindros, que os leitores reconhecem na hora. Seja qual for a escolha, adicione uma legenda.
As regras que tornam um DFD válido
- Todo processo tem pelo menos uma entrada e uma saída. Um processo só com entradas é um buraco negro; um só com saídas, um milagre.
- Os dados só se movem por meio de processos. Nenhum fluxo vai direto de uma entidade externa para um depósito de dados, de um depósito para outro ou entre duas entidades externas.
- Os fluxos têm nomes que descrevem dados, como “detalhes do pedido” ou “resultado do pagamento”, e não ações como “enviar” ou “verificar”.
- Os processos são nomeados com verbo e objeto: “Receber pedido”, “Atender pedido”.
- Cada processo é numerado, e sua decomposição repete o número: o processo 1 vira 1.1, 1.2 e 1.3.
Os níveis, e a confusão do nível 0
Um DFD é desenhado de cima para baixo, em níveis de detalhe crescente:
- O diagrama de contexto mostra o sistema inteiro como um único processo, cercado por todas as entidades externas e pelos fluxos entre elas. Ele define a fronteira.
- O nível seguinte abre esse processo único em seus processos principais, adiciona os depósitos de dados e mantém os mesmos fluxos externos.
- Os níveis mais baixos abrem processos individuais até onde for preciso.
Aqui está a confusão: alguns livros e ferramentas chamam o diagrama de contexto de “nível 0” e sua primeira decomposição de “nível 1”, enquanto outros, seguindo a prática mais antiga da análise estruturada, tratam o diagrama de contexto como um nível próprio e chamam a primeira decomposição de “diagrama 0” ou “nível 0”. Nenhuma das duas está errada. Este post usa a segunda convenção: diagrama de contexto, depois nível 0, depois nível 1. Seja qual for a sua, escreva-a no diagrama.
O exemplo: uma loja online
Uma loja online recebe pedidos dos clientes, faz a cobrança por meio de um provedor de pagamentos e envia listas de separação para um armazém que despacha as mercadorias.
Diagrama de contexto
Um processo, “0 Online store”, e três entidades externas:
| Fluxo | De | Para |
|---|---|---|
| Order details | Customer | Online store |
| Order confirmation | Online store | Customer |
| Payment request | Online store | Payment provider |
| Payment result | Payment provider | Online store |
| Pick list | Online store | Warehouse |
| Shipment status | Warehouse | Online store |
Esse é o sistema inteiro visto de fora. Qualquer pessoa consegue revisá-lo em um minuto, e ele já responde perguntas importantes: quais organizações recebem dados de clientes e de quais sistemas dependemos.
Nível 0
Abra a loja online em três processos e dois depósitos de dados:
- Take order recebe os detalhes do pedido do cliente, lê os preços em D2 Products, grava o pedido em D1 Orders e repassa uma solicitação de pagamento ao processo 2.
- Process payment envia a solicitação de pagamento ao provedor de pagamentos, recebe o resultado do pagamento, atualiza o pedido em D1 Orders e passa os pedidos pagos ao processo 3.
- Fulfil order lê os pedidos pagos, envia a lista de separação ao armazém, recebe o status da remessa e envia a confirmação do pedido ao cliente.
Todo fluxo externo do diagrama de contexto aparece de novo no nível 0, ligado às mesmas entidades. Isso é balanceamento, e o diagrama abaixo o torna visível.
Nível 1
Cada processo do nível 0 pode ser aberto ainda mais. O processo 1, Take order, no nível 1:
| Processo | Entradas | Saídas |
|---|---|---|
| 1.1 Validar carrinho | Order details vindo de Customer | Carrinho válido |
| 1.2 Precificar pedido | Carrinho válido, preços dos produtos vindos de D2 Products | Pedido precificado |
| 1.3 Registrar pedido | Pedido precificado | Novo pedido para D1 Orders, solicitação de pagamento para o processo 2 |
As entradas e saídas de 1.1 a 1.3, tomadas em conjunto, precisam corresponder às entradas e saídas do processo 1 no nível 0. Desenhe cada explosão de nível 1 como um diagrama próprio, com o número do processo pai no título.
Balanceamento: a regra que os revisores conferem primeiro
Um diagrama filho está balanceado quando os fluxos de dados que entram e saem dele são iguais aos fluxos que entram e saem do seu processo pai. Se o nível 0 mostra um fluxo “pedido de reembolso” que o diagrama de contexto não mostra, um dos dois está errado: ou o sistema tem uma interface com que ninguém concordou, ou o diagrama de contexto está incompleto. O balanceamento é o que torna os níveis de um DFD confiáveis como conjunto, e é fácil de conferir listando lado a lado os fluxos externos de cada nível.
Erros comuns
- Desenhar um fluxograma. Decisões, laços e setas de “depois” pertencem a um fluxograma ou a um diagrama BPMN. Um DFD mostra dados, não controle.
- Fluxos sem nome. Uma seta sem rótulo não diz nada ao revisor; nomeie os dados que ela carrega.
- Processos demais por diagrama. Mais de sete a nove processos em um nível ficam difíceis de ler. Agrupe-os e abra os grupos no nível seguinte.
- Depósitos de dados que só recebem dados. Se nada lê um depósito, por que ele existe? Se nada grava nele, de onde vêm os seus dados?
- Misturar níveis. Mostrar subprocessos detalhados ao lado de processos de alto nível no mesmo diagrama quebra a hierarquia.
DFDs, fluxogramas e diagramas de arquitetura
| Diagrama de fluxo de dados | Fluxograma | Diagrama de arquitetura | |
|---|---|---|---|
| Mostra | Dados, suas origens, transformações e armazenamento | Passos, decisões e ordem | Componentes, implantação e conexões |
| Tempo e ordem | Não | Sim | Raramente |
| Melhor para | Requisitos, revisões de privacidade, modelos de ameaça | Procedimentos e algoritmos | Projeto e operações |
DFDs são a entrada padrão da modelagem de ameaças: adicione fronteiras de confiança a um diagrama de nível 0 e você terá a base de uma revisão STRIDE, como mostra o post sobre o diagrama de fluxo de dados para modelagem de ameaças. Eles são igualmente úteis no trabalho de privacidade, em que o diagrama de mapeamento de dados do GDPR acompanha dados pessoais pelo mesmo tipo de fluxo.
O diagrama de níveis do DFD
Conteúdo do diagrama
- Context diagram
- 0 Online store
- Customer
- Payment provider
- Warehouse
- Level 0
- 1 Take order
- 2 Process payment
- 3 Fulfil order
- D2 Products
- D1 Orders
- order details
- order confirmation
- payment request
- payment result
- pick list
- shipment status
- order to pay
- paid order
- prices
- new order
- payment status
Como ler:
- As entidades externas ficam no meio: Customer, Payment provider e Warehouse. Os dois diagramas se conectam a elas.
- A moldura da esquerda é o diagrama de contexto: um processo, 0 Online store, com seis fluxos nomeados para as entidades.
- A moldura da direita é o nível 0: Take order, Process payment e Fulfil order, com os depósitos de dados Orders e Products.
- O balanceamento fica visível: cada fluxo externo da esquerda reaparece na direita, agora ligado ao processo que o trata.
- O bloco Markdown é a legenda e a convenção de numeração.
Desenhar DFDs que passam na revisão
- Nomeie cada fluxo com um substantivo. A maioria dos comentários de revisão sobre DFDs trata de setas sem rótulo ou com rótulos vagos.
- Numere os processos de forma consistente entre os níveis, para que o leitor consiga rastrear 1.2 até 1.
- Mantenha as entidades externas nas mesmas posições em todos os níveis; isso facilita enxergar o balanceamento.
- Adicione uma legenda para a sua notação, principalmente se você misturar símbolos clássicos com cilindros para os depósitos de dados.
Para a notação de outros tipos de diagrama, veja o exemplo de resposta a incidentes em forma de fluxograma e o exemplo de diagrama BPMN.
Monte no Archboard
- Entre com Google ou GitHub e crie um diagrama.
- Adicione três nós Caixa do pack Básico em uma coluna central para Customer, Payment provider e Warehouse.
- Adicione à esquerda uma Moldura do pack Básico chamada Context diagram, com uma forma Elipse do pack Básico para 0 Online store.
- Adicione à direita uma segunda Moldura chamada Level 0, com três formas Elipse para os processos e duas formas na variante Cilindro para D1 Orders e D2 Products.
- Desenhe os fluxos como arestas rotuladas, com os mesmos rótulos dos dois lados das entidades.
- Adicione um bloco Markdown do pack Básico com a legenda e a convenção de numeração.
O exemplo usa 12 nós de diagrama e fica dentro do plano Free.
Perguntas frequentes
Quais são os quatro símbolos de um diagrama de fluxo de dados? Entidades externas, processos, depósitos de dados e fluxos de dados. Yourdon e DeMarco desenham processos como círculos e depósitos como linhas paralelas; Gane e Sarson usam retângulos arredondados e retângulos abertos em uma ponta.
Qual é a diferença entre um diagrama de contexto e um DFD de nível 0? Um diagrama de contexto mostra o sistema inteiro como um único processo com suas entidades externas. O nível seguinte abre esse processo em subprocessos principais e depósitos de dados. Algumas fontes chamam o diagrama de contexto de nível 0, então deixe clara a sua convenção.
O que significa balanceamento em um DFD? Os fluxos de dados que entram e saem de um diagrama filho precisam corresponder aos fluxos do seu processo pai. Isso garante que os níveis descrevam o mesmo sistema.
Como um DFD se diferencia de um fluxograma? Um DFD mostra quais dados vão para onde e como são transformados, sem ordem nem decisões. Um fluxograma mostra a sequência de passos e as decisões entre eles.
Quantos níveis um DFD deve ter? Quantos os leitores precisarem. A maioria dos sistemas fica bem descrita com um diagrama de contexto e o nível 0, com diagramas de nível 1 só para processos complexos ou sensíveis.