Diagrama de fluxo de dados (DFD)
É um modelo que permite representar o sistema como uma rede de processos, salientando as funções que precisam ser implementadas e os fluxos dos dados manipulados por estas funções.
Definição:
Diagrama de fluxo de dados (DFD)
Representação Gráfica:
• Processos
• Fluxos de dados
• Depósitos de dados
• Entidades externas
DFD• O DFD é composto por processos, depósitos de dados,
fluxos de dados e entidades externas.
Clientes
1.Receberpedido
3.Recolher
pagamentos
entidade externa ou terminador processo
depósito de dados
fluxos de dados
Armazém
Clientes
pedido
Pedido inválido
factura
Detalhes da fatura,nome do cliente
pedidos
Detalhes de pedido
2.Entregar livros
Dados-livros
Guia de remessa
clientes
Detalhes de cliente
pagamentos
fatura
4.Registarcliente
Regras para construir DFD’s
• Escolher nomes significativos para os processo, fluxos, entidades e depósitos• Numerar os processos• Redesenhar os DFD’s tantas vezes quantas forem necessárias• Evitar DFD’s complexos• Certificar-se de que o DFD é internamente consistente
– Evitar processos que tenham entradas e nenhuma saída (e vice-versa)
DFD: Processo
• Função, transformação• Transforma entradas em saídas• Nome: numeração + verbo + objeto• Exemplos:
1. Calcular
Juros
1.Calcular
Juros
DFD: Fluxo (1)
• Usado para descrever movimento de informação de um componente do sistema para outro
• Exemplos:
2. Calcular
média
Valor X
Valor Y
Valor Z
média 3.ValidarNúmero
Nºtelefone
Nº inválido
Nº válido
DFD: Fluxo (2)
• Fluxo de diálogo
• Fluxo divergente
Gerir Informação
Preencherformulário
formulárioformulário preenchido
Validarpedidos
Gerarfatura
Gerar relatórios
Detalhes de pedido
DFD:Depósito de Dados
• Arquivos, bases de dados
• CD’s, microfichas, microfilme
• Um fluxo para um depósito: atualizar, gravar, remover
Gerarrelatórios
Registarcliente
clientesdetalhes
DFD: Entidades Externas
• Estão fora do sistema• O analista não está em posição de mudar o conteúdo das
entidades• Os fluxos conectando a entidade aos processos
representam a interface entre o sistema e o ambiente
Construção de DFD Preliminar
1. Um processo (ou +) um evento da lista de eventos.
2. O nome do processo deve estar de acordo com a resposta que o sistema deve dar ao evento.
3. Definir fluxos de dados de entrada e saída. O processo deve ser capaz de produzir a resposta correta.
4. Usar os depósitos de dados necessários para guardar a informação que será depois usada por outros processos.
5. Verificar a coerência entre este DFD e o diagrama de contexto.
Observações:
1. Um evento pode causar várias respostas
Definir um processo por resposta (se forem independentes)
pedidode cliente
Produzirfatura
fatura
Emitirconfirmação
pedido
pedido confirmado
Exemplo:
Construção de DFD Preliminar
2. Vários eventos podem causar a mesma resposta..
Definir um só processo
Exemplo:
Produzirguia de
remessa
Pagamento p/ cartãode crédito
Pagamento p/dinheiro
guia de remessa
Construção de DFD Preliminar
3. Agrupamento de processos: • Formar níveis de maior abstração.• cada agrupamento de processos deve envolver respostas
(processos) relacionadas. Isto significa que tais processos se relacionam por função ou pelos mesmos dados
• Regra de Miller: 7 ± 2 processos.
Construção de DFD Preliminar
Dicionário de dados
• Descreve o significado dos fluxos de dados e dos depósitos de dados
• Descreve a composição de dados agregados.– Ex.: endereço
• Especificar os valores e unidades relevantes • Descrever os relacionamentos entre depósitos de dados
(diagramas E/R)
Notação
• = é composto por• + e• () opcional• {} iteração• [] selecionar uma das várias alternativas• ** comentário• @ chave de um depósito• | separa alternativas quando se usa []
Dicionário de dados - Exemplos:
• Nome = título + primeiro-nome + apelido• título = [Sr. | Sra.| Prof.| Dr.| Eng.]• primeiro-nome = 1{caracter-válido}• apelido = 1{caracter-válido}• caracter-válido = [A-Z | a-z | ‘ | - | ]• endereço = * ainda não definido*
Dicionário de dados (cont.)
• Dados elementares mais nenhuma decomposição necessária– Ex.: peso, altura
• Dados opcionais– endereço-cliente = (endereço-de-entrega) + (endereço-de-
cobrança)
– endereço-cliente = [endereço-de-entrega | endereço-de-cobrança | endereço-de-entrega + endereço-de-cobrança]
– endereço-cliente = endereço-de-entrega + (endereço-de-cobrança)
Dicionário de dados (cont.)
• Iteração– pedido = nome-cliente + endereço-de-entrega + {item}
– pedido = nome-cliente + endereço-de-entrega + 1{item}10
– a = 1{b}
– a = {b}10
– a = 1{b}10
– a = {b}
• Selecção– sexo = [m | f ]
– tipo-do-cliente = [governo | indústria | universidade | outro]
Dicionário de dados (cont.)
• Sinónimos– freguês = * sinónimo de cliente*
– Evitar seu uso
• Avaliação do DD– todos os dados do DFD estão definidos?
– Todos os elementos do elemento composto foram definidos?
– Há elementos repetidos?
– Há elementos que não existem do DFD?
DFD - Nivelação
• Serve para controlar a complexidade do sistema• Serve p/ organizar o DFD completo em níveis onde cada
nível dá mais detalhe do nível superior• O DFD de nível mais alto é o diagrama de contexto
System1
3
2
3.1
3.3
3.2
3.4
FAQ sobre Nivelação
• Quantos processos por nível?– 7 2 (Regra de Miller)
• Quantos níveis?– Sistemas simples: 2 a 3 níveis
– Sistemas de médio porte : 3 a 6 níveis
– Sistemas de grande porte : 5 a 8 níveis
• Todas as partes do sistema devem ter o mesmo nível de detalhe?– Não: algumas partes do sistema podem ser mais
complexas que outras
FAQ sobre Nivelação (cont.)
• Como mostrar os diferentes níveis ao utilizador?– Depende do tipo de utilizador
• Executivos olham pro diagrama de contexto ou DFD de nível 0
• Operadores olham apenas pra parte do sistema que lhe diz respeito
• Como saber se os níveis de DFDs estão consistentes entre si?– Fluxos de dados de entrada e saída de um nível devem
corresponder aos fluxos de dados de entrada e saída do nível mais abaixo que descreve aquele processo
FAQ sobre Nivelação
• Como mostrar os depósitos de dados nos vários níveis?– Mostrar o depósito no nível mais alto onde ele serve
como interface entre processos
– Mostrar o depósito outra vez em todo o DFD de nível mais baixo que está envolvido na interface
1
2
Depósito 1
1.1 1.2Depósito 1
Depósito 1
2.22.1
FAQ sobre Nivelação
• Como se faz a nivelação de facto?– O desenvolvimento do DFD não é necessariamente top-
down
– Abordagem mista: top-down + bottom-up
– Utilizar a lista de eventos para criar a 1ª versão do DFD:• Pode ser utilizada para criar DFDs de nível mais alto
• Pode ser utilizada para criar DFDs de nível mais baixo
FAQ sobre Nivelação
– Cada grupo de processos envolve dados relacionados entre si
– Se um grupo de processos do DFD preliminar se refere a um depósito (e só este grupo) então pode-se criar um processo de nível mais alto que esconda este depósito
D 1D 3
D 2D 2