Diagrama de fluxo de dados (DFD)
Definição:
 É 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.
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.
entidade externa ou
terminador
Clientes
pedido
depósito de dados
1.
pedido
Receber
Pedido
inválido pedido
fluxos de dados
2.
Entregar
livros
Detalhes de
factura
processo
Dados
Armazém
-livros
pedidos
Detalhes de
Guia de
cliente
remessa
clientes
Detalhes da fatura,
nome do cliente
3.
Recolher
pagamentos
4.
Registar
cliente
fatura
pagamentos
Clientes
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:
Valor X
Nº válido
Valor Y
2.
Calcular
Valor Z
média
média
Nºtelefone
3.
Validar
Número
Nº inválido
DFD: Fluxo (2)
• Fluxo de diálogo
Gerir
formulário Preencher
Informação formulário
formulário
preenchido
• Fluxo divergente
Validar
pedidos
Gerar
relatórios
Detalhes
de pedido
Gerar
fatura
DFD:Depósito de Dados
• Arquivos, bases de dados
• CD’s, microfichas, microfilme
• Um fluxo para um depósito: atualizar, gravar,
remover
Registar detalhes
clientes
cliente
Gerar
relatórios
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.
Construção de DFD Preliminar
Observações:
1. Um evento pode causar várias respostas
Definir um processo por resposta (se forem independentes)
Exemplo:
pedido
de cliente
fatura
Produzir
fatura
Emitir
confirmação
pedido
pedido
confirmado
Construção de DFD Preliminar
2. Vários eventos podem causar a mesma resposta.
Definir um só processo
Exemplo:
Pagamento p/
cartão
de crédito
Pagamento p/
dinheiro
Produzir
guia de
remessa
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.
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-decobrança)
– endereço-cliente = [endereço-de-entrega | endereço-decobrança | endereço-de-entrega + endereço-de-cobrança]
– endereço-cliente = endereço-de-entrega + (endereço-decobranç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
3.2
2
3.1
1
3.4
System
3
3.3
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.1
1.2
Depósito 1
1
Depósito 1
2.1
2
2.2
Depósito 1
FAQ sobre Nivelação
• Como se faz a nivelação de facto?
– O desenvolvimento do DFD não é necessariamente topdown
– 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
D1
D2
D2
D3
Download

Engenharia de Software