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