de_DEen_USes_ESfa_IRfr_FRid_IDjapl_PLpt_PTru_RUvizh_CNzh_TW

Guia Completo sobre DFD: Lógico vs Físico com Exemplos do Graphviz

1. Introdução aos Diagramas de Fluxo de Dados

Um Diagrama de Fluxo de Dados (DFD) é uma representação gráfica de como os dados se movem através de um sistema de informação. Ele mostra:

  • De onde os dados vêm e para onde vão
  • Como os dados são processados
  • Onde os dados são armazenados
  • Quem ou o que interage com o sistema

Infográfico de comparação que ilustra as diferenças entre diagramas de fluxo de dados lógicos e físicos.


2. Conceitos Principais

Elementos Principais

Elemento Símbolo Propósito
Entidade Externa Retângulo Pessoa, organização ou sistema que envia/recebe dados
Processo Círculo/Ellipse Transforma dados de entrada em dados de saída
Armazenamento de Dados Retângulo Aberto Repositório para armazenamento persistente de dados
Fluxo de Dados Seta Mostra a direção do movimento dos dados

Níveis de DFD

  1. Diagrama de Contexto (Nível 0): Nível mais alto, mostra os limites do sistema e entidades externas principais
  2. Nível 1: Decompõe o processo principal em sub-processos principais
  3. Nível 2+: Decomposição adicional mostrando processos detalhados

3. DFD Lógico vs DFD Físico

DFD Lógico

Diagrama de DFD lógico que mostra a lógica de negócios e atividades independentes de restrições de hardware ou software.

Um DFD lógico (também chamado de “modelo essencial”) foca em:

  • O QUE o que o sistema faz
  • Atividades de negócios e requisitos de informação
  • Independente da tecnologia de implementação

Características:

  • Mostra operações e processos de negócios
  • Sem detalhes específicos de tecnologia
  • Mais abstrato e voltado para o usuário
  • Ajuda a entender os requisitos de negócios

DFD Físico

Diagrama mostrando os componentes de DFD físico: hardware, software, pessoas e restrições técnicas.

Um DFD físico (também chamado de “modelo de implementação”) foca em:

  • COMO o sistema será implementado
  • Detalhes técnicos e restrições
  • Tecnologias e sistemas específicos

Características:

  • Mostra hardware, software e pessoas reais
  • Inclui detalhes de implementação
  • Mais concreto e voltado para o desenvolvedor
  • Ajuda no design e na implantação do sistema

Tabela de Comparação

Aspecto DFD Lógico DFD Físico
Foco Necessidades de negócios Implementação
Quem Analistas de negócios, usuários Designers de sistemas, desenvolvedores
Nível De alto nível, abstrato Detalhado, concreto
Componentes Processos de negócios Processos técnicos
Armazenamentos de dados Entidades conceituais Arquivos/ficheiros físicos/bases de dados
Entidades Papéis de negócios Sistemas/dispositivos reais

4. Componentes do DFD
Símbolos de Diagrama de Fluxo de Dados (DFD) - EdrawMax

Entidades Externas

  • Fontes e destinos de dados
  • Fora da fronteira do sistema
  • Nomeados com substantivos

Processos

  • Transformar dados de entrada em saída
  • Nomeados com verbo + substantivo
  • Numerados para identificação

Armazenamentos de Dados

  • Repositórios de dados persistentes
  • Nomeados com substantivos
  • Numeração D1, D2, D3…

Fluxos de Dados

  • Mostram o movimento de dados
  • Nomeados com rótulos descritivos
  • A direção indica o fluxo

5. Exemplos Práticos com Graphviz

Exemplo 1: Sistema de Gestão de Hotéis (DFD Lógico)

DFD lógico para o Sistema de Gestão de Hotéis mostrando fluxos de dados entre hóspedes, funcionários e bancos de dados.

