Page 1
Análise Estruturada de SistemaUm Estudo Sobre Análise Estruturada de Sistema
Osvaldo Célio Ribeiro
A
, 23/12/05
<!--[if !mso]> <style> v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <o:DocumentProperties> <o:Author>Osvaldo Célio Ribeiro</o:Author> <o:Template>Normal</o:Template> <o:LastAuthor>silvia</o:LastAuthor> <o:Revision>2</o:Revision> <o:TotalTime>7</o:TotalTime> <o:LastPrinted>2001-02-13T14:59:00Z</o:LastPrinted> <o:Created>2001-05-22T12:06:00Z</o:Created> <o:LastSaved>2001-05-22T12:06:00Z</o:LastSaved> <o:Pages>99</o:Pages> <o:Words>13087</o:Words> <o:Characters>74599</o:Characters> <o:Company>Particular</o:Company> <o:Lines>621</o:Lines> <o:Paragraphs>149</o:Paragraphs> <o:CharactersWithSpaces>91612</o:CharactersWithSpaces> <o:Version>9.2812</o:Version> </o:DocumentProperties> </xml><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:WordDocument> <w:HyphenationZone>21</w:HyphenationZone> </w:WordDocument> </xml><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="2050"/> </xml><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <o:shapelayout v:ext="edit"> <o:idmap v:ext="edit" data="1"/> <o:rules v:ext="edit"> <o:r id="V:Rule12" type="arc" idref="#_x0000_s1189"/> <o:r id="V:Rule14" type="arc" idref="#_x0000_s1190"/> <o:r id="V:Rule16" type="arc" idref="#_x0000_s1211"/> <o:r id="V:Rule18" type="arc" idref="#_x0000_s1213"/> </o:rules> </o:shapelayout></xml><![endif]-->
Page 2
Uberlândia, Dezembro/2000.
Análise Estruturada de SistemaUm Estudo Sobre Análise Estruturada de Sistema
Osvaldo Célio Ribeiro
Monografia apresentada ao Curso de Ciência da Computação do Centro Universitário do Triângulo - Unit, como requisito básico à obtenção do grau de Bacharel em Ciência da Computação, sob a orientação do Prof. Jansen Rubens.
Page 3
Uberlândia, Dezembro/2000.
Page 4
Análise Estruturada de SistemaUm Estudo Sobre Análise Estruturada de Sistema
Osvaldo Célio Ribeiro
Monografia apresentada ao Curso de Ciência da Computação do Centro Universitário do Triângulo - Unit, como requisito básico à obtenção do grau de Bacharel em Ciência da Computação.
Prof. Jansen Rubens F. da Silva, Msc
(Orientador )
Prof. Marcos Ferreira de Rezende, Msc
(Coordenador de Curso)
Hélio Rubens Soares, Msc.
(Avaliador )
Clarimundo Machado Moraes Júnior, Msc.
(Avaliador )
Page 5
Uberlândia, Dezembro/2000.
Page 6
Agradecimentos à
Deus pela graça da vida e pela capacidade que me concedeu,
Minha mãe, D. Glória, por suas lutas e dedicações ao meu desenvolvimento
físico, intelectual e espiritual,
A todos os meus colegas pelo companheirismo e auxílio,
Ao meu orientador pela paciência e apoio e,
Profª. Silvia, pela dedicação e companheirismo aos alunos do curso.
Page 7
RESUMO
Este trabalho visa fazer um estudo da análise estruturada e mostrar que todo projeto de sistema informatizado, para ser conciso, modelado e apresentar boa qualidade, deve passar por uma boa análise. O estudo da Análise Estruturada proporciona ao analista uma visão do sistema em todo a sua plenitude, permitindo a ele visualizar o sistema como um todo, como partes de um todo, além de permitir através de suas várias ferramentas, uma modelagem contínua à medida que suas ferramentas vão sendo aplicadas no desenvolvimento da análise. Portanto a Análise Estruturada é de fundamental importância na vida de todos os analistas, que queiram trabalhar na área de projetos de sistemas de informática, pois ela fornece condições ideais para que o analista desenvolva projetos de alta qualidade e confiabilidade. O objetivo deste trabalho é apresentar as diversas ferramentas necessárias para se desenvolver uma análise estruturada de sistemas, bem como ferramentas opcionais que o analista poderá utilizar, caso necessite delas.
Page 8
Sumário
1. Introdução 01
2. A evolução da Análise Estruturada 02
2.1 Fases da Evolução 02
2.2 O que mudou na Analise de Sistemas 03
3. O Modelo Ambiental 06
3.1 Ferramentas utilizadas na definição do ambiente 08
3.1.1 Declaração de Propósitos e Objetivos 08
3.1.2 O Diagrama de Contexto 09
3.1.3 A Lista de Eventos 10
4. O Modelo Comportamental 11
4.1 Ferramentas utilizadas na definição do Modelo Comportamental 12
4.2 O Diagrama de Fluxo de Dados - DFD 12
4.2.1 Componentes do Diagrama de Fluxo de Dados 13
4.2.1.1 O Processo 13
4.2.1.2 O Fluxo 14
4.2.1.3 O Depósito 18
4.2.1.4 O Terminador 20
4.2.2 Diretrizes para elaboração de um DFD 21
4.2.3 Níveis de um DFD 22
5. O Dicionário de Dados 27
5.1 Notação e significado de Dicionários de Dados 27
5.1.1 Definições 29
5.1.2 Elementos de Dados Elementares 30
5.1.3 Elementos de Dados Opcionais 30
Page 9
5.1.4 Iterações 30
5.1.5 Seleção 31
5.1.6 Sinônimos 32
6. Especificação de Processos 33
6.1 Objetivos da Especificação de Processos 34
6.2 Ferramentas da Especificação de Processos 35
6.2.1 O Português Estruturado 36
6.2.1.1 Construções Lógicas do Português Estruturado 37
6.2.1.2 Exemplos de Construções em Português Estruturado 39
6.2.1.3 A Estrutura de uma Declaração 40
6.2.1.4 A Composição em Português Estruturado 42
6.2.1.5 O Vocabulário no Português Estruturado 44
6.2.1.6 Vantagens do Português Estruturado 45
6.2.1.7 Desvantagens do Português Estruturado 46
6.2.2 Tabelas de Decisão 46
7. O Diagrama de Transição de Estado – DTE 48
7.1 Notações para o Diagrama de Transições de Estado 48
7.1.1 Estados do Sistema 49
7.1.2 Mudanças de Estado 50
7.1.2.1 Condições e Ações 50
7.2 Diagramas Subdivididos 51
7.3 O Relacionamento do DTE com os outros componentes do modelo 53
8. Modelagem de Dados 54
8.1 Diagrama de Entidades-Relacionamentos - DER 55
8.2 Componentes de um Diagrama Entidades-Relacionamentos 55
8.2.1 Tipos de Objetos 56
8.2.2 Relacionamentos 57
8.2.2.1 Notações alternativas para relacionamentos 59
Page 10
8.3 Indicadores de Subtipos/Supertipos 60
8.4 Diretrizes para Construção de um DER 62
8.4.1 A inclusão de Tipos de Objetos Adicionais 62
8.4.2 A supressão de Tipos de Objetos 65
9. O Balanceamento dos Modelos 65
9.1 O Balanceamento entre o Dicionário de Fluxo de Dados e o
Dicionário de Dados 67 9.2 O Balanceamento do Dicionário de Fluxo de Dados
relação as Especificações de Processos 67
9.3 O Balanceamento das Especificações de Processos em relação ao
Diagrama de Fluxo de Dados e ao Dicionário de Dados 68
9.4 O Balanceamento do Dicionário de Dados em relação do Dicionário
de Fluxo de Dados e as Especificações de Processos 68
9.5 O Balanceamento do Diagrama Entidades-Relacionamentos em
relação ao Digrama de Fluxo de dados e às Especificações de Processos
9.6 O Balanceamento do Diagrama Fluxo de Dados em relação do
Diagrama Transições de Estado 69
Apêndice A 71
Apêndice B 77
10. Conclusão 88
Referências Bibliográficas 89
Page 11
LISTA DE FIGURAS
1. – Um Processo
2. - Um Processo
3. – Um Processo
4. - Fluxo de Dados
5. – Fluxo de Dados que entra e sai de um processo
6. - Fluxo Convergente
7. – Fluxo Divergente
8. – Depósito de Dados
9. – Depósito de Dados 10.– Fluxos de Dados que entram e saem de um Processo
11.– Entidade (Terminador) 12.– Diagrama de Contexto
13.– Diagrama de Fluxo de Dados em Níveis
14.- Diagrama de Fluxo de Dados em Níveis
15.– Construção de Seqüência em Português Estruturado
16. – Construção de Decisão em Português Estruturado
17.– Construção de Repetição em Português Estruturado
18.– Construção de Repetição em Português Estruturado
19.– Estrutura montada em Português Estruturado
20.– Modelo de Diagrama de Transições de Estado (DTE) 21.– Construção de Condição e Ação em um DTE
22.– Diagrama de Fluxo de Dados (DFD) 23.– Diagrama de Transições de Estado (DTE) 24.– Tipo de Objeto de um Diagrama de Entidades-Relacionamentos (DER) 25.– Relacionamentos entre Objetos em um DER
26.– Relacionamentos múltiplos em um DER
27.– Notação alternativa para relacionamentos em um DER
28. - Notação alternativa para relacionamentos em um DER
29.– Um indicador de supertipo/subtipo
30.– Relacionamento em um DTE
31.- Relacionamento com Tipo de Objeto Associativo em um DTE
32.– Tipo de Objeto embutido
33.– Relacionamento com objeto embutido retirado
34.- Diagrama de Contexto
Page 12
35.– Diagrama de Fluxo de Dados
36.– Diagrama de Fluxo de Dados em nível
Page 13
LISTA DE TABELAS
1. – Técnicas de Análise de Sistemas2. – Tabela de Decisão
Page 14
1 . Introdução
Breve Histórico
A análise de sistemas não se iniciou pelo descobrimento de uma técnica, ou pelo lançamento de um
livro, mas com muitas contribuições, que foram dadas por trabalhos de modelagem da análise, que se
iniciaram no final dos anos 60 e foram até os meados dos anos 70.
Contudo, a primeira aparição da abordagem da análise estruturada aconteceu como um adjunto a
outro importante tema – “o projeto estruturado”.
Os cientistas da computação necessitavam de uma notação gráfica para representar os dados e os
processos que os transformavam; daí então esses processos seriam mapeados numa arquitetura de projeto.
Foi De Marco quem popularizou o termo “Análise Estruturada”. Em seu livro sobre o assunto, De
Marco introduziu e nomeou símbolos gráficos que possibilitariam ao analista criar modelos de fluxo de
informações, sugeriu uma heurística para o uso desses símbolos; sugeriu que um dicionário e narrativas
de processamento pudessem ser usados como complemento dos modelos de fluxo de informação.
2 - A Evolução da Análise Estruturada
2.1 - Fases da Evolução
Page 15
Como várias outras ciências, a ciência da computação vem sofrendo grandes evoluções em todos os
seus seguimentos, seja de análise, de desenvolvimento de software, de sistemas operacionais, de
ferramentas de desenvolvimento de sistemas, de hardware e na área da análise de sistemas
principalmente.
Da análise convencional, iniciada com trabalhos feitos no final da década de 60 e que se estendeu
até meados dos anos 70, que se caracteriza pelas técnicas de abordagens funcionais, com especificações
narrativas, difíceis de ler e de se compreender, e muitas vezes, difíceis de se manter; passando pela
análise estruturada clássica, que após os meados dos anos 70, se caracterizada por versões inicias de
modelos gráficos e ênfase na modelagem de sistemas já existentes, antes de se fazer uma modelagem do
sistema novo. Chegamos então à análise estruturada moderna, apresentada nas obras de [Ward e Mellor,
1985], [McMenamime Palmer, 1984] e [Edward Yourdon, 1978]. E, por fim chegamos à análise essencial
de sistemas, que se caracteriza pela abordagem funcional, de dados de controle, e o conceito de essência
de um sistema.
Não será abordado aqui, as evoluções na área de Análise Orientada a Objetos, já que este não é o
objetivo desta monografia.
2.2 - O que mudou na Análise de Sistemas
As principais áreas de mudança ocorridas desde a apresentação da Análise Estruturada no final dos
anos 70, incluem:
Ø Mudanças de terminologias:
Agora se utiliza a expressão “modelo ambiental” para descrever o que antes era chamado de diagrama de
contexto, devido ao fato de a análise estruturada clássica não incluir a lista de eventos como parte do
modelo formal do sistema. Utiliza-se também o termo essencial ao invés de lógico, para descrever o
modelo que se concentra naquilo que o sistema deve fazer, e a palavra implementação em lugar de físico
Page 16
para descrever o modelo voltado para como o sistema deve ser desenvolvido.
Ø Subdivisão de eventos:
Utilização de uma lista de eventos, destinada a orientar o desenvolvimento inicial do modelo
comportamental.
Ø Redução ou eliminação do uso do modelo físico atual, em favor do modelo essencial do
sistema.
Ø Utilização de ferramentas de modelagem de tempo real, a análise estruturada clássica era
voltada inicialmente para o desenvolvimento de sistemas comerciais diretos, não tratando problemas
de interrupções, sinais e tempo. Como muitos sistemas hoje em dia incluem diversos aspectos de
tempo real esse progresso foi substancial no desenvolvimento de novas aplicações. O DFD foi
aumentado com os fluxos de controle, sendo apresentados os Diagramas de Transição de Estado –
DTE, como uma nova ferramenta de modelagem para representar os requisitos de tempo dependência
de um sistema.
Ø Estreita integração entre a modelagem de dados e a modelagem de processos. Os
Diagramas de Estrutura de Dados utilizados na Análise Clássica para modelar os relacionamentos
entre os depósitos de dados no DFD, que normalmente causa transtornos na implementação do bando
de dados físico é substituído pelo Diagrama de Entidades e Relacionamentos.
Page 17
Dentro das técnicas de análise de sistemas citadas, podemos descrevê-las conforme tabela abaixo:
Técnicas Abordagens Ferramentas
• Análise Tradicional
ou Convencional
• funcional • textos
• fluxogramas
• Análise Estruturada • funcional
• dados
• Coleta de dados
• Diagrama de Fluxo de Dados
– DFD
• Diagrama de Estrutura de
Dados -DED
• Miniespecificações
• Dicionário de Dados
• Análise Essencial • funcional
• dados
• controle
• Tabela de Eventos
• Diagrama de Fluxo de Dados
– DFD
• Diagrama de Entidade e
Relacionamento – DER
• Diagrama de Transições de
Estado - DTE.
• Diagrama de Estrutura de
Page 18
Dados – DED
Tabela 1
3 – O Modelo Ambiental
O modelo ambiental é o modelo primitivo, aquele inserido em algum contexto já existente, do qual
o usuário já se utiliza para a realização de suas tarefas, e que deve ser definido pelo analista. O modelo
ambiental define a interface entre o sistema e o resto do universo.
Todo sistema seja ele de qual porte for, estará inserido em sistema ainda maior e mais complexo do que ele. Portanto, qualquer sistema que o homem venha a definir, será sempre um subsistema de um sistema ainda maior dentro de um determinado ambiente.
A determinação da fronteira entre o sistema e o ambiente irá definir o que está dentro e o que está
fora do sistema.
Portanto, o analista precisa saber quais as informações entram no sistema vindas do meio externo e
quais informações são geradas internamente pelo sistema como saídas para serem transmitidas para o
ambiente externo.
Os sistemas devem ser racionais e objetivos, para produzirem saídas como resposta a um evento ou
a um estímulo do ambiente externo, e não produzir saídas aleatoriamente. Desse modo, outro aspecto
básico do modelo ambiental é a identificação dos eventos que ocorrem no ambiente, aos quais o sistema
deve reagir.
O analista deve se ater apenas aos eventos que ocorram no ambiente externo que exijam uma
resposta do sistema.
A determinação da fronteira do sistema é de extrema importância, pois se o analista escolher um
escopo demasiadamente pequeno para o projeto, ele estará fadado ao fracasso, porque estará sub-
limitando o sistema e deixando de fora partes vitais para que o sistema produza e processe as informações
que o ambiente externo solicita.
O inverso também levará o analista ao fracasso. Pois se o analista escolher um escopo grande
demais, poderá estar lidando com situações com as quais não tenha domínio, ou que vão além dos limites
do sistema que o usuário necessita.
Portanto, para a definição da fronteira do sistema, o analista deve levar em consideração alguns
fatores como:
Page 19
• A necessidade do usuário ou da empresa em relação ao sistema, de forma que o sistema venha
acrescentar algo a mais do que aquilo que o usuário ou a empresa já tenham com os processos não
informatizados que utilizam, tais como:
o aumento da produtividade
o obtenção e geração de informações e dados administrativos, financeiros,
contábeis, estatísticos, produtivos, científicos etc
o lançamento de novos produtos e serviços
o otimização de processos
o melhoria da qualidade, etc
• o desejo da empresa ou usuários de maximizar sua produção ou prestação de serviços e minimizar
custos e gastos.
• à necessidade dos usuários ou da empresa de atenderem às normas e preceitos legais de tributação,
funcionamento, qualidade, higiene, concorrência etc.
• ao desejo dos usuários ou empresas de lançamento estratégico de novos produtos e serviços que
garantam diferencial e qualidade.
Portanto, a área dentro das fronteiras do sistema está sujeita a modificações, enquanto as áreas
externas às fronteiras do sistema não são passíveis de alterações pelo analista de sistemas.
Durante a fase de análise, é também de suma importância que o analista efetue a coleta da maior
quantidade possível de informações sobre o sistema e seus requisitos. A coleta de dados poderá ser feita
através de entrevista com usuários, análise do organograma da empresa etc, conforme apêndice desta
monografia.
3.1 – Ferramentas utilizadas na definição do ambiente
Page 20
A modelagem ambiental consiste em três componentes:
1. Declaração de Propósito e Objetivos
2. Diagrama de Contexto
3. Lista de Eventos
3.1.1 – A Declaração de Propósito e Objetivos
A declaração de propósito e objetivos é o primeiro componente do modelo ambiental. Ela é
definida em função do usuário e seus objetivos com relação do sistema.
Ela pode ser definida em uma, duas ou diversas sentenças, contando que seja uma declaração
concisa e breve dos objetivos do sistema.
A declaração de propósito e objetivos não se destina a dar uma descrição detalhada e abrangente do
sistema, pois o resto destas tarefas será atribuído ao restante do modelo ambiental e comportamental.
A declaração de objetivos, para muitos analistas, deve relacionar os benefícios tangíveis e
quantificáveis que serão obtidos pelo novo sistema.
Contudo, tal declaração de objetivos quando aplicada a grandes sistemas pode tornar-se extensa e
sem nenhuma vantagem prática para o analista, visto que os grandes sistemas são muitos complexos e
abrangentes. Já em pequenos sistemas, pode ser utilizada com bom proveito e aplicação.
3.1.2 – O Diagrama de Contexto
O Diagrama de Contexto é um caso especial do Diagrama de Fluxo de Dados; no qual o sistema
inteiro é representado por um único processo .
O Diagrama de Contexto realça diversas características do sistema tais como:
• As entidades (terminadores) com os quais o sistema se comunica.
Page 21
• Os dados recebidos pelo sistema do meio exterior, os quais devem ser processados de
alguma forma; bem como os dados produzidos pelo sistema e enviados para o meio exterior.
• O limite (fronteira) do sistema e o resto do universo.
3.1.3 – A Lista de Eventos
A lista de eventos é uma lista narrativa dos estímulos sofridos pelo sistema do meio externo e aos
quais o sistema deve responder.
Os eventos podem ser classificados como:
• evento de controle
• evento temporal e
• evento orientado por fluxo
Um evento orientado por fluxo é sempre associado a um fluxo de dados; isto é, o sistema toma
conhecimento do evento quando chega um grupo de dados.
Um evento temporal é disparado em um determinado momento pelo sistema, independentemente
de fluxo de dados.
Os eventos de controle são um caso especial dos eventos temporais, que ocorrem quando o
sistema recebe algum estímulo externo.
Page 22
4 – O Modelo Comportamental
O modelo comportamental é o modelo que mostra o comportamento interno do sistema, para que
este possa interagir corretamente com o ambiente. A continuação do modelo comportamental envolve o
desenvolvimento de um Diagrama de Fluxo de Dados preliminar ou um Diagrama Entidades-
Relacionamento, bem como a elaboração dos itens inicias do Dicionário de Dados.
Uma das abordagens do modelo comportamental envolve fundamentalmente o desenvolvimento de
uma primeira versão do DFD com processos (bolhas) para responder a cada evento que tenha sido
mencionado na lista de eventos.
Depois os depósitos de dados são criados para modelar os dados no DFD. Por fim, os fluxos de
dados de entrada e saída são adequadamente interligados aos processos.
Daí verifica-se o conjunto DFD e Diagrama de Contexto para manter a consistência.
A partir daí, dá-se início a um processo de limpeza e detalhamento, para produzir um modelo bem
organizado para ser apresentado ao usuário.
4.1 – Ferramentas utilizadas na definição do modelo comportamental
O Modelo Comportamental apresenta as seguintes ferramentas para o sua elaboração :
Page 23
1. Diagrama de Fluxo de Dados – DFD
2. Dicionário de Dados – DD
3. Especificação de Processo
4. Diagrama de Transição de Estados - DTE
4.2 – O Diagrama de Fluxo de Dados - DFD
Como uma ferramenta gráfica da análise estruturada que descreve o fluxo de informações e as suas
transformações, à medida que entram e saem dos processos, ele mostra graficamente, através de objetos,
que são os procedimentos, os depósitos de dados, as entidades externas e as associações, que são os
fluxos de dados, uma representação simples e sem instruções de todo o modelo do sistema, utilizando-se
de alguns componentes, que permitirão sua construção, onde usuários consigam, de forma fácil, sem
grandes esclarecimentos ou conhecimentos de informática, compreender o modelo do sistema, tanto do
ponto de vista funcional como de comportamento.
O DFD nos permite imaginar um sistema como uma rede de processos funcionais interligados por
fluxos e depósitos de dados.
O DFD deve ser construído em um padrão único, daí a necessidade de se estabelecer um padrão
para os seus componentes, onde cada componente será igualmente representado em todo o modelo do
sistema. Ele deve ser também consistente, correto e claro.
O DFD pode ser desenhado através de ferramentas computadorizadas, ou mesmo manualmente.
Aqueles desenhados por computador, são mais facilmente manipulados, podendo ser modificados e
alterados com menos esforços e perda de tempo.
4.2.1 – Os componentes do Diagrama de Fluxo de Dados
Page 24
4.2.1.1 – O Processo
Os processos são parte do DFD, que mostra as funções, onde as entradas são transformadas em
saídas, isto significa que uma entrada pode ser transformada em uma ou mais saídas, que mais de uma
entrada, pode ser transformada em uma única saída ou em várias saídas, ou ainda, que várias entradas
podem ser transformadas em várias saídas ou em uma única saída.
Há várias formas de se representar um processo em um DFD, tais como bolhas, por círculos, por
retângulos ou ainda por retângulos com os vértices curvos.
Os processos são descritos com uma única palavra ou sentenças simples, as quais procuram
descrever o que o processo faz.
Figura -1 Figura - 2
Exemplo de um processo outra forma de representar um processo
Figura - 3
Representação alternativa de um processo - Exemplo adaptado : Yourdon E., pág . 181.
1.
Calcular Impostos sobre Vendas
, 23/12/05
<!--[if gte vml 1]><v:roundrect id="_x0000_s1028" style='position:absolute;left:0;text-align:left;margin-left:36pt;margin-top:.65pt; width:90pt;height:64.15pt;z-index:3' arcsize="10923f"> <v:textbox style='mso-next-textbox:#_x0000_s1028'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoBodyText2 align=center style='text-align:center'>1.</p> <p class=MsoBodyText2><![if !supportEmptyParas]> <![endif]><o:p></o:p></p> <p class=MsoBodyText2>Calcular Impostos sobre Vendas</p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:roundrect><v:line id="_x0000_s1527" style='position:absolute;left:0; text-align:left;z-index:272' from="36pt,19.8pt" to="126pt,19.8pt"/><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:oval id="_x0000_s1026" style='position:absolute;left:0;text-align:left;margin-left:36pt;margin-top:3pt; width:1in;height:72.65pt;z-index:1'> <v:textbox style='mso-next-textbox:#_x0000_s1026'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoBodyText2 align=center style='text-align:center'><span style='font-size:8.0pt;mso-bidi-font-size:12.0pt'>1.<o:p></o:p></span></p> <p class=MsoBodyText2><span style='font-size:8.0pt;mso-bidi-font-size:12.0pt'>Calcular Impostos sobre Vendas<o:p></o:p></span></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:oval><v:rect id="_x0000_s1027" style='position:absolute;left:0; text-align:left;margin-left:246.75pt;margin-top:12pt;width:63pt;height:54pt; z-index:2'> <v:textbox style='mso-next-textbox:#_x0000_s1027'/> </v:rect><![endif]-->
Page 25
4..2.1.2 – O Fluxo
Os fluxos representam as informações que são passadas de um processo para outro. Podem
constituir-se de dados completos ou de fragmentos de dados. Os fluxos levam aos processos as
informações que eles precisam para gerar as saídas. Eles representam dados em movimento.
Os fluxos são graficamente representados por uma seta que entra e sai dos processos, e o sentido da
seta indica para onde as informações (dados) estão indo e de onde estão vindo. O fluxo recebe um nome
que é colocado ao seu lado. Esse nome geralmente descreve com uma ou mais palavras os dados que o
fluxo transporta.
Consulta cliente
Figura 4 - Exemplo adaptado: Yourdon, E. pág. 182
Um fluxo transporta somente um tipo de pacote, o que é indicado pelo nome do fluxo; há’algumas
regras para se atribuir um nome a um fluxo de dados, por exemplo, um analista não pode atribuir a um
fluxo de dados nomes como dados do cliente, dados da venda e outras coisas mais.
Quando for útil reunir vários fluxos de dados elementares em um único fluxo, como dados da
fatura, no lugar de dados do cliente, dados da venda, dados dos produtos etc., este fluxo consolidado, deve
ser explicado no dicionário de dados.
O fluxo de dados pode ser seletivo, ou seja, permite que apenas um conjunto estritamente definido
de dados passe por ele, ou permitir que os dados passem por ele indiscriminadamente.
, 23/12/05
<!--[if gte vml 1]><v:line id="_x0000_s1526" style='position:absolute;left:0;text-align:left;z-index:271' from="-2pt,.6pt" to="232pt,.6pt"> <v:stroke endarrow="block"/> </v:line><![endif]-->
Page 26
Ex.: o dado (238.457.981-36)
Figura 5
Neste exemplo, o fluxo que entra no processo permite que qualquer número passe por ele, enquanto
que aqueles que saem do processo, são extremamente seletivos, ou seja, no fluxo número-de-cpf-válido,
só passa números de cpf que são válidos, e o fluxo de número-de-cpf-inválido só transporta números de
cpf que não são válidos.
Nota-se também, que um fragmento de dados (p.ex: 238.457.981-36), tem significado diferente
quando passa pelo fluxo rotulado número-de-cpf e quando passa pelo fluxo número-de-cpf-válido. No
primeiro caso indica que o número de cpf pode ser válido ou inválido, no segundo caso o número de cpf é
válido.
Os fluxos também podem ser convergentes e divergentes, ele será divergente quando uns pacotes de
dados complexos forem divididos em pacote de dados mais simples e enviados para diferentes partes do
sistema, ou ainda, quando um pacote de dados é envidado para diversas partes do sistema; ele será
convergente, quando pacotes de dados mais simples forem reunidos em um pacote de dados mais
complexo.
número-de-cpf-válido
número-de-cpf
número-de-cpf
-inválido
, 23/12/05
<!--[if gte vml 1]><v:line id="_x0000_s1047" style='position:absolute;left:0;text-align:left;z-index:5; mso-position-horizontal-relative:text;mso-position-vertical-relative:text' from="54pt,63.3pt" to="171pt,63.3pt"> <v:stroke endarrow="block"/> </v:line><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:rect id="_x0000_s1048" style='position:absolute;left:0;text-align:left;margin-left:53.85pt; margin-top:28.65pt;width:108pt;height:27pt;z-index:6' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1048'/> </v:rect><v:line id="_x0000_s1528" style='position:absolute;left:0; text-align:left;z-index:273' from="252pt,37.05pt" to="405pt,37.05pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1529" style='position:absolute;left:0; text-align:left;z-index:274' from="255pt,84.15pt" to="408pt,84.15pt"> <v:stroke endarrow="block"/> </v:line><v:rect id="_x0000_s1051" style='position:absolute;left:0; text-align:left;margin-left:266pt;margin-top:56.1pt;width:2in;height:18.6pt; z-index:8' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1051'/> </v:rect><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:oval id="_x0000_s1042" style='position:absolute; left:0;text-align:left;margin-left:171pt;margin-top:18.3pt;width:90pt; height:81pt;z-index:4;mso-position-horizontal-relative:text; mso-position-vertical-relative:text'> <v:textbox style='mso-next-textbox:#_x0000_s1042'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal>Valida número de CPF</p> <p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:oval><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:rect id="_x0000_s1049" style='position:absolute;left:0;text-align:left;margin-left:252pt; margin-top:9pt;width:135pt;height:18.6pt;z-index:7' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1049'/> </v:rect><![endif]-->
Page 27
Figura 6 - Fluxo convergente
Figura 7 - Fluxo Divergente
Como o analista de sistemas quer representar através do DFD as partes funcionais de um sistema
para ser implementados para computadores, os dados dos fluxos conterão informações do tipo: bits,
mensagens, números inteiros, de ponto flutuante e outros dados que o computador trabalha.
4.2.1.3 – O Depósito
Inss a pagar
, 23/12/05
<!--[if gte vml 1]><v:oval id="_x0000_s1063" style='position:absolute;left:0;text-align:left;margin-left:99pt;margin-top:28.35pt; width:81pt;height:81pt;z-index:16'> <v:textbox style='mso-next-textbox:#_x0000_s1063'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal>Calcular impostos s/ folha pagto</p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:oval><v:line id="_x0000_s1065" style='position:absolute;left:0; text-align:left;z-index:17' from="180pt,68.4pt" to="315pt,68.4pt"> <v:stroke endarrow="block"/> </v:line><v:rect id="_x0000_s1068" style='position:absolute;left:0; text-align:left;margin-left:207pt;margin-top:46.35pt;width:99pt;height:18pt; z-index:19' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1068'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal>Irrf a pagar</p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:rect><v:rect id="_x0000_s1069" style='position:absolute;left:0; text-align:left;margin-left:171pt;margin-top:105.8pt;width:108pt;height:27pt; z-index:20' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1069'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal>Pis a pagar</p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:rect><v:line id="_x0000_s1339" style='position:absolute;left:0; text-align:left;z-index:191' from="0,67.85pt" to="99pt,67.85pt"> <v:stroke endarrow="block"/> </v:line><v:rect id="_x0000_s1340" style='position:absolute;left:0; text-align:left;margin-left:0;margin-top:39.65pt;width:99pt;height:18pt; z-index:192' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1340'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal>Base de cálculo</p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:rect><v:line id="_x0000_s1539" style='position:absolute;left:0; text-align:left;flip:y;z-index:281' from="2in,1.6pt" to="2in,28.6pt"/><v:line id="_x0000_s1540" style='position:absolute;left:0;text-align:left;z-index:282' from="2in,2.6pt" to="315pt,2.6pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1541" style='position:absolute;left:0; text-align:left;flip:y;z-index:283' from="2in,113.85pt" to="2in,140.85pt"/><v:line id="_x0000_s1542" style='position:absolute;left:0;text-align:left;z-index:284' from="2in,142.9pt" to="315pt,142.9pt"> <v:stroke endarrow="block"/> </v:line><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:rect id="_x0000_s1067" style='position:absolute;left:0;text-align:left;margin-left:180pt; margin-top:9pt;width:81pt;height:27pt;z-index:18' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1067'/> </v:rect><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:oval id="_x0000_s1052" style='position:absolute;left:0;text-align:left;margin-left:180pt; margin-top:49.1pt;width:81pt;height:1in;z-index:9'> <v:textbox style='mso-next-textbox:#_x0000_s1052'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal>Calcular Hora Extra</p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:oval><v:line id="_x0000_s1053" style='position:absolute;left:0; text-align:left;z-index:10' from="261pt,87.2pt" to="387pt,87.2pt"> <v:stroke endarrow="block"/> </v:line><v:rect id="_x0000_s1054" style='position:absolute;left:0; text-align:left;margin-left:270pt;margin-top:65.15pt;width:108pt;height:18pt; z-index:11' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1054'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal>hora extra</p> <p class=MsoNormal>hora extra</p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:rect><v:rect id="_x0000_s1059" style='position:absolute;left:0; text-align:left;margin-left:49pt;margin-top:15pt;width:108pt;height:18pt; z-index:12' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1059'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal>qtde horas extras</p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:rect><v:rect id="_x0000_s1060" style='position:absolute;left:0; text-align:left;margin-left:48pt;margin-top:45.95pt;width:126pt;height:20.15pt; z-index:13' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1060'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal>carga horária mensal</p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:rect><v:rect id="_x0000_s1061" style='position:absolute;left:0; text-align:left;margin-left:51pt;margin-top:83.05pt;width:99pt;height:18pt; z-index:14' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1061'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal>salário mensal</p> <p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:rect><v:rect id="_x0000_s1062" style='position:absolute;left:0; text-align:left;margin-left:54pt;margin-top:122.1pt;width:135pt;height:18pt; z-index:15' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1062'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal>percentual da hora extra</p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:rect><v:line id="_x0000_s1531" style='position:absolute;left:0; text-align:left;z-index:275' from="3in,32.95pt" to="3in,50.95pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1533" style='position:absolute;left:0; text-align:left;z-index:276' from="45pt,32.95pt" to="3in,32.95pt"/><v:line id="_x0000_s1534" style='position:absolute;left:0;text-align:left;z-index:277' from="45pt,66pt" to="189pt,66pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1535" style='position:absolute;left:0; text-align:left;z-index:278' from="47pt,103.05pt" to="182pt,103.05pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1536" style='position:absolute;left:0; text-align:left;z-index:279' from="45pt,146.15pt" to="3in,146.15pt"/><v:line id="_x0000_s1537" style='position:absolute;left:0;text-align:left;flip:y; z-index:280' from="3in,126.1pt" to="3in,144.1pt"> <v:stroke endarrow="block"/> </v:line><![endif]-->
Page 28
É o local aonde os dados serão armazenados de forma modulada e atemporal. O depósito de dados
para o analista de sistemas pode ser um banco de dados moderno, um arquivo binário, um arquivo tipo
texto, que utiliza como estrutura física para serem armazenados, um disquete, uma unidade de CD, um
disco rígido de computador, uma unidade de Fita etc.
Um depósito de dados pode ser composto por um livro caixa de uma pequena empresa, onde o
empresário registra as entradas e saídas de sua movimentação financeira, pode ser também um quadro
negro, onde o professor registra os dados das aulas. Como podemos notar, os depósitos de dados podem
ser de formas e tipos variados.
O depósito de dados existe para atender a um propósito, que pode ser um requisito do usuário, ou
por um aspecto prático da implementação do sistema.
Os depósitos de dados podem ser alterados pelos processos, que solicitam, alteram e manipulam
seus dados. O depósito é também passivo, e os dados não transitam a partir dele pelos fluxos a menos que
um processo o requisite.
As alterações de dados do depósito pode ser uma escrita, uma exclusão, uma alteração de dados de
forma parcial ou total, podendo envolver pequenos dados de um pacote de dados, até milhares de
alterações.
Nas inclusões de dados, estas podem ser feitas em qualquer local do depósito, podem ser colocadas
no início, meio ou no final do depósito. Hoje em dia existem sofisticados bancos de dados informatizados
que gerenciam todas as manipulações de dados ocorridas em um banco de dados.
Na análise estruturada os depósitos de dados são graficamente representados por um par de linhas
paralelas; conforme exemplos abaixo, outras notações podem ser usadas. Para se identificar o depósito de
dados usa-se o plural do nome dos pacotes que entram e saem do depósito.
Representação gráfica de um depósito de dados
PEDIDOS
Figura 8 - Uma representação alternativa
, 23/12/05
<!--[if gte vml 1]><v:line id="_x0000_s1075" style='position:absolute;left:0;text-align:left;z-index:22' from="3pt,20pt" to="129pt,20pt"/><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:line id="_x0000_s1074" style='position:absolute;left:0;text-align:left;z-index:21' from="3pt,16.7pt" to="129pt,16.7pt"/><![endif]-->
Page 29
PEDIDOS
Figura 9 - Ex.: Yourdon, E. , pág 188
A representação gráfica dos dados que entram e saem do depósito, é feita por setas rotuladas, as
setas que entram, representam pacotes de dados que são inseridos no depósito, e as setas que saem
representam dados que são recuperados do depósito.
PEDIDO
, 23/12/05
<!--[if gte vml 1]><v:line id="_x0000_s1555" style='position:absolute;left:0;text-align:left;flip:y;z-index:297' from="330pt,14.5pt" to="330pt,41.5pt"> <v:stroke endarrow="block"/> </v:line><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:line id="_x0000_s1095" style='position:absolute;left:0;text-align:left;z-index:29' from="180.75pt,1.45pt" to="252.75pt,1.45pt"/><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:line id="_x0000_s1546" style='position:absolute;left:0;text-align:left;flip:y; z-index:288;mso-position-horizontal-relative:text; mso-position-vertical-relative:text' from="99pt,14.5pt" to="99pt,41.5pt"> <v:stroke endarrow="block"/> </v:line><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:rect id="_x0000_s1551" style='position:absolute;left:0;text-align:left;margin-left:183pt; margin-top:7.2pt;width:63pt;height:18pt;z-index:293' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1551'/> </v:rect><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:line id="_x0000_s1094" style='position:absolute; left:0;text-align:left;z-index:28' from="180pt,1.15pt" to="252pt,1.15pt"/><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:oval id="_x0000_s1092" style='position:absolute;left:0;text-align:left;margin-left:1in;margin-top:51.8pt; width:1in;height:1in;z-index:26'> <v:textbox style='mso-next-textbox:#_x0000_s1092'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoBodyText3 align=center style='text-align:center'>1.</p> <p class=MsoBodyText3>Introduzir Pedidos</p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:oval><v:rect id="_x0000_s1109" style='position:absolute;left:0; text-align:left;margin-left:135pt;margin-top:25.55pt;width:63pt;height:27pt; z-index:30' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1109'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal>pedido</p> <p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:rect><v:rect id="_x0000_s1112" style='position:absolute;left:0; text-align:left;margin-left:0;margin-top:9.3pt;width:108pt;height:18pt; z-index:33' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1112'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt'>detalhes do pedido<o:p></o:p></span></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:rect><v:line id="_x0000_s1543" style='position:absolute;left:0; text-align:left;z-index:285' from="9pt,28.35pt" to="99pt,28.35pt"/><v:line id="_x0000_s1544" style='position:absolute;left:0;text-align:left;z-index:286' from="99pt,28.35pt" to="99pt,55.35pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1547" style='position:absolute;left:0; text-align:left;z-index:289' from="126pt,56.4pt" to="189pt,56.4pt"/><v:line id="_x0000_s1548" style='position:absolute;left:0;text-align:left;z-index:290' from="189pt,56.4pt" to="189pt,83.4pt"> <v:stroke endarrow="block"/> </v:line><v:oval id="_x0000_s1093" style='position:absolute;left:0; text-align:left;margin-left:279pt;margin-top:51.8pt;width:1in;height:1in; z-index:27'> <v:textbox style='mso-next-textbox:#_x0000_s1093'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoBodyText3 align=center style='text-align:center'>2.</p> <p class=MsoBodyText3>Respon-der Consultas</p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:oval><v:rect id="_x0000_s1110" style='position:absolute;left:0; text-align:left;margin-left:234pt;margin-top:25.55pt;width:63pt;height:27pt; z-index:31' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1110'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal>pedido</p> <p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:rect><v:rect id="_x0000_s1114" style='position:absolute;left:0; text-align:left;margin-left:342pt;margin-top:9.3pt;width:63pt;height:19.75pt; z-index:34' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1114'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal>consulta</p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:rect><v:line id="_x0000_s1549" style='position:absolute;left:0; text-align:left;z-index:291' from="235pt,57.4pt" to="298pt,57.4pt"/><v:line id="_x0000_s1550" style='position:absolute;left:0;text-align:left;z-index:292' from="234pt,57.4pt" to="234pt,84.4pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1552" style='position:absolute;left:0; text-align:left;z-index:294' from="329pt,29.35pt" to="419pt,29.35pt"/><v:line id="_x0000_s1554" style='position:absolute;left:0;text-align:left;z-index:296' from="329pt,29.35pt" to="329pt,56.35pt"> <v:stroke endarrow="block"/> </v:line><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:line id="_x0000_s1088" style='position:absolute;left:0;text-align:left;z-index:25' from="27.75pt,19.9pt" to="126.75pt,19.9pt"/><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:rect id="_x0000_s1086" style='position:absolute;left:0;text-align:left;margin-left:.75pt; margin-top:19.6pt;width:36pt;height:27pt;z-index:23'> <v:textbox style='mso-next-textbox:#_x0000_s1086'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal>D1</p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:rect><v:line id="_x0000_s1087" style='position:absolute;left:0; text-align:left;z-index:24' from="27.75pt,19.6pt" to="126.75pt,19.6pt"/><![endif]-->
Page 30
Figura 10 - Ex.:
Yourdon, E.,
pág. 190.
4.2.1.4 – O Terminador
Os terminadores são as entidades externas ao sistema, com as quais ele se comunica. Eles podem
ser desde uma pessoa, empresa, departamento de uma empresa, até mesmo outro sistema que venha a se
comunicar com o nosso, eles não estão sujeitos à modelagem do analista, visto que são entidades externas
ao sistema, por isso não podem ser modificados pelo sistema. Os relacionamentos entre terminadores e o
sistema através de fluxos, representam a interface entre eles. Os terminadores se comunicam com o
sistema, para receberem e fornecerem dados, como, por exemplo, fornecer ao sistema o número do cpf do
cliente e receber do sistema uma resposta de que o cliente está ou não cadastrado.
Os terminadores são representados por um retângulo e recebe o nome da entidade que se refere.
Figura 11
4.2.2 – Diretrizes para a elaboração de um DFD
confirmação
ido
resposta
CLIENTES
, 23/12/05
<!--[if gte vml 1]><v:rect id="_x0000_s1116" style='position:absolute;left:0;text-align:left;margin-left:0;margin-top:6.9pt; width:99pt;height:45pt;z-index:36'> <v:textbox style='mso-next-textbox:#_x0000_s1116'/> </v:rect><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter"/> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"/> <v:f eqn="sum @0 1 0"/> <v:f eqn="sum 0 0 @1"/> <v:f eqn="prod @2 1 2"/> <v:f eqn="prod @3 21600 pixelWidth"/> <v:f eqn="prod @3 21600 pixelHeight"/> <v:f eqn="sum @0 0 1"/> <v:f eqn="prod @6 1 2"/> <v:f eqn="prod @7 21600 pixelWidth"/> <v:f eqn="sum @8 21600 0"/> <v:f eqn="prod @7 21600 pixelHeight"/> <v:f eqn="sum @10 21600 0"/> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/> <o:lock v:ext="edit" aspectratio="t"/> </v:shapetype><v:shape id="_x0000_i1029" type="#_x0000_t75" style='width:63.75pt; height:27.75pt'> <v:imagedata src="./mono1592000_arquivos/image022.wmz" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:rect id="_x0000_s1111" style='position:absolute;left:0;text-align:left;margin-left:0;margin-top:18.05pt; width:81pt;height:27pt;z-index:32' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1111'/> </v:rect><v:line id="_x0000_s1545" style='position:absolute;left:0; text-align:left;z-index:287' from="9pt,14.8pt" to="99pt,14.8pt"/><v:line id="_x0000_s1553" style='position:absolute;left:0;text-align:left;z-index:295' from="330pt,14.8pt" to="420pt,14.8pt"/><v:rect id="_x0000_s1115" style='position:absolute;left:0; text-align:left;margin-left:342pt;margin-top:21.8pt;width:1in;height:18pt; z-index:35' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1115'/> </v:rect><![endif]-->
Page 31
As diretrizes nos auxiliarão a construir DFD corretos e agradáveis de serem examinados pelos
usuários e outros analistas, estas diretrizes são :
1. - escolher nomes significativos para os componentes do DFD (fluxo de dados, processos, depósito
de dados e terminadores);
2. - numerar os processos;
3. - criar DFD simples e claros, evitando DFD complexos demais;
4. - refazer o DFD tantas vezes quantas forem necessárias, até que ele esteja corretamente
normatizados;
5. - certificar-se que o DFD seja internamente consistente além de manter a consistência com outros
DFD.
4.2.3 – Níveis de um DFD
Grandes sistemas para serem representados graficamente através de um DFD devem ser modelados
em níveis, de modo que a cada nível, ofereça sucessivamente mais detalhes sobre uma parte do nível que
lhe seja superior.
Essa modelagem é feita através do particionamento inicial do sistema em subsistemas, da mesma
forma que um mapa de um guia rodoviário apresenta inicialmente uma visão geral do país, depois mostra
detalhes do país através do estados, detalha os estados através dos municípios e assim por diante,
analogamente o DFD é assim particionado.
No DFD o nível mais alto é representado por uma única bolha que representa todo o sistema, neste
nível os fluxos de dados mostram a interface entre o sistema e as entidades externas (terminadores), este
diagrama especial de nível mais alto também é conhecido como Diagrama de Contexto.
Page 32
Figura 12 - Exemplo adaptado Yourdon, Ed, Pág. 208
O nível imediatamente abaixo do Diagrama de Contexto é composto por tantas bolhas quantas
forem necessárias, é conhecido como Diagrama 0 (zero), e representa a visão de mais alto nível das
principais funções do sistema e a interface entre elas.
É aconselhável numerar as bolhas dos níveis do DFD, pois os números servem para relacionar de
forma mais clara e prática, uma bolha com o DFD de nível imediatamente inferior.
DIAGRAMA DE CON-
TEXTO
, 23/12/05
<!--[if gte vml 1]><v:rect id="_x0000_s1179" style='position:absolute;left:0;text-align:left;margin-left:171pt; margin-top:67.55pt;width:135pt;height:45pt;z-index:80' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1179'/> </v:rect><v:rect id="_x0000_s1162" style='position:absolute;left:0; text-align:left;margin-left:0;margin-top:20.45pt;width:153pt;height:2in; z-index:69'/><v:rect id="_x0000_s1163" style='position:absolute;left:0; text-align:left;margin-left:11.25pt;margin-top:29.45pt;width:27pt;height:27pt; z-index:70'/><v:rect id="_x0000_s1164" style='position:absolute;left:0; text-align:left;margin-left:114pt;margin-top:128.45pt;width:27pt;height:27pt; z-index:71'/><v:rect id="_x0000_s1165" style='position:absolute;left:0; text-align:left;margin-left:113.25pt;margin-top:29.45pt;width:27pt;height:27pt; z-index:72'/><v:oval id="_x0000_s1166" style='position:absolute;left:0; text-align:left;margin-left:45pt;margin-top:65.45pt;width:1in;height:63pt; z-index:73'> <v:textbox style='mso-next-textbox:#_x0000_s1166'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt'>O Sistema<o:p></o:p></span></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:oval><v:line id="_x0000_s1170" style='position:absolute;left:0; text-align:left;z-index:77' from="21.75pt,58.8pt" to="48.75pt,85.8pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1171" style='position:absolute;left:0; text-align:left;flip:y;z-index:78' from="115.5pt,58.55pt" to="124.5pt,85.55pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1173" style='position:absolute;left:0; text-align:left;z-index:79' from="85.5pt,133.4pt" to="112.5pt,142.4pt"> <v:stroke endarrow="block"/> </v:line><v:shapetype id="_x0000_t202" coordsize="21600,21600" o:spt="202" path="m0,0l0,21600,21600,21600,21600,0xe"> <v:stroke joinstyle="miter"/> <v:path gradientshapeok="t" o:connecttype="rect"/> </v:shapetype><v:shape id="_x0000_s1556" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:9pt;margin-top:73.35pt;width:27pt;height:18pt; z-index:298' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1556'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal align=center style='text-align:center'><b>a<o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:shape><v:shape id="_x0000_s1557" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:1in;margin-top:144.5pt;width:27pt;height:18pt; z-index:299' strokecolor="white"> <v:textbox> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal align=center style='text-align:center'><b>b<o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:shape><v:shape id="_x0000_s1558" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:124pt;margin-top:78.35pt;width:27pt; height:18pt;z-index:300' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1558'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal align=center style='text-align:center'><b>c<o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:shape><![endif]-->
Page 33
DIAGRAMA DE CONTEXTO
FIGURA 0
, 23/12/05
<!--[if gte vml 1]><v:rect id="_x0000_s1138" style='position:absolute;left:0;text-align:left;margin-left:18pt;margin-top:167.7pt; width:99pt;height:36pt;z-index:54' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1138'/> </v:rect><v:rect id="_x0000_s1117" style='position:absolute;left:0; text-align:left;margin-left:18pt;margin-top:9pt;width:153pt;height:2in; z-index:37'/><v:rect id="_x0000_s1118" style='position:absolute;left:0; text-align:left;margin-left:29.25pt;margin-top:18pt;width:27pt;height:27pt; z-index:38'/><v:rect id="_x0000_s1119" style='position:absolute;left:0; text-align:left;margin-left:132pt;margin-top:121.2pt;width:27pt;height:27pt; z-index:39'/><v:rect id="_x0000_s1120" style='position:absolute;left:0; text-align:left;margin-left:131.25pt;margin-top:18pt;width:27pt;height:27pt; z-index:40'/><v:oval id="_x0000_s1121" style='position:absolute;left:0; text-align:left;margin-left:63pt;margin-top:58.2pt;width:1in;height:63pt; z-index:41'> <v:textbox style='mso-next-textbox:#_x0000_s1121'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt'>O Sistema<o:p></o:p></span></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:oval><v:line id="_x0000_s1167" style='position:absolute;left:0; text-align:left;z-index:74' from="39.75pt,47.25pt" to="66.75pt,74.25pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1168" style='position:absolute;left:0; text-align:left;flip:y;z-index:75' from="129pt,45.75pt" to="147pt,72.75pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1169" style='position:absolute;left:0; text-align:left;z-index:76' from="103.5pt,123.9pt" to="130.5pt,132.9pt"> <v:stroke endarrow="block"/> </v:line><v:shape id="_x0000_s1559" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:27pt;margin-top:67.5pt;width:27pt;height:18pt; z-index:301' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1559'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal align=center style='text-align:center'><b>a<o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:shape><v:shape id="_x0000_s1560" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:90pt;margin-top:135.5pt;width:27pt; height:18pt;z-index:302' strokecolor="white"> <v:textbox> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal align=center style='text-align:center'><b>b<o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:shape><v:shape id="_x0000_s1561" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:142pt;margin-top:72.5pt;width:27pt; height:18pt;z-index:303' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1561'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal align=center style='text-align:center'><b>c<o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:shape><v:rect id="_x0000_s1122" style='position:absolute;left:0; text-align:left;margin-left:162pt;margin-top:195.8pt;width:225pt;height:180.6pt; z-index:42'/><v:oval id="_x0000_s1123" style='position:absolute;left:0; text-align:left;margin-left:186.75pt;margin-top:220.2pt;width:45pt;height:45pt; z-index:43'> <v:textbox style='mso-next-textbox:#_x0000_s1123'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><b>1<o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:oval><v:oval id="_x0000_s1124" style='position:absolute;left:0; text-align:left;margin-left:187.5pt;margin-top:311.7pt;width:45pt;height:45pt; z-index:44'> <v:textbox style='mso-next-textbox:#_x0000_s1124'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><b>3<o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:oval><v:oval id="_x0000_s1125" style='position:absolute;left:0; text-align:left;margin-left:306pt;margin-top:318.3pt;width:45pt;height:45pt; z-index:45'> <v:textbox style='mso-next-textbox:#_x0000_s1125'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><b>4<o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:oval><v:oval id="_x0000_s1126" style='position:absolute;left:0; text-align:left;margin-left:306.75pt;margin-top:222.9pt;width:45pt;height:45pt; z-index:46'> <v:textbox style='mso-next-textbox:#_x0000_s1126'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><b>2<o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:oval><v:line id="_x0000_s1129" style='position:absolute;left:0; text-align:left;z-index:47' from="234pt,246.9pt" to="306pt,246.9pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1130" style='position:absolute;left:0; text-align:left;z-index:48' from="328.5pt,270.45pt" to="328.5pt,315.45pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1131" style='position:absolute;left:0; text-align:left;flip:x;z-index:49' from="234pt,337.2pt" to="306pt,337.2pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1133" style='position:absolute;left:0; text-align:left;z-index:50' from="207pt,265.2pt" to="207pt,310.2pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1135" style='position:absolute;left:0; text-align:left;z-index:51' from="343.5pt,265.95pt" to="352.5pt,301.95pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1136" style='position:absolute;left:0; text-align:left;flip:x;z-index:52' from="270pt,346.2pt" to="306pt,364.2pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1147" style='position:absolute;left:0; text-align:left;flip:y;z-index:63' from="225pt,261.45pt" to="315pt,324.45pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1565" style='position:absolute;left:0; text-align:left;z-index:305' from="162pt,195.8pt" to="194pt,228.8pt"> <v:stroke endarrow="block"/> </v:line><v:shape id="_x0000_s1566" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:351pt;margin-top:260.9pt;width:27pt; height:18pt;z-index:306' strokecolor="white"> <v:textbox> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal align=center style='text-align:center'><b>b<o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:shape><v:shape id="_x0000_s1570" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:295pt;margin-top:282.95pt;width:33pt; height:24pt;z-index:307' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1570'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal align=right style='text-align:right'><b>b 1<span style="mso-spacerun: yes"> </span><o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:shape><v:shape id="_x0000_s1572" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:252pt;margin-top:260.9pt;width:33pt; height:24pt;z-index:308' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1572'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal align=right style='text-align:right'><b>a 3<span style="mso-spacerun: yes"> </span><o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:shape><v:shape id="_x0000_s1573" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:212pt;margin-top:279.95pt;width:33pt; height:24pt;z-index:309' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1573'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><b>a 2 <o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:shape><v:shape id="_x0000_s1574" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:252pt;margin-top:219.8pt;width:33pt; height:24pt;z-index:310' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1574'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><b>a 1<span style="mso-spacerun: yes"> </span><o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:shape><v:shape id="_x0000_s1575" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:287pt;margin-top:364.1pt;width:27pt; height:18pt;z-index:311' strokecolor="white"> <v:textbox> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><b>c<o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:shape><v:shape id="_x0000_s1576" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:252pt;margin-top:317pt;width:33pt;height:24pt; z-index:312' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1576'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal align=right style='text-align:right'><b>b 2<span style="mso-spacerun: yes"> </span><o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:shape><v:shape id="_x0000_s1580" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:183pt;margin-top:198.8pt;width:27pt; height:19pt;z-index:313' strokecolor="white"> <v:textbox> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal align=center style='text-align:center'><b>a<o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:shape><v:shapetype id="_x0000_t102" coordsize="21600,21600" o:spt="102" adj="12960,19440,14400" path="ar0,0@23@3@22,,0@4,0@15@23@1,0@7@2@13l@2@14@22@8@2@12wa0,0@23@3@2@11@26@17,0@15@23@1@26@17@22@15xear0,0@23@3,0@4@26@17nfe"> <v:stroke joinstyle="miter"/> <v:formulas> <v:f eqn="val #0"/> <v:f eqn="val #1"/> <v:f eqn="val #2"/> <v:f eqn="sum #0 width #1"/> <v:f eqn="prod @3 1 2"/> <v:f eqn="sum #1 #1 width"/> <v:f eqn="sum @5 #1 #0"/> <v:f eqn="prod @6 1 2"/> <v:f eqn="mid width #0"/> <v:f eqn="sum height 0 #2"/> <v:f eqn="ellipse @9 height @4"/> <v:f eqn="sum @4 @10 0"/> <v:f eqn="sum @11 #1 width"/> <v:f eqn="sum @7 @10 0"/> <v:f eqn="sum @12 width #0"/> <v:f eqn="sum @5 0 #0"/> <v:f eqn="prod @15 1 2"/> <v:f eqn="mid @4 @7"/> <v:f eqn="sum #0 #1 width"/> <v:f eqn="prod @18 1 2"/> <v:f eqn="sum @17 0 @19"/> <v:f eqn="val width"/> <v:f eqn="val height"/> <v:f eqn="prod height 2 1"/> <v:f eqn="sum @17 0 @4"/> <v:f eqn="ellipse @24 @4 height"/> <v:f eqn="sum height 0 @25"/> <v:f eqn="sum @8 128 0"/> <v:f eqn="prod @5 1 2"/> <v:f eqn="sum @5 0 128"/> <v:f eqn="sum #0 @17 @12"/> <v:f eqn="ellipse @20 @4 height"/> <v:f eqn="sum width 0 #0"/> <v:f eqn="prod @32 1 2"/> <v:f eqn="prod height height 1"/> <v:f eqn="prod @9 @9 1"/> <v:f eqn="sum @34 0 @35"/> <v:f eqn="sqrt @36"/> <v:f eqn="sum @37 height 0"/> <v:f eqn="prod width height @38"/> <v:f eqn="sum @39 64 0"/> <v:f eqn="prod #0 1 2"/> <v:f eqn="ellipse @33 @41 height"/> <v:f eqn="sum height 0 @42"/> <v:f eqn="sum @43 64 0"/> <v:f eqn="prod @4 1 2"/> <v:f eqn="sum #1 0 @45"/> <v:f eqn="prod height 4390 32768"/> <v:f eqn="prod height 28378 32768"/> </v:formulas> <v:path o:extrusionok="f" o:connecttype="custom" o:connectlocs="0,@17;@2,@14;@22,@8;@2,@12;@22,@16" o:connectangles="180,90,0,0,0" textboxrect="@47,@45,@48,@46"/> <v:handles> <v:h position="bottomRight,#0" yrange="@40,@29"/> <v:h position="bottomRight,#1" yrange="@27,@21"/> <v:h position="#2,bottomRight" xrange="@44,@22"/> </v:handles> <o:complex v:ext="view"/> </v:shapetype><v:shape id="_x0000_s1583" type="#_x0000_t102" style='position:absolute; left:0;text-align:left;margin-left:17.85pt;margin-top:433.65pt;width:27pt; height:81pt;rotation:10;z-index:315'/><v:shape id="_x0000_s1582" type="#_x0000_t102" style='position:absolute;left:0;text-align:left;margin-left:117pt; margin-top:303.95pt;width:27pt;height:117pt;z-index:314'/><v:shapetype id="_x0000_t91" coordsize="21600,21600" o:spt="91" adj="15126,2912" path="m21600,6079l@0,0@0@1,12427@1qx0,12158l0,21600@4,21600@4,12158qy12427@2l@0@2@0,12158xe"> <v:stroke joinstyle="miter"/> <v:formulas> <v:f eqn="val #0"/> <v:f eqn="val #1"/> <v:f eqn="sum 12158 0 #1"/> <v:f eqn="sum @2 0 #1"/> <v:f eqn="prod @3 32768 32059"/> <v:f eqn="prod @4 1 2"/> <v:f eqn="sum 21600 0 #0"/> <v:f eqn="prod @6 #1 6079"/> <v:f eqn="sum @7 #0 0"/> </v:formulas> <v:path o:connecttype="custom" o:connectlocs="@0,0;@0,12158;@5,21600;21600,6079" o:connectangles="270,90,90,0" textboxrect="12427,@1,@8,@2;0,12158,@4,21600"/> <v:handles> <v:h position="#0,#1" xrange="12427,21600" yrange="0,6079"/> </v:handles> </v:shapetype><v:shape id="_x0000_s1564" type="#_x0000_t91" style='position:absolute; left:0;text-align:left;margin-left:139.5pt;margin-top:105pt;width:117pt; height:36pt;rotation:90;z-index:304' adj="16791,5310"/><v:rect id="_x0000_s1139" style='position:absolute;left:0;text-align:left;margin-left:162pt; margin-top:392.15pt;width:90pt;height:27pt;z-index:55' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1139'/> </v:rect><![endif]-->
Page 34
Figura 13 - Ex.: Diagrama de fluxo de dados em níveis Yourdon, E. pág 208.
Normalmente não há uma definição da quantidade de níveis que um DFD poderá ter, contudo
dependendo do tamanho e da complexidade do sistema, ele poderá ter de 2 a 9 níveis e em cada nível o
número de bolhas deve ser não mais do que 6. Desta forma, mesmo que o DFD seja normalizado, e após
esta normalização determinado nível ainda continue com um grande número de bolhas, e razoável que ele
seja decomposto em pelo menos mais um nível.
As diversas partes do sistema, nem sempre terão iguais números de subníveis, algumas partes do
sistema poderão ter mais níveis do que outras, no entanto, se a diferença de níveis for muito acentuada,
tornando o DFD desbalanceado, deve-se avaliar melhor o modelo geral do sistema, pois este pode estar
mal organizado.
A organização dos níveis deve ser consistente, e para que isso ocorra, os fluxos de dados que
entram e saem de uma bolha em um determinado nível do DFD, devem corresponder exatamente aos
fluxos que entram e saem do nível imediatamente inferior que descreve aquela bolha.
A organização dos níveis poderá causar redundância na apresentação gráfica dos depósitos de
dados, visto que vários fluxos e processos em diversas partes do sistema se utilizarão destes depósitos de
FIGURA 3
, 23/12/05
<!--[if gte vml 1]><v:rect id="_x0000_s1154" style='position:absolute;left:0;text-align:left;margin-left:252pt; margin-top:131.4pt;width:81pt;height:23.35pt;z-index:68' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1154'/> </v:rect><v:rect id="_x0000_s1137" style='position:absolute;left:0; text-align:left;margin-left:9pt;margin-top:.9pt;width:225pt;height:269.1pt; z-index:53'/><v:oval id="_x0000_s1140" style='position:absolute;left:0; text-align:left;margin-left:34.25pt;margin-top:34.3pt;width:45pt;height:45pt; z-index:56'> <v:textbox style='mso-next-textbox:#_x0000_s1140'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><b>3.1<o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:oval><v:oval id="_x0000_s1141" style='position:absolute;left:0; text-align:left;margin-left:34.5pt;margin-top:143.3pt;width:45pt;height:45pt; z-index:57'> <v:textbox style='mso-next-textbox:#_x0000_s1141'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><b>3.3<o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:oval><v:oval id="_x0000_s1142" style='position:absolute;left:0; text-align:left;margin-left:137.25pt;margin-top:186.35pt;width:45pt;height:45pt; z-index:58'> <v:textbox style='mso-next-textbox:#_x0000_s1142'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><b>3.4<o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:oval><v:oval id="_x0000_s1143" style='position:absolute;left:0; text-align:left;margin-left:132.75pt;margin-top:78.65pt;width:45pt;height:45pt; z-index:59'> <v:textbox style='mso-next-textbox:#_x0000_s1143'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><b>3.2<o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:oval><v:line id="_x0000_s1144" style='position:absolute;left:0; text-align:left;flip:x;z-index:60' from="172pt,46.95pt" to="199pt,82.95pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1145" style='position:absolute;left:0; text-align:left;z-index:61' from="81pt,60.65pt" to="135pt,87.65pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1146" style='position:absolute;left:0; text-align:left;flip:y;z-index:62' from="57pt,78.65pt" to="57pt,141.65pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1148" style='position:absolute;left:0; text-align:left;flip:x;z-index:64' from="78.75pt,116.75pt" to="132.75pt,152.75pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1150" style='position:absolute;left:0; text-align:left;z-index:65' from="77pt,177.6pt" to="140pt,206.2pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1151" style='position:absolute;left:0; text-align:left;flip:y;z-index:66' from="158.25pt,126.5pt" to="158.25pt,180.5pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1152" style='position:absolute;left:0; text-align:left;z-index:67' from="176pt,231.3pt" to="212pt,267.3pt"> <v:stroke endarrow="block"/> </v:line><v:shape id="_x0000_s1584" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:81pt;margin-top:29.25pt;width:45pt; height:24pt;z-index:316' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1584'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><b>a 2.1<span style="mso-spacerun: yes"> </span><o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:shape><v:line id="_x0000_s1585" style='position:absolute;left:0; text-align:left;z-index:317' from="27pt,9.9pt" to="45pt,36.9pt"> <v:stroke endarrow="block"/> </v:line><v:shape id="_x0000_s1586" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:162pt;margin-top:29.25pt;width:33pt; height:24pt;z-index:318' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1586'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><b>b 1<span style="mso-spacerun: yes"> </span><o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:shape><v:shape id="_x0000_s1587" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:162pt;margin-top:150.45pt;width:45pt; height:24pt;z-index:319' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1587'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><b>a 3.1<span style="mso-spacerun: yes"> </span><o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:shape><v:shape id="_x0000_s1588" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:74pt;margin-top:103.35pt;width:45pt; height:24pt;z-index:320' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1588'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><b>b 2.1<span style="mso-spacerun: yes"> </span><o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:shape><v:shape id="_x0000_s1589" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:40pt;margin-top:1.9pt;width:33pt;height:24pt; z-index:321' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1589'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><b>a 2<span style="mso-spacerun: yes"> </span><o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:shape><v:shape id="_x0000_s1590" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:159pt;margin-top:247.3pt;width:33pt; height:24pt;z-index:322' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1590'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal align=right style='text-align:right'><b>a 3<span style="mso-spacerun: yes"> </span><o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:shape><v:shape id="_x0000_s1591" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:1in;margin-top:197.55pt;width:45pt; height:24pt;z-index:323' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1591'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><b>b 3.2<span style="mso-spacerun: yes"> </span><o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:shape><v:shape id="_x0000_s1592" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:10pt;margin-top:103.35pt;width:45pt; height:24pt;z-index:324' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1592'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><b>b 2.1<span style="mso-spacerun: yes"> </span><o:p></o:p></b></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:shape><![endif]-->
Page 35
dados. Como não um modo de se criar um depósito de dados em um lugar do DFD aonde todos os
processos e fluxos que o utilizem seus dados possam acessa-lo, a redundância neste caso é necessária e
gera um maior grau de praticidade na confecção do DFD.
O depósito poderá ser mostrado no nível mais alto onde ele serve primeiramente como interfaces
em duas ou mais bolhas desse nível, depois ele deve ser mostrado em cada diagrama ou nível
imediatamente inferior que descrevem as folhas do diagrama de nível superior. O depósito de dados que
faz parte somente de diagramas do nível inferior, não será apresentado no nível imediatamente superior,
veja o exemplo abaixo:
, 23/12/05
<!--[if gte vml 1]><v:rect id="_x0000_s1180" style='position:absolute;left:0;text-align:left; margin-left:158.25pt;margin-top:10.2pt;width:153pt;height:126pt;z-index:81'/><v:oval id="_x0000_s1181" style='position:absolute;left:0;text-align:left; margin-left:162.75pt;margin-top:16.95pt;width:45pt;height:45pt;z-index:82'> <v:textbox style='mso-next-textbox:#_x0000_s1181'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <h2>A</h2> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:oval><v:oval id="_x0000_s1182" style='position:absolute;left:0; text-align:left;margin-left:256.5pt;margin-top:86.15pt;width:45pt;height:45pt; z-index:83'> <v:textbox style='mso-next-textbox:#_x0000_s1182'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <h2>B</h2> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:oval><v:line id="_x0000_s1183" style='position:absolute;left:0; text-align:left;z-index:84' from="207pt,65.6pt" to="261pt,65.6pt"/><v:line id="_x0000_s1184" style='position:absolute;left:0;text-align:left;z-index:85' from="207.75pt,88.15pt" to="261.75pt,88.15pt"/><v:rect id="_x0000_s1185" style='position:absolute;left:0;text-align:left;margin-left:3in;margin-top:66.35pt; width:36pt;height:18pt;z-index:86' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1185'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <h2>X</h2> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:rect><v:shapetype id="_x0000_t19" coordsize="21600,21600" o:spt="19" adj="-5898240,,,21600,21600" path="wr-21600,,21600,43200,,,21600,21600nfewr-21600,,21600,43200,,,21600,21600l0,21600nsxe" filled="f"> <v:formulas> <v:f eqn="val #2"/> <v:f eqn="val #3"/> <v:f eqn="val #4"/> </v:formulas> <v:path arrowok="t" o:extrusionok="f" gradientshapeok="t" o:connecttype="custom" o:connectlocs="0,0;21600,21600;0,21600"/> <v:handles> <v:h position="@2,#0" polar="@0,@1"/> <v:h position="@2,#1" polar="@0,@1"/> </v:handles> </v:shapetype><v:shape id="_x0000_s1189" type="#_x0000_t19" style='position:absolute; left:0;text-align:left;margin-left:234pt;margin-top:85.4pt;width:27pt; height:36pt;flip:x y;z-index:87'/><v:shape id="_x0000_s1190" type="#_x0000_t19" style='position:absolute;left:0;text-align:left;margin-left:207pt; margin-top:38.3pt;width:27pt;height:27pt;z-index:88'/><v:line id="_x0000_s1192" style='position:absolute;left:0;text-align:left;z-index:89' from="232.5pt,57.35pt" to="232.5pt,66.35pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1193" style='position:absolute;left:0; text-align:left;flip:y;z-index:90' from="234pt,85.4pt" to="234pt,94.4pt"> <v:stroke endarrow="block"/> </v:line><v:rect id="_x0000_s1194" style='position:absolute;left:0; text-align:left;margin-left:36pt;margin-top:187.55pt;width:162pt;height:162pt; z-index:91'/><v:oval id="_x0000_s1195" style='position:absolute;left:0; text-align:left;margin-left:46.5pt;margin-top:196.85pt;width:43.5pt;height:45.75pt; z-index:92'> <v:textbox style='mso-next-textbox:#_x0000_s1195'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <h2>A.1</h2> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:oval><v:line id="_x0000_s1197" style='position:absolute;left:0; text-align:left;z-index:93' from="75.75pt,263.7pt" to="129.75pt,263.7pt"/><v:line id="_x0000_s1198" style='position:absolute;left:0;text-align:left;z-index:94' from="76.5pt,286.25pt" to="130.5pt,286.25pt"/><v:rect id="_x0000_s1199" style='position:absolute;left:0;text-align:left;margin-left:84.75pt; margin-top:267.5pt;width:36pt;height:18pt;z-index:95' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1199'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <h2>X</h2> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:rect><v:line id="_x0000_s1200" style='position:absolute;left:0; text-align:left;flip:x y;z-index:96' from="85.75pt,232.4pt" to="100pt,262.4pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1201" style='position:absolute;left:0; text-align:left;z-index:97' from="97.5pt,287pt" to="142.5pt,314pt"> <v:stroke endarrow="block"/> </v:line><v:oval id="_x0000_s1202" style='position:absolute;left:0; text-align:left;margin-left:2in;margin-top:299.75pt;width:43.5pt;height:45.75pt; z-index:98'> <v:textbox style='mso-next-textbox:#_x0000_s1202'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <h2>A.2</h2> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:oval><v:rect id="_x0000_s1203" style='position:absolute;left:0; text-align:left;margin-left:279pt;margin-top:187.55pt;width:162pt;height:162pt; z-index:99'/><v:oval id="_x0000_s1204" style='position:absolute;left:0; text-align:left;margin-left:289.5pt;margin-top:195.8pt;width:43.5pt;height:45.75pt; z-index:100'> <v:textbox style='mso-next-textbox:#_x0000_s1204'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <h2>B.1</h2> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:oval><v:line id="_x0000_s1205" style='position:absolute;left:0; text-align:left;z-index:101' from="318.75pt,263.7pt" to="372.75pt,263.7pt"/><v:line id="_x0000_s1206" style='position:absolute;left:0;text-align:left;z-index:102' from="319.5pt,282.05pt" to="373.5pt,282.05pt"/><v:rect id="_x0000_s1207" style='position:absolute;left:0;text-align:left;margin-left:327.75pt; margin-top:263.3pt;width:36pt;height:18pt;z-index:103' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1207'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <h2>X</h2> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:rect><v:line id="_x0000_s1208" style='position:absolute;left:0; text-align:left;flip:x y;z-index:104' from="329.75pt,233.4pt" to="344pt,263.4pt"> <v:stroke endarrow="block"/> </v:line><v:oval id="_x0000_s1209" style='position:absolute;left:0; text-align:left;margin-left:387pt;margin-top:295.55pt;width:43.5pt;height:45.75pt; z-index:105'> <v:textbox style='mso-next-textbox:#_x0000_s1209'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <h2>B.2</h2> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:oval><v:line id="_x0000_s1210" style='position:absolute;left:0; text-align:left;z-index:106' from="343pt,287.75pt" to="388pt,314.75pt"> <v:stroke endarrow="block"/> </v:line><v:shape id="_x0000_s1211" type="#_x0000_t19" style='position:absolute; left:0;text-align:left;margin-left:1in;margin-top:38.5pt;width:90pt;height:143.8pt; flip:x;z-index:107' coordsize="21600,21567" adj="-5689857,,,21567" path="wr-21600,-33,21600,43167,1198,,21600,21567nfewr-21600,-33,21600,43167,1198,,21600,21567l0,21567nsxe"> <v:path o:connectlocs="1198,0;21600,21567;0,21567"/> </v:shape><v:line id="_x0000_s1212" style='position:absolute;left:0; text-align:left;z-index:108' from="1in,179.3pt" to="1in,188.3pt"> <v:stroke endarrow="block"/> </v:line><v:shape id="_x0000_s1213" type="#_x0000_t19" style='position:absolute; left:0;text-align:left;margin-left:315pt;margin-top:103.4pt;width:54pt; height:81pt;z-index:109'/><v:line id="_x0000_s1214" style='position:absolute; left:0;text-align:left;z-index:110' from="369pt,179.3pt" to="369pt,188.3pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1593" style='position:absolute;left:0; text-align:left;flip:y;z-index:325' from="90pt,205.35pt" to="126pt,214.35pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1594" style='position:absolute;left:0; text-align:left;flip:x;z-index:326' from="108pt,336.6pt" to="2in,345.6pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1595" style='position:absolute;left:0; text-align:left;flip:y;z-index:327' from="333pt,196.35pt" to="5in,205.35pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1596" style='position:absolute;left:0; text-align:left;flip:x;z-index:328' from="5in,336.6pt" to="387pt,345.6pt"> <v:stroke endarrow="block"/> </v:line><![endif]-->
Page 36
Figura 14 - Ex.: Yourdon, E. Pág 213.
5 – O Dicionário de Dados
O dicionário de dados é o conjunto organizado de todos os elementos de dados do sistema, com
suas definições, feitas através de descrições precisas e rigorosas. Ele define os elementos de dados,
descrevendo o significado dos fluxos e depósito do DFD, a composição dos pacotes de dados que
transitam pelos fluxos e os dados armazenados nos depósitos de dados, especificando os valores e
unidades de informações destes e descrevendo os detalhes dos relacionamentos entre os depósitos de um
diagrama entidades-relacionamentos.
5.1 – Notação e significado de Dicionário de Dados
As notações do dicionário de dados são feitas através da utilização de símbolos. Normalmente os
mais utilizados pelos analistas são :
= significa é equivalente a ou é composto de
+ significa e
[] significa qualquer (escolha uma das opções alternativas)
Page 37
{} significa iterações de componentes entre chaves
** significa comentário
@ identificador (campo chave) de um depósito
| separa opções alternativa na construção []
Para exemplificar a utilização das notações utilizadas no dicionário de dados, tem-se o exemplo
abaixo :
dado : endereço
endereço = nome-da-rua + número-da-casa + bairro + cidade + CEP+ UF + Pais
nome-da-rua = 1{caracter-válido}40
número = 1{caracter-válido}6
cidade = 1{caracter-válido}30
CEP = 1{caracter-válido}8
UF = 1{caracter-valido}2
pais = 1{caracter-válido}15
caracter-válido= [ A-Z | a-z | 1-9 | ` | ‘ | “ | - ]
O particionamento dos dados do dicionário de dados, como se vê é de cima para baixo (top-down),
ou seja, começa-se com um dado composto e vai refinando-o gradativamente em dados mais simples até
chegar-se aos dados primitivos.
No exemplo supra citado temos a utilização de {} que indicam iterações, estas iterações são
freqüentemente anotadas com limites inferior e superior, que podem ser sobscritos ou subscritos.
Page 38
5.1.1 – Definições :
Uma definição de um elemento de dado é feita usando o símbolo “=” que, conforme o contexto em
que esteja sendo usado pode ser lido como “é definido como” ou “é composto de” ou ainda pode ser lido
como “significa”.
a notação A = B + C pode ser lida como :
• A compõe-se de B e C
• A é definido por B e C ou ainda
• sempre que se disser A, nos referimos a B e C
A definição do elemento de dados incluirá comentários que estarão sempre entre **, a composição
deste elemento e os valores que o elemento de dados poderá assumir.
Ex.:
distância = *distância entre duas cidades*
*unidades = km, intervalo : 1-1000*
Para definir um fluxo de dados é necessário determinar alguma classe a que ele pertença e
estabelecer um conjunto de características que o diferencie dos demais elementos da classe.
5.1.2 - Elementos de dados elementares
Elemento de dado elementar é aquele que não necessita ser mais decomposto, ou seja, ele não
precisa de maiores detalhes para que outras pessoas entendam claramente o que ele dizer dentro do
Page 39
contexto no qual esteja inserido.
Como exemplo temos o termo nome que poderia ser decomposto em título-de-cortesia, primeiro-
nome, nome-intermediário, último-nome, contudo em algum ambiente, nenhuma dessas decomposições
seja realmente necessária para que os usuários entendam o seu real significado, neste caso o termo nome
poderá ser considerado um dado elementar do meu dicionário de dados.
5.1.3 - Elementos de dados opcionais
Elemento de dado opcional é aquele que pode estar ou não presente como uma parte de um
elemento de dado composto.
O elemento de dado opcional é usado para acrescentar alguma informação que o usuário poderá
achar útil, ou ainda para dar ênfase a algum outro elemento. A falta do elemento de dado opcional, não
altera o conteúdo do dicionário de dados.
5.1.4 – Iterações
A iteração é usada para indicar a ocorrência repetida de um componente de um elemento de dado.
Ex.:
pedido = nome-do-cliente + endereço + 1{item}n
Ex.: Yourdon, Ed pág. 243
isso significa que um pedido deve conter sempre o nome do cliente, o endereço e de 1 a n itens.
Page 40
5.1.5 - Seleção
É a notação usada para se determinar que o elemento de dado consiste em uma escolha entre várias
opções disponíveis, como foi definido anteriormente, as opções são delimitadas por colchetes “[ e ]” e
separada pelo caracter de barra vertical “| “.
Ex.:
estado civil = [solteiro | casado | divorciado | outros ]
5.1.6 – Sinônimos (alíases)
Um sinônimo é um nome alternativo para um elemento de dados. São usados para identificar um
elemento de dados, quando há vários nomes para se referir a uma mesma coisa.
Ex.:
freguês = * sinônimo de cliente*
O dicionário de dados deve servir para que o usuário tenha condições de interpretar com facilidade
o Diagrama de Fluxo de Dados, embora se use notações que se parecem com notações matemáticas, e
possa parecer um pouco complexo, o dicionário de dados dará uma visão clara dos dados contidos no
Page 41
DFD.
Como em muitas outras áreas de diversas outras ciências existem símbolos para relacionar
determinados elementos, normalmente os usuários se adaptam rapidamente às notações usadas no
dicionário de dados, já que tais símbolos são poucos e fáceis de serem compreendidos.
6 – Especificação de Processos
A especificação de processo descreve o que deve ser feito dentro de cada bolha primitiva dos níveis
mais baixos do DFD para que as entradas sejam transformadas em saídas.
A especificação de processo pode ser feita através de diversas ferramentas como : linguagem
estruturada, tabelas de decisão, fluxogramas, diagramas etc.
A especificação de processo para surtir os efeitos desejados de descrição de cada processo, de forma
que o usuário possa ler, entender e compara-la com o DFD, deve ser feita com a ferramenta que melhor
descreva a essência do processo, não ficando restrita a nenhum dos tipos de ferramentas em específico.
Não se pode dizer que determinada ferramenta de especificação de processo é mais eficiente, melhor ou
pior que outras, isto dependerá muito do projeto em que elas estão sendo utilizadas, as descrições que elas
deverão fazer, bem como os destinatários destas especificações, que poderão ser usuários, analistas,
administradores de empresas, de diversas níveis de conhecimento e áreas de atuação.
Muitas vezes o analista poderá utilizar mais de um tipo de ferramenta para descrever as
especificações de um processo, ou até mesmo a combinação delas, para conseguir um melhor resultado.
A especificação de processo deve ser clara, não ambígua, concisa e completa, ou seja, nenhum
elemento essencial deve ser deixado de fora, ela deve ainda encaixar-se harmoniosamente com as demais
ferramentas da análise estruturada.
Page 42
A especificação de processo é também chamada de miniespecificação, por descrever os processos
ocorridos nas bolhas de níveis mais baixos do DFD (bolhas primitivas).
6.1 - Objetivos da especificação de processo
1º – determinar o papel da miniespecificação
Descrever o que acontece dentro de cada bolha primitiva do DFD.
2º – apresentar um documento de especificação para cada primitivo funcional do DFD.
3º – programa de ação e método
cada miniespecificação deve descrever o programa de ação fundamental que governa a
transformação, e não um método ou meios particulares para implementar este programa de ação.
4º – relacionamento com o restante da Especificação Estruturada
a miniespecificação de introduzir um programa de transformação dos fluxos sem introduzir
redundância de qualquer tipo na Especificação Estruturada.
5º – representação ortogonal
Os métodos usados para escrever miniespecificações devem ser altamente ortogonais, ou seja,
devem apresentar um conjunto mínimo de maneiras para especificar um processo e depois se
utilizar somente deste conjunto mínimo.
A ortogonalidade aqui é usada analogamente ao conceito de ortogonalidade da matemática,
significando “não-justapor” ou mias simplesmente não apresentar mais de uma “definição”para
um mesmo processo.
Uma miniespecificação é em suma um documento que satisfaça os objetivos de especificação da
melhor forma possível. É uma descrição escrita de um programa de ação básico que governa a
transformação de fluxos de entradas em fluxos de saídas; ela deve ser feita para cada bolha primitiva
individualmente, de forma não redundante e ortogonal.
Page 43
6.2 – Ferramentas da Especificação de Processo
Muitas são as ferramentas de especificação de processo utilizadas na análise estruturada. A
abordagem clássica para especificação de processo utiliza-se de textos escritos, contudo, a utilização de
textos em linguagem natural pode trazer vários inconvenientes como redundância, falta de precisão, além
de prolixa, cheia de implicações e conotações. A utilização de textos escritos é também trabalhosa, difícil
de ser lida, não concisa e não ortogonal.
A análise estruturada moderna procura utilizar algumas ferramentas alternativas para descrever as
especificações de processos, já que a língua natural não é uma boa ferramenta pelas fragilidades que
apresenta. Estas ferramentas são normalmente utilizadas por apresentarem melhores características de
estruturação e construção como é o caso de tabelas e gráficos.
Outro meio alternativo é a adaptação da linguagem natural para uma forma mais estruturada, onde
há uma utilização de uma parte da linguagem natural, com o objetivo de se excluir dela as fragilidades
apresentadas, esse subconjunto da linguagem natural pode ser conseguido utilizando-se alguns recursos
como :
1 – eliminar palavras com sinônimos mais simples ou que possam ser utilizados mais
apropriadamente;
2 - eliminar qualquer construção que possa ser substituída por outra sintaxe mais simples;
3 - eliminar qualquer maneira de se formular lógica que possa ser substituída por um modo
mais simples.
Em resumo, todas as facilidades não essências apresentadas pela linguagem natural que forem dela
retiradas, irá contribuir para que ela seja mais precisa, concisa e ortogonal.
As três ferramentas básicas que podem ser utilizadas para descrição da especificação de processos
são :
• Português Estruturado / Inglês Estruturado
• Tabelas de Decisão
Page 44
• Árvore de Decisão
6.2.1 – O Português Estruturado
O Português Estruturado é um subconjunto da língua portuguesa natural, adaptado para ser utilizado
como ferramenta de especificação de processo, só que com algumas restrições quanto à construção de
sentenças em relação à língua comum.
O propósito da linguagem estruturada é obter o equilíbrio entre a precisão que uma linguagem de
programação formal exige e a facilidade e a informalidade da língua, no caso o português que utilizamos
diariamente. Por ser uma linguagem limitada, o português estruturado se resume a algumas construções e
sintaxe básicos, utilizando-se basicamente :
• verbos no imperativo
ex.: faça, procure, retire, divide, valide etc
• termos definidos no dicionário de dados
ex: número-da-nota-fiscal, nome-do-cliente, número-do-cpf etc
• algumas palavras reservadas para a criação de formulações lógicas
ex: repita-enquanto, faça-até, se, senão etc
A sintaxe do português estruturado para uma afirmativa limita-se a :
1. sentenças declaratórias simples
2. construções de decisão
3. construções de repetição
ou a combinação delas.
Page 45
6.2.1.1 – Construções Lógicas do Português Estruturado
As construções lógicas em Português Estruturado podem ser definidas como :
• Construção Seqüencial : são construções onde um ou mais programas de ação são
executados um após o outro até que todo o programa de ação seja aplicado. Uma
construção de seqüência é composta de uma ou mais sentenças simples no imperativo.
SEQUENCIA :
Figura 15
• Construção de Decisão : são construções de dois ou mais programas de ação
subordinados onde apenas um deles pode ser aplicado a qualquer caso determinado.
, 23/12/05
<!--[if gte vml 1]><v:shapetype id="_x0000_t4" coordsize="21600,21600" o:spt="4" path="m10800,0l0,10800,10800,21600,21600,10800xe"> <v:stroke joinstyle="miter"/> <v:path gradientshapeok="t" o:connecttype="rect" textboxrect="5400,5400,16200,16200"/> </v:shapetype><v:shape id="_x0000_s1224" type="#_x0000_t4" style='position:absolute; left:0;text-align:left;margin-left:282pt;margin-top:38.9pt;width:18pt; height:18pt;z-index:120' fillcolor="#333"/><v:line id="_x0000_s1225" style='position:absolute; left:0;text-align:left;z-index:121' from="246pt,48.65pt" to="282pt,48.65pt" strokeweight="2.25pt"/><v:line id="_x0000_s1226" style='position:absolute; left:0;text-align:left;z-index:122' from="300pt,48.65pt" to="336pt,48.65pt" strokeweight="2.25pt"/><v:line id="_x0000_s1229" style='position:absolute; left:0;text-align:left;flip:y;z-index:125' from="291pt,20.9pt" to="291pt,38.9pt" strokeweight="2.25pt"/><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:line id="_x0000_s1217" style='position:absolute;left:0;text-align:left;flip:y; z-index:113' from="238.5pt,20.15pt" to="238.5pt,38.15pt" strokeweight="2.25pt"/><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:roundrect id="_x0000_s1215" style='position:absolute;left:0;text-align:left; margin-left:3in;margin-top:21.5pt;width:45pt;height:27pt;z-index:111' arcsize="10923f" fillcolor="#333"/><v:line id="_x0000_s1216" style='position:absolute; left:0;text-align:left;flip:y;z-index:112' from="237.75pt,3.35pt" to="237.75pt,21.35pt" strokeweight="2.25pt"/><![endif]-->
Page 46
DECISÃO :
Figura 16
• Construção de Repetição : são construções onde um programa de ação subordinado é
executado várias vezes dentro de algum limite.
REPETIÇÃO:
Exemplos: De Marco,
Análise Estruturada e
Especificação de
Sistema, pág. 70
• • •
Figura 18
, 23/12/05
<!--[if gte vml 1]><v:line id="_x0000_s1242" style='position:absolute;left:0;text-align:left;flip:y; z-index:138' from="348pt,14.15pt" to="384pt,14.9pt" strokeweight="2.25pt"/><v:shape id="_x0000_s1913" type="#_x0000_t202" style='position:absolute;left:0; text-align:left;margin-left:297pt;margin-top:33.65pt;width:1in;height:27pt; z-index:485' strokecolor="white"/><v:shape id="_x0000_s1233" type="#_x0000_t4" style='position:absolute;left:0;text-align:left;margin-left:238.5pt; margin-top:4.65pt;width:18pt;height:18pt;z-index:129' fillcolor="#333"/><v:line id="_x0000_s1234" style='position:absolute;left:0;text-align:left;flip:y; z-index:130' from="3in,12.65pt" to="238.5pt,13.4pt" strokeweight="2.25pt"/><v:line id="_x0000_s1237" style='position:absolute;left:0;text-align:left;flip:y; z-index:133' from="248.25pt,21.15pt" to="248.25pt,39.15pt" strokeweight="2.25pt"/><v:shape id="_x0000_s1912" type="#_x0000_t202" style='position:absolute;left:0; text-align:left;margin-left:2in;margin-top:32.65pt;width:1in;height:27pt; z-index:484' strokecolor="white"> <v:textbox> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal>Figura 17</p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:roundrect id="_x0000_s1231" style='position:absolute;left:0;text-align:left; margin-left:225pt;margin-top:43.8pt;width:45pt;height:27pt;z-index:127' arcsize="10923f" fillcolor="#333"/><v:line id="_x0000_s1232" style='position:absolute; left:0;text-align:left;flip:y;z-index:128' from="247.5pt,69.15pt" to="247.5pt,87.15pt" strokeweight="2.25pt"/><v:line id="_x0000_s1235" style='position:absolute; left:0;text-align:left;flip:y;z-index:131' from="215.25pt,22.5pt" to="215.25pt,94.5pt" strokeweight="2.25pt"/><v:line id="_x0000_s1236" style='position:absolute; left:0;text-align:left;z-index:132' from="216.75pt,23.25pt" to="234.75pt,23.25pt" strokeweight="2.25pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1238" style='position:absolute;left:0; text-align:left;flip:y;z-index:134' from="248.25pt,1.5pt" to="248.25pt,46.5pt" strokeweight="2.25pt"/><v:roundrect id="_x0000_s1239" style='position:absolute; left:0;text-align:left;margin-left:5in;margin-top:52.8pt;width:45pt;height:27pt; z-index:135' arcsize="10923f" fillcolor="#333"/><v:line id="_x0000_s1240" style='position:absolute;left:0;text-align:left;flip:y;z-index:136' from="382.5pt,78.15pt" to="382.5pt,96.15pt" strokeweight="2.25pt"/><v:shape id="_x0000_s1241" type="#_x0000_t4" style='position:absolute;left:0;text-align:left;margin-left:374.25pt; margin-top:24pt;width:18pt;height:18pt;z-index:137' fillcolor="#333"/><v:line id="_x0000_s1243" style='position:absolute;left:0;text-align:left;flip:y; z-index:139' from="346.5pt,24pt" to="346.5pt,96pt" strokeweight="2.25pt"/><v:line id="_x0000_s1244" style='position:absolute;left:0;text-align:left;z-index:140' from="347pt,24.75pt" to="365pt,24.75pt" strokeweight="2.25pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1245" style='position:absolute;left:0; text-align:left;rotation:-90;flip:y;z-index:141' from="402pt,25.05pt" to="402pt,43.05pt" strokeweight="2.25pt"/><v:line id="_x0000_s1246" style='position:absolute; left:0;text-align:left;flip:y;z-index:142' from="383.25pt,10.5pt" to="383.25pt,55.5pt" strokeweight="2.25pt"/><v:line id="_x0000_s1247" style='position:absolute; left:0;text-align:left;flip:y;z-index:143' from="410pt,34.05pt" to="410pt,133.05pt" strokeweight="2.25pt"/><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:line id="_x0000_s1227" style='position:absolute;left:0;text-align:left;z-index:123' from="248.25pt,.55pt" to="338.25pt,.55pt" strokeweight="2.25pt"/><v:line id="_x0000_s1228" style='position:absolute;left:0;text-align:left;flip:y;z-index:124' from="291pt,1.3pt" to="291pt,19.3pt" strokeweight="2.25pt"/><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:rect id="_x0000_s1230" style='position:absolute;left:0;text-align:left;margin-left:387pt; margin-top:20.5pt;width:54pt;height:18pt;z-index:126' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1230'/> </v:rect><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:line id="_x0000_s1220" style='position:absolute; left:0;text-align:left;flip:y;z-index:116;mso-position-horizontal-relative:text; mso-position-vertical-relative:text' from="337.5pt,36.55pt" to="337.5pt,54.55pt" strokeweight="2.25pt"/><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:line id="_x0000_s1219" style='position:absolute;left:0;text-align:left;flip:y; z-index:115;mso-position-horizontal-relative:text; mso-position-vertical-relative:text' from="336.75pt,-6.95pt" to="336.75pt,11.05pt" strokeweight="2.25pt"/><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:roundrect id="_x0000_s1218" style='position:absolute;left:0;text-align:left; margin-left:315pt;margin-top:11.2pt;width:45pt;height:27pt;z-index:114; mso-position-horizontal-relative:text;mso-position-vertical-relative:text' arcsize="10923f" fillcolor="#333"/><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:line id="_x0000_s1223" style='position:absolute;left:0;text-align:left;flip:y; z-index:119;mso-position-horizontal-relative:text; mso-position-vertical-relative:text' from="247.5pt,36.55pt" to="247.5pt,54.55pt" strokeweight="2.25pt"/><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:line id="_x0000_s1222" style='position:absolute;left:0;text-align:left;flip:y; z-index:118;mso-position-horizontal-relative:text; mso-position-vertical-relative:text' from="246.75pt,-6.95pt" to="246.75pt,11.05pt" strokeweight="2.25pt"/><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:roundrect id="_x0000_s1221" style='position:absolute;left:0;text-align:left; margin-left:225pt;margin-top:11.2pt;width:45pt;height:27pt;z-index:117; mso-position-horizontal-relative:text;mso-position-vertical-relative:text' arcsize="10923f" fillcolor="#333"/><![endif]-->
Page 47
As três construções apresentadas têm a característica em comum de possuírem apenas um único
ponto de entrada e um único ponto de saída, isso faz com que as construções de programas de ação em
blocos sejam facilmente lidas de cima para baixo, sem interrupção do processo de pensamento serial.
Descrições que introduzem interrupções no fluxo serial de percepção do usuário é de difícil leitura.
6.2.1.2 - Exemplos de Construções em Português Estruturado
Formato Se-Então-Caso Contrário
Se<condição>
Então
<programa de ação “então”>
Caso Contrário
<programa de ação “caso contrario”>.
Formato Selecione-Caso
Selecione o programa de ação que se aplica:
Caso 1 (< condição que define o caso 1>);
<Programa de ação que se aplica ao Caso 1>
, 23/12/05
<!--[if gte vml 1]><v:rect id="_x0000_s1272" style='position:absolute;left:0;text-align:left; margin-left:18pt;margin-top:26.7pt;width:54pt;height:18pt;rotation:90; z-index:166' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1272'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><span style='font-family:Symbol;mso-ascii-font-family: "Times New Roman";mso-hansi-font-family:"Times New Roman";mso-char-type: symbol;mso-symbol-font-family:Symbol'><span style='mso-char-type:symbol; mso-symbol-font-family:Symbol'>·</span></span><span style="mso-spacerun: yes"> </span><span style='font-family:Symbol;mso-ascii-font-family:"Times New Roman"; mso-hansi-font-family:"Times New Roman";mso-char-type:symbol;mso-symbol-font-family: Symbol'><span style='mso-char-type:symbol;mso-symbol-font-family:Symbol'>·</span></span><span style="mso-spacerun: yes"> </span><span style='font-family:Symbol; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"; mso-char-type:symbol;mso-symbol-font-family:Symbol'><span style='mso-char-type: symbol;mso-symbol-font-family:Symbol'>·</span></span></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox> </v:rect><![endif]-->
Page 48
Caso n (<condição que define o caso n>);
<Programa de ação que se aplica ao Caso n>
Formato de Continuidade
<frase-chave>
<programa de ação subordinado que se repete aqui>.
< condição para repetição contínua>;
6.2.1.3 - A Estrutura de uma Descrição
A estrutura de uma descrição em um programa de ação é representada por um gráfico de fluxos que
define as ações do usuário, assim como ele considera que o programa de ação deve fazer, de acordo com
o que ele já faz.
Descrição do Programa de Ação Calcula Cartão-Ponto-Semanal
A apuração semanal de Cartão de Ponto consiste em receber os lotes-cartões dos diversos setores da
empresa, classifica-los em ordem alfabética dentro de cada setor. Após isso, passasse para a parte da
apuração. O saldo-semanal é calculado diariamente até o sétimo dia, pela soma do saldo-semanal com o
saldo-diário, que é calculado pela soma da diferença entre cada horário de saída pelo de entrada
diariamente, esta atividade é executada enquanto houver horário de entrada e de saída.
Uma vez que o programa de ação do usuário já corresponde à sintaxe restrita, tudo o que é
necessário fazer é reduzir o vocabulário, incorporar nomes do Dicionário de Dados e paragrafar para
Page 49
enfatizar a subordinação.
Programa de ação Calcular Cartão de Ponto Semanal em
Português Estruturado
Para cada Lote-Cartões
Ordenar alfabeticamente
Para cada Cartão-Ponto
Calcular Saldo-Semana
Repita até Dia-Semana igual a 7
Saldo-Semana igual Saldo-Semana mais Saldo-Horas-Dia
Repita enquanto existir hora-saída e hora-entrada
Saldo-Horas-Dia igual soma hora-saída mais hora-entrada
Dia-Semana igual Dia-Semana mais Um
, 23/12/05
<!--[if gte vml 1]><v:rect id="_x0000_s1248" style='position:absolute;left:0;text-align:left; margin-left:153pt;margin-top:0;width:189pt;height:4in;z-index:144'/><v:roundrect id="_x0000_s1249" style='position:absolute;left:0;text-align:left; margin-left:3in;margin-top:72.3pt;width:45pt;height:27pt;z-index:145' arcsize="10923f" fillcolor="#333"/><v:line id="_x0000_s1250" style='position:absolute; left:0;text-align:left;flip:y;z-index:146' from="238.5pt,97.65pt" to="238.5pt,115.65pt" strokeweight="2.25pt"/><v:shape id="_x0000_s1251" type="#_x0000_t4" style='position:absolute; left:0;text-align:left;margin-left:229.5pt;margin-top:114.3pt;width:18pt; height:18pt;z-index:147' fillcolor="#333"/><v:line id="_x0000_s1252" style='position:absolute; left:0;text-align:left;flip:y;z-index:148' from="207pt,123.3pt" to="229.5pt,124.05pt" strokeweight="2.25pt"/><v:line id="_x0000_s1253" style='position:absolute; left:0;text-align:left;flip:y;z-index:149' from="206.25pt,52.05pt" to="206.25pt,124.05pt" strokeweight="2.25pt"/><v:line id="_x0000_s1254" style='position:absolute; left:0;text-align:left;z-index:150' from="207.75pt,52.8pt" to="225.75pt,52.8pt" strokeweight="2.25pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1255" style='position:absolute;left:0; text-align:left;z-index:151' from="238.5pt,-27pt" to="238.5pt,81pt" strokeweight="2.25pt"/><v:shape id="_x0000_s1256" type="#_x0000_t4" style='position:absolute; left:0;text-align:left;margin-left:229.5pt;margin-top:18pt;width:18pt; height:18pt;z-index:152' fillcolor="#333"/><v:line id="_x0000_s1257" style='position:absolute; left:0;text-align:left;z-index:153' from="296.25pt,25.5pt" to="296.25pt,268.5pt" strokeweight="2.25pt"/><v:roundrect id="_x0000_s1258" style='position:absolute; left:0;text-align:left;margin-left:3in;margin-top:168.3pt;width:45pt;height:27pt; z-index:154' arcsize="10923f" fillcolor="#333"/><v:shape id="_x0000_s1259" type="#_x0000_t4" style='position:absolute;left:0;text-align:left; margin-left:229.5pt;margin-top:210.3pt;width:18pt;height:18pt;z-index:155' fillcolor="#333"/><v:line id="_x0000_s1260" style='position:absolute;left:0; text-align:left;flip:y;z-index:156' from="238.5pt,199.5pt" to="238.5pt,217.5pt" strokeweight="2.25pt"/><v:line id="_x0000_s1261" style='position:absolute; left:0;text-align:left;flip:y;z-index:157' from="238.5pt,121.2pt" to="238.5pt,193.2pt" strokeweight="2.25pt"/><v:line id="_x0000_s1262" style='position:absolute; left:0;text-align:left;flip:y;z-index:158' from="238.5pt,230.25pt" to="238.5pt,320.25pt" strokeweight="2.25pt"/><v:line id="_x0000_s1263" style='position:absolute; left:0;text-align:left;z-index:159' from="241.5pt,278.25pt" to="295.5pt,278.25pt" strokeweight="2.25pt"/><v:line id="_x0000_s1264" style='position:absolute; left:0;text-align:left;z-index:160' from="278.25pt,53.55pt" to="278.25pt,215.55pt" strokeweight="2.25pt"/><v:line id="_x0000_s1265" style='position:absolute; left:0;text-align:left;z-index:161' from="243pt,54.3pt" to="279pt,54.3pt" strokeweight="2.25pt"/><v:line id="_x0000_s1266" style='position:absolute; left:0;text-align:left;z-index:162' from="243pt,223.5pt" to="279pt,223.5pt" strokeweight="2.25pt"/><v:line id="_x0000_s1267" style='position:absolute; left:0;text-align:left;flip:x;z-index:163' from="239.25pt,54.3pt" to="248.25pt,54.3pt" strokeweight="2.25pt"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1268" style='position:absolute;left:0; text-align:left;z-index:164' from="243pt,26.25pt" to="297pt,26.25pt" strokeweight="2.25pt"/><v:rect id="_x0000_s1269" style='position:absolute; left:0;text-align:left;margin-left:5in;margin-top:253.5pt;width:36pt;height:36pt; z-index:165' strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1269'/> </v:rect><![endif]-->