digraph HotelMIS_DFD_Logical {
    // --- ESTILO DO GRÁFICO ---
    graph [
        rankdir = LR
        splines = true
        overlap = false
        nodesep = 0.6
        ranksep = 1.0
        fontname = "Helvetica,Arial,sans-serif"
        fontsize = 12
    ]

    // --- ESTILOS DE NÓS ---
    node [
        fontname = "Helvetica,Arial,sans-serif"
        fontsize = 11
        penwidth = 1.5
    ]

    // Entidades Externas
    node [shape = box, style = "filled", fillcolor = "#E1F5FE", color = "#0288D1"] 
    Convidado;
    Funcionário;

    // --- LIMITE DO SISTEMA ---
    subgraph cluster_SystemBoundary {
        label = "Limite do Sistema Hotel MIS";
        fontname = "Helvetica,Arial,sans-serif";
        fontcolor = "#757575";
        fontsize = 14;
        color = "#757575";
        style = "dashed,rounded";
        bgcolor = "#FAFAFA";
        margin = 20;

        // Processos
        node [shape = circle, style = "filled", fillcolor = "#E8F5E9", color = "#388E3C", fixedsize = true, width = 1.3]
        P1 [label="1.0nGerenciarnReservas"];
        P2 [label="2.0nCheck-In/nCheck-Out"];
        P3 [label="3.0nGerenciarnEstoque"];

        // Armazenamentos de Dados
        node [shape = record, style = "filled", fillcolor = "#FFF9C4", color = "#FBC02D", fixedsize = false]
        ReservasDS [label="{ <id> D1 | Banco de Dados denReservas }"];
        QuartosDS        [label="{ <id> D2 | Banco de Dados denStatus dos Quartos }"];
        EstoqueDS    [label="{ <id> D3 | Banco de Dados denEstoque }"];
    }

    // --- ESTILOS DE ARESTAS ---
    edge [
        fontname = "Helvetica,Arial,sans-serif"
        fontsize = 9
        color = "#555555"
        arrowsize = 0.8
    ]

    // --- FLUXOS DE DADOS ---
    
    // Interações do Convidado
    Convidado -> P1 [label="Solicitação de Reserva"];
    P1 -> Convidado [label="Confirmação"];

    Convidado -> P2 [label="Chegada"];
    P2 -> Convidado [label="Chave do Quarto/Comprovante"];

    // Interações do Funcionário
    Funcionário -> P3 [label="Atualizar Estoque"];
    P3 -> Funcionário [label="Alertas/Relatórios"];

    // Processo para Armazenamento de Dados
    P1 -> ReservasDS [label="Nova Reserva"];
    ReservasDS -> P1 [label="Verificar Disponibilidade"];
    
    P1 -> QuartosDS [label="Solicitação de Detalhes do Quarto"];
    QuartosDS -> P1 [label="Quartos Disponíveis"];
    
    P2 -> QuartosDS [label="Atualização do Status do Quarto"];
    QuartosDS -> P2 [label="Informações do Quarto"];
    
    P2 -> P3 [label="Detalhes da Estadia"];
    P3 -> EstoqueDS [label="Atualização de Estoque"];
    EstoqueDS -> P3 [label="Níveis de Estoque"];
}

Exemplo 2: DFD Lógico – Sistema de Gestão de Biblioteca

DFD lógico para um Sistema de Gestão de Biblioteca mostrando processos, armazenamentos de dados e fluxos.

digraph LibrarySystem_Logical {
    // --- ESTILO DO GRÁFICO ---
    graph [
        rankdir = TB
        splines = true
        nodesep = 0.5
        ranksep = 0.8
        fontname = "Helvetica,Arial,sans-serif"
        fontsize = 12
    ]

    // --- ESTILOS DE NÓS ---
    node [
        fontname = "Helvetica,Arial,sans-serif"
        fontsize = 11
        penwidth = 1.5
    ]

    // Entidades Externas
    node [shape = box, style = "filled", fillcolor = "#E1F5FE", color = "#0288D1"]
    Membro;
    Bibliotecário;

    // --- LIMITE DO SISTEMA ---
    subgraph cluster_LibrarySystem {
        label = "Sistema de Biblioteca (Lógico)";
        style = "dashed,rounded";
        color = "#757575";
        bgcolor = "#FAFAFA";
        margin = 20;

        // Processos
        node [shape = circle, style = "filled", fillcolor = "#E8F5E9", color = "#388E3C", width = 1.4]
        P1 [label="1.0nGerenciarnCatálogo"];
        P2 [label="2.0nProcessarnEmpréstimos"];
        P3 [label="3.0nGerenciarnDevoluções"];

        // Armazenamentos de Dados
        node [shape = record, style = "filled", fillcolor = "#FFF9C4", color = "#FBC02D"]
        CatalogDS [label="{ <id> D1 | Catálogo denLivros }"];
        TransaçõesDS [label="{ <id> D2 | Registros denEmpréstimos }"];
        MembrosDS [label="{ <id> D3 | Banco de Dados denMembros }"];
    }

    // --- ESTILOS DE ARESTAS ---
    edge [
        fontname = "Helvetica,Arial,sans-serif"
        fontsize = 9
        color = "#555555"
        arrowsize = 0.8
    ]

    // --- FLUXOS DE DADOS ---
    
    // Interações do Membro
    Membro -> P1 [label="Pesquisar Livros"];
    P1 -> Membro [label="Resultados da Pesquisa"];
    
    Membro -> P2 [label="Solicitação de Empréstimo"];
    P2 -> Membro [label="Confirmação de Empréstimo"];
    
    Membro -> P3 [label="Devolver Livros"];
    P3 -> Membro [label="Comprovante de Devolução"];

    // Interações do Bibliotecário
    Bibliotecário -> P1 [label="Adicionar/Atualizar Livros"];
    P1 -> Bibliotecário [label="Confirmação de Atualização do Catálogo"];
    
    Bibliotecário -> P3 [label="Processar Atrasos"];
    P3 -> Bibliotecário [label="Relatório de Atrasos"];

    // Fluxos de Dados
    P1 -> CatalogDS [label="Atualizações de Livros"];
    CatalogDS -> P1 [label="Dados do Catálogo"];
    
    P2 -> CatalogDS [label="Verificar Disponibilidade"];
    CatalogDS -> P2 [label="Status do Livro"];
    
    P2 -> MembrosDS [label="Verificar Status do Membro"];
    MembrosDS -> P2 [label="Informações do Membro"];
    
    P2 -> TransaçõesDS [label="Criar Registro de Empréstimo"];
    TransaçõesDS -> P2 [label="Histórico de Empréstimos"];
    
    P3 -> TransaçõesDS [label="Atualizar Devolução"];
    TransaçõesDS -> P3 [label="Registros de Empréstimos"];
    
    P3 -> MembrosDS [label="Atualizar Status do Membro"];
    MembrosDS -> P3 [label="Informações do Membro"];
}

Exemplo 3: DFD Físico – Sistema de Gestão de Biblioteca

DFD físico para o Sistema de Gestão de Biblioteca mostrando fluxos de dados do Catálogo Web, API de Empréstimo e Processador de Devolução.

digraph LibrarySystem_Physical {
    // --- ESTILO DO GRÁFICO ---
    graph [
        rankdir = TB
        splines = true
        nodesep = 0.5
        ranksep = 0.8
        fontname = "Helvetica,Arial,sans-serif"
        fontsize = 12
    ]

    // --- ESTILOS DE NÓS ---
    node [
        fontname = "Helvetica,Arial,sans-serif"
        fontsize = 11
        penwidth = 1.5
    ]

    // Entidades Externas (Físicas)
    node [shape = box, style = "filled", fillcolor = "#E1F5FE", color = "#0288D1"]
    "Membro da Biblioteca" [label="BibliotecanMembro"];
    "Bibliotecário" [label="FuncionárionBibliotecário"];
    "Sistema de E-mail" [label="Sistema denE-mail"];
    "Gateway de Pagamento" [label="Gateway denPagamento"];

    // --- LIMITE DO SISTEMA ---
    subgraph cluster_LibrarySystem_Physical {
        label = "Sistema de Gestão de Biblioteca (Implementação Física)";
        style = "dashed,rounded";
        color = "#757575";
        bgcolor = "#FAFAFA";
        margin = 20;

        // Processos Físicos (com detalhes de tecnologia)
        node [shape = circle, style = "filled", fillcolor = "#E8F5E9", color = "#388E3C", width = 1.4]
        P1 [label="1.0nCatálogo Webn(HTML, JS)"];
        P2 [label="2.0nAPI denEmpréstimosn(Python/REST)"];
        P3 [label="3.0nProcessador denDevoluçõesn(Java)"];

        // Armazenamentos de Dados Físicos (com detalhes de tecnologia)
        node [shape = record, style = "filled", fillcolor = "#FFF9C4", color = "#FBC02D"]
        CatalogDS [label="{ <id> D1 | PostgreSQLnCatálogo de Livros }"];
        TransaçõesDS [label="{ <id> D2 | MongoDBnRegistros de Empréstimos }"];
        MembrosDS [label="{ <id> D3 | OraclenBanco de Dados de Membros }"];
        
        // Componentes físicos adicionais
        node [shape = box, style = "filled", fillcolor = "#F3E5F5", color = "#8E24AA"]
        "Servidor de Cache" [label="RedisnCache"];
        "Fila de Mensagens" [label="RabbitMQnFila"];
    }

    // --- ESTILOS DE ARESTAS ---
    edge [
        fontname = "Helvetica,Arial,sans-serif"
        fontsize = 9
        color = "#555555"
        arrowsize = 0.8
    ]

    // --- FLUXOS DE DADOS (Físicos) ---
    
    // Interações Físicas do Membro
    "Membro da Biblioteca" -> P1 [label="HTTP GETnPesquisa de Livros"];
    P1 -> "Membro da Biblioteca" [label="HTML/JSONnResultados"];
    
    "Membro da Biblioteca" -> P2 [label="API RESTnSolicitação de Empréstimo"];
    P2 -> "Membro da Biblioteca" [label="JSONnConfirmação"];
    
    "Membro da Biblioteca" -> P3 [label="API RESTnDevolução"];
    P3 -> "Membro da Biblioteca" [label="JSONnComprovante"];

    // Interações Físicas do Bibliotecário
    "Bibliotecário" -> P1 [label="HTTPSnGestão do Catálogo"];
    P1 -> "Bibliotecário" [label="HTMLnConfirmação"];
    
    "Bibliotecário" -> P3 [label="API RESTnProcessar Atrasos"];
    P3 -> "Bibliotecário" [label="Relatório PDF"];

    // Interações com Sistemas Externos
    P2 -> "Sistema de E-mail" [label="SMTPnNotificação"];
    P3 -> "Gateway de Pagamento" [label="HTTPSnPagamento de Multa"];

    // Fluxos de Dados (Físicos)
    P1 -> CatalogDS [label="SQL UPDATE"];
    CatalogDS -> P1 [label="SQL SELECT"];
    
    P1 -> "Servidor de Cache" [label="Atualização do Cache"];
    "Servidor de Cache" -> P1 [label="Hit no Cache"];
    
    P2 -> CatalogDS [label="SQL SELECT"];
    CatalogDS -> P2 [label="RESULTADO SQL"];
    
    P2 -> MembrosDS [label="SQL SELECT"];
    MembrosDS -> P2 [label="RESULTADO SQL"];
    
    P2 -> TransaçõesDS [label="INSERT"];
    TransaçõesDS -> P2 [label="SELECT"];
    
    P2 -> "Fila de Mensagens" [label="PublicarnEvento de Empréstimo"];
    
    P3 -> TransaçõesDS [label="UPDATE"];
    TransaçõesDS -> P3 [label="SELECT"];
    
    P3 -> MembrosDS [label="UPDATE"];
    MembrosDS -> P3 [label="SELECT"];
    
    P3 -> "Fila de Mensagens" [label="PublicarnEvento de Devolução"];
}

Exemplo 4: Processamento de Pedidos de Comércio Eletrônico (DFD Lógico)

DFD lógico para o Processamento de Pedidos de Comércio Eletrônico mostrando fluxos de dados entre Cliente, Fornecedor, Processador de Pagamento e processos internos.

digraph ECommerce_Logical {
    // --- ESTILO DO GRÁFICO ---
    graph [
        rankdir = LR
        splines = true
        nodesep = 0.5
        ranksep = 0.8
        fontname = "Helvetica,Arial,sans-serif"
        fontsize = 12
    ]

    // --- ESTILOS DE NÓS ---
    node [
        fontname = "Helvetica,Arial,sans-serif"
        fontsize = 11
        penwidth = 1.5
    ]

    // Entidades Externas
    node [shape = box, style = "filled", fillcolor = "#E1F5FE", color = "#0288D1"]
    Customer;
    Supplier;
    "Processador de Pagamentos" [label="Processadornde Pagamentos"];

    // --- LIMITE DO SISTEMA ---
    subgraph cluster_ECommerce {
        label = "Sistema de Comércio Eletrônico (Lógico)";
        style = "dashed,rounded";
        color = "#757575";
        bgcolor = "#FAFAFA";
        margin = 20;

        // Processos
        node [shape = circle, style = "filled", fillcolor = "#E8F5E9", color = "#388E3C", width = 1.4]
        P1 [label="1.0nProcessarnPedido"];
        P2 [label="2.0nGerenciarnEstoque"];
        P3 [label="3.0nGerenciarnEntrega"];

        // Armazenamentos de Dados
        node [shape = record, style = "filled", fillcolor = "#FFF9C4", color = "#FBC02D"]
        OrderDS [label="{ <id> D1 | Pedidos }"];
        InventoryDS [label="{ <id> D2 | Estoque }"];
        ShipmentDS [label="{ <id> D3 | Entregas }"];
    }

    // --- ESTILOS DE ARESTAS ---
    edge [
        fontname = "Helvetica,Arial,sans-serif"
        fontsize = 9
        color = "#555555"
        arrowsize = 0.8
    ]

    // --- FLUXOS DE DADOS ---
    
    // Interações do Cliente
    Customer -> P1 [label="Detalhes do Pedido"];
    P1 -> Customer [label="Confirmação do Pedido"];
    
    Customer -> P3 [label="Rastrear Pedido"];
    P3 -> Customer [label="Informações de Rastreamento"];

    // Processador de Pagamentos
    "Processador de Pagamentos" -> P1 [label="Resposta de Pagamento"];
    P1 -> "Processador de Pagamentos" [label="Solicitação de Pagamento"];

    // Fornecedor
    Supplier -> P2 [label="Atualização de Estoque"];
    P2 -> Supplier [label="Solicitação de Reabastecimento"];

    // Fluxos de Dados dos Processos
    P1 -> OrderDS [label="Salvar Pedido"];
    OrderDS -> P1 [label="Histórico de Pedidos"];
    
    P1 -> InventoryDS [label="Verificar Estoque"];
    InventoryDS -> P1 [label="Disponibilidade"];
    
    P1 -> P3 [label="Detalhes da Entrega"];
    
    P2 -> InventoryDS [label="Atualizar Estoque"];
    InventoryDS -> P2 [label="Estoque Atual"];
    
    P3 -> OrderDS [label="Atualizar Status"];
    OrderDS -> P3 [label="Informações do Pedido"];
    
    P3 -> ShipmentDS [label="Criar Entrega"];
    ShipmentDS -> P3 [label="Detalhes da Entrega"];
}


6. Melhores Práticas

Para DFDs Lógicos

  1. Concentre-se nos processos de negócios, e não na tecnologia
  2. Use terminologia de negóciosque os interessados compreendam
  3. Mantenha os processos em níveis de abstração consistentes
  4. Valide com os usuários de negóciospara precisão
  5. Mostre todos os principais fluxos de dados entre componentes

Para DFDs Físicos

  1. Inclua detalhes específicos da tecnologia
  2. Considere desempenho e escalabilidade
  3. Documente as interfaces do sistema claramente
  4. Inclua tratamento de erros e processos de recuperação
  5. Alinhe com a arquitetura real do sistema

Práticas Gerais de Boas Práticas

  1. Comece com um diagrama de contexto
  2. Numere os processos hierarquicamente
  3. Use nomes significativos para todos os componentes
  4. Evite cruzamentos de fluxos de dados
  5. Valide com os interessados regularmente

7. Armadilhas Comuns

7 Armadilhas Comuns dos DFD

Armadilha 1: Misturar Lógico e Físico

❌ Errado:Adicionando nomes de tecnologia de banco de dados em um DFD lógico
✅ Certo:Mantenha o DFD lógico independente de tecnologia

Armadilha 2: Fluxos de dados ausentes

❌ Errado:Mostrando apenas uma direção entre entidades
✅ Certo:Inclua fluxos bidirecionais quando apropriado

Armadilha 3: Muito Complexo

❌ Errado:Colocando 20+ processos em um único diagrama
✅ Certo:Decomponha em múltiplos diagramas focados

Armadilha 4: Rotulagem incorreta de fluxos de dados

❌ Errado: “Dados” como rótulo
✅ Correto: Rótulos descritivos como “Detalhes do Pedido do Cliente”

Armadilha 5: Fronteiras de processo incorretas

❌ Errado: Um processo realizando múltiplas funções não relacionadas
✅ Correto: Processos separados para funções distintas


Conclusão

Diagramas de Fluxo de Dados são ferramentas essenciais para análise e design de sistemas. Compreender a diferença entre DFDs lógicos e físicos ajuda você a se comunicar eficazmente com diferentes partes interessadas em diferentes estágios do ciclo de vida do desenvolvimento de software.

  • DFDs Lógicos pontuam os requisitos de negócios e as soluções técnicas
  • DFDs Físicos orientam decisões de implementação e implantação

Use os exemplos fornecidos como modelos para os seus próprios DFDs, adaptando-os às suas exigências específicas do sistema, seguindo as melhores práticas descritas acima.


Recursos Adicionais

  1. Gerador de DFD Gane e Sarson por IA por Visual Paradigm: Explica como as ferramentas de IA do Visual Paradigm podem gerar DFDs de Gane-Sarson a partir de descrições de texto.
  2. Um guia passo a passo para criar diagramas de fluxo de dados com o Visual Paradigm: Fornece um tutorial para criar DFDs com a ferramenta online do Visual Paradigm, desde o registro até o compartilhamento.
  3. Como criar um diagrama de fluxo de dados (DFD)?: Um guia que aborda o que é um DFD, sua finalidade e os principais tipos (Físico e Lógico).
  4. Guia para Iniciantes em Diagramas DFD SSADM com o Visual Paradigm Online: Um guia introdutório para criar diagramas de fluxo de dados no estilo SSADM usando o Visual Paradigm Online.
  5. Guia abrangente sobre diagramas de fluxo de dados (DFD): Desvendando o fluxo de informações: Uma visão geral dos DFDs, detalhando seus elementos e por que o Visual Paradigm é uma ferramenta adequada para criá-los.
  6. Dominando diagramas de fluxo de dados com o Visual Paradigm: Um guia passo a passo: Um guia prático que utiliza exemplos e modelos para ensinar a criação de DFDs, com estudos de caso como sistemas de compras online.
  7. Compreendendo DFD Lógico vs. DFD Físico: Quando e por que os precisamos: Explica as diferenças, propósitos e casos de uso apropriados para diagramas de fluxo de dados lógicos e físicos.
  8. Guia para Iniciantes em Diagramas de Fluxo de Dados (DFD) com o Visual Paradigm Online: Um tutorial amigável para iniciantes que passa pelos passos da criação de um DFD com o Visual Paradigm Online.
  9. Arquivos de DFD – Guias do Visual Paradigm: Uma coleção de artigos sobre tópicos de DFD, incluindo geradores de IA, validação, equilíbrio e níveis.
  10. Guia de Início para Diagramas de Fluxo de Dados (DFD) com o Visual Paradigm Online: Detalha o processo passo a passo de criação de DFDs, incluindo seus componentes principais e como usar modelos.
  11. Desenhe DFD com a melhor ferramenta DFD: Discute a representação gráfica do fluxo de dados, detalha os DFDs lógicos versus físicos e explora os benefícios de cada tipo.
  12. Guia para Iniciantes sobre Diagramas de Fluxo de Dados (DFD) com o Visual Paradigm Online: Um guia para iniciantes em idioma indonésio sobre DFDs, descrevendo os componentes e o processo passo a passo de criação no Visual Paradigm Online.


Este guia fornece uma base para criar DFDs eficazes. Lembre-se de que bons diagramas evoluem por meio de iterações e feedback de partes interessadas.

This post is also available in Deutsch, English, Español, فارسی, Français, Bahasa Indonesia, 日本語, Polski, Ру́сский, Việt Nam, 简体中文 and 繁體中文.