Os fluxos discutidos neste capítulo são [ de dados; eles atuam como dutos pelos quais transitam pacotes de dados entre processos e depósitos. De forma semelhante, as bolhas dos DFD vistos até o presente momento podem ser consideradas como processadores de dados. Para uma grande classe de sistemas, particularmente os sistemas comerciais, esse é o único tipo de fluxo necessário para a modelagem de sistemas. Mas para outro tipo de sistemas, os de tempo-real, precisamos de um meio de modelar fluxos de controle (ex.: sinais ou interrupções) e de um modo de mostrar processos de controle - (bolhas cuja única tarefa é coordenar e sincronizar as atividades de outras bolhas do DFD) Essas bolhas se apresentam em linhas tracejadas no DFD, como se pode ver na figura 9.24. Um fluxo de controle pode ser imaginado como um duto que pode transportar um sinal binário (isto é, pode estar ligado ou desligado). Contrariamente aos outros [ discutidos neste capítulo, o [ de controle não transporta dados com valores. O fluxo de controle é envia do de um processo para outro (ou de algum terminador externo para um processo) como uma forma de dizer: ‘Acorde! Está na hora de traba lhar!”. A implicação,
naturalmente, é que o processo estava adormecido, ou inativo antes da chegada do fluxo de controle.
Um processo de controle pode ser imaginado como uma bolha supervisora ou executiva cuja tarefa é coordenar as atividades das outras bolhas do diagrama; suas entradas e saídas consistem apenas em fluxos de controle. Os fluxos de controle que partem do processo de controle são utilizados para despertar outras bolhas; os que chegam geralmente indicam que uma das bolhas terminou a execução de alguma tarefa, ou que alguma situação extraordinárir surgiu e sobre a qual a bolha de controle deve ser informada. Norrialmente existe apenas um processo de controle em um DFD. Como indicado acima, um fuxo de controle é utilizado para des pertar um processo normal; após desperto, o processo normal executa sua tarefa, descrita por uma
especificação de processo (veja o capítulo 11). O comportamento interno de um processo de controle é, portanto, diferente: é onde o comportamento tempo-dependente do sistema é
214 4
do satélite PROCESSA
sinal do satélite DADOS DO SATÉLITE
- _- ativar
processamento
DADOS DE VIGILÂNCIA ativar
processamento do radar dados do radar
Figura 9.24: Um DFD com fluxos de controle e processos de controle
modelado em detalhe. O interior de um processo de controle é modela do por um diagrama de transições de estado, que mostra os vários esta dos em que todo o sistema pode estar e as circunstâncias que conduzem a uma mudança de estado. Os diagramas de transições de estado são discutidos no capítulo 13.
9.5 RESUMO
Como vimos neste capítulo, o diagrama de fluxo de dados é uma ferramenta simples mas poderosa para a modelagem das funções de um sistema. O material das seções 9.1, 9.2 e 9.3 deve ser suficiente pa ra modelar a maioria dos sistemas comerciais clássicos de informações. Se você estiver trabalhando em um sistema de tempo-real (p.ex., con trole de processos, orientação de mísseis ou comutação telefônica), as extensões para tempo- real discutidas na seção 9.4 serão importantes; para mais detalhes sobre problemas de tempo-real, consulte [ e Melior, 19851.
Infelizmente, muitos analistas de sistemas pensam que os diagra mas de fluxo de dados são tudo de que precisam saber sobre análise de sistemas. Se você perguntar a um de seus colegas se ele está familiari zado com a análise estruturada, ele provavelmente
responderá: “Oh, sim, 215
aprendi tudo sobre bolhas e o resto”. Por Outro lado, isso é um tributo ao poder dos diagramas de fluxo de dados - ele é muitas vezes a Úni ca coisa de que um analista de sistemas se recorda depois de ler um li vro ou fazer um curso sobre análise estruturada! No entanto, isso é uma situação perigosa: sem as ferramentas de modelagem adicionais apresentadas nos próximos capítulos, os diagramas de fluxo de dados não têm valor. Mesmo que os relacionamentos de dados e o compor tamento tempo-dependente do sistema sejam triviais (o que é pouco provável), ainda é necessário combinar os DFD com o dicionário de dados (discutido no capítulo 10) e a especificação de processos (dis cutida no capítulo 11).
Portanto, não guarde o livro ainda! Ainda há mais a aprender! REFERÊNCIAS
1. Wayne Stevens, Glen Myers e Larry Constantine, “Structured Design”, IBM Systems Journal, maio de 1974.
2. Ed Yourdon e Larry Constantine, Structured Deslgn. Nova lorque: YOURDON Press, 1975.
Petroceili/Charter, 1975.
4. Tom DeMarco, Structured Analysis and Systems Spec Englewood Cliffs, N.J.: Prentice-Hall, 1979.
5. Chris Gane e Trish Sarson, Struclured Systems Analys&s: Tools and Techníques, Englewood Cliffs, N.J.: Prentice-Hall, 1978.
6. Doug Ross e Ken Schoman, Jr., “Structured analysis for Require ments Definition”, IEEE Transactions on Software Englneering, janeiro de 1977, pgs. 41-48. Reimpresso em Ed Yourdon, Clas.sícs in Software Engíneering. Nova lorque: YOURDON Press, 1979. 7. Paul Ward e Steve Mellor, Structured Development of Real-Time Systems, Volumes 1- 3. Nova Jorque: YOURDON Press, 1986.
8. Edsger W. Dijkstra, “Cooperating Sequential Processes”. Program ming Languages, F. Genuys (editor). Nova lorque: Academic Press,
1968.
9. Paul Ward, “The Transformation Schema: An Extension of the Data flow Diagram to Represent Control and Timing”, IEEE Transactions
on Software Engineering fevereiro dc 1986, pgs. 198-210.
10. Derek Hatley, “The Use ofStructured Methods in the Development of Large Software-Based Avionics Systems”, AIAA/IEEE 6th Digital
Avionics Conference, Baltimore, 1984.
11. M. Webb e Paul Ward, “Executable Dataflow Diagrams: An Experi mental Implementation”, Structured Development Fonim, Seattle,
agosto de 1986. 216
12. E. Reilly e J. Brackett, “An Experimental System for Executing Real Time Structured Analysis Modeis”, Pmceedings of lhe 121h Structu red Melhods Conference, Chicago, agosto de 1987.
PERGUNTAS E EXERCÍCIOS
1. Dê uma breve descrição de um diagrama de fluxo de dados. Qual é a diferença entre um DFD e um fluxograma?
2. Apresente seis sinônimos para diagrama de fluxo de dados.
3. Em que os DFD podem ser usados além da modelagem de siste mas de informações? 4. Quais são os quatro principais componentes de um DFD?
5. Quais são os três sinônimos comuns para processo em um DFD?
6. Existe alguma importância na escolha de um círculo paia um pro cesso? Seria melhor usar um triângulo ou um hexágono? Por quê?
8. O que está errado com o processo abaixo IFX>3
GOTO O UARK7
9. O que está errado com o processo abaixo? 217
10. O que está errado com o processo abaixo? REGISTRO
DE CLIENTE
11. O que está errado com o processo abaixo?
12. Por que um analista de sistemas desenharia um DFD com un processo composto do nome de uma pessoa ou de um grupo d organização?
13. Os fluxos de um DFD restringem-se a mostrar apenas o moviment de informações? Podem mostrar o movimento de outras coisas?
14. O que está errado neste DFD? 15. O que está errado neste DFD?
16. Como pode o mesmo conjunto de dados ter diferentes significado em um DFD? Desenhe um exemplo de tal situação.
218
17. Qual é o significado do DFD abaixo?
x i x
\S
18. Existe algum limite para o número dc entradas e saídas que um processo pode ter em um DFD? Qual seria sua reação ao ver um
processo com 100 entradas e 100 saídas? 19. O que está errado no DFD abaixo? 20. O que está errado no DFD abaixo? 1
21. O que está errado nos DFD abaixo? b
219
a c b
23. O que está errado no DFD abaixo? c
b
24. Descreva um fluxo de diálogo.
25. O DFD abaixo é válido? Existe alguma outra maneira c desenhá-lo?
Y x 220
26. O DFD abaixo é válido? Existe alguma outra maneira de desenhá-lo?
27. Sob que circunstâncias você poderia ver cópias duplicadas de um fluxo de saída de um processo?
28. Por que os DFD evitam mostrar detalhes procedurais?
29. No diagrama abaixo, quantos elementos x e quantos elementos y são necessários para produzir uma saída z?
x z
30. O que um depósito mostra em um DFD?
31. Qual é a convenção para a atribuição dc nomes de depósitos em um DFD?
32. Quais são os nomes alternativos para um depósito? É aceitável o emprego do termo arquivo? Por quê?
33. Que nomes são costumeiramente utilizados para descrever pacotes de informações em um depósito?
34. Quais são os três motivos habituais para se mostrar depósitos de implementação em um DFD?
35. Você concorda com a exibição de depósitos de implementação em um DFD? Por quê? 36. Qual é o significado de um fluxo sem rótulo entrando ou saindo de um depósito? 37. Existe algum limite para o númem dc fluxos que chegam ou saem de um depósito? Se assim for, determine esse limite.
221
(a) b/ (c) (d) o (e) 222
39. Quais são as quatro possíveis interpretações de um fluxo de dados que parte de um depósito para um processo?
40. O DFD abaixo faz sentido? Por quê? CLIENTES
registro de cliente
41. Dê um exemplo de uma situação onde um processo pode extrair partes de mais de um registro de um depósito em um único acesso
lógico.
42. Dê um exemplo de uma situação onde um processo pode extrair mais de um pacote de informações de um depósito em um único
acesso lógico.
43. Examinando os diagramas a seguir você pode dizer se os DFD estão corretos? (a) _______________________ CLI ENTES número-de-telefone 223 (b) Cc) CLIENTES
44. O que ocorre com um depósito depois que dados saem dele por um fluxo, para um processo? Isso é verdadeiro para todos os tipos
de sistemas ou apenas para sistemas de informações?
45. Quais são as três possíveis interpretações da chegada de um fluxo a um depósito? 46. Como podemos mostrar pacotes de dados sendo eliminados Cdeletados”) de um depósito?
47. O que está errado no DFD abaixo? CLIENTES
dados-de-inventário trajetória-do-míssil 224
48. Qual é o propósito de se mostrar um terminador em um DFD? 49. Como faz o analista de sistemas para identificar os terminadores? 50. Que representam os fluxos entre termiriadores e processos? 51. O que está errado nos DFD abaixo?
(a) (b) ________ CLIENTE 1 SISTEMA DE PEDIDOS (c) impostos (d) 225
52. O analista de sistemas pode alterar o conteúdo ou a organização de um terminador como parte de seu projeto? E se ele achar que deve
ser modificado’
53. Por que um processo não deve ter o nome da pessoa que pre sentemente desempenha aquela função?
54. Qual é uma boa diretriz para atribuir nomes a processos em um DFD?
55. Dê cinco exemplos de nomes de processos que você não gostaria de ver em um DFD. 56. Como você pode afirmar se o nome escolhido para um processo é significativo? 57. Qual é o erro de interpretação que o usuário pode cometer em relação aos números das bolhas de um DFD?
58. Como se pode saber se um DFD será muito complexo para ser entendido pelo usuário?
59. Quão rigidamente deve ser obedecida a diretriz da complexidade? Deve ser permitida alguma exceção? Por quê?
60. Por que é freqüentemente necessário redesenhar um DFD muitas vezes? 61. Quais são os principais aspectos que determinam se um DFD é esteticamente agradável? Você acha que esses aspectos podem ser
expressos como padrões?
62. Seus colegas preferem representar os processos com bolhas ou com ovais? E você, como prefere?
63. Você acha que os fluxos de dados entre processos devem ser de senhados como linhas curvas ou como linhas retas? Quais são as
vantagens e desvantagens de cada tipo? Esse aspecto é importante?
64. O que é um poço sem fundo? Por que a presença dele deve ser considerada um erro em um DFD típico?
65. Que são bolhas de geração espontânea em um DFD? Por que devem ser evitadas em um DFD?
66. Por que os fluxos e processos sem rótulo são perigosos?
67. Por que os depósitos de leitura-apenas e de escrita-apenas con figuram-se habitualmente como um erro em um DFD?
68. Por que os DFD em níveis são importantes no modelo de um sistema?
69. Quantos níveis de DFD um analista de sistemas deve esperar encontrar em um típico sistema de grande porte? Você pode sugerir
um limite superior para o número de níveis em um DFD? 70. Em um DFD em níveis:
(a) O que podemos chamar de bolhas “filhas” abaixo da bolha 2.3? (b) Qual seria o nome de figura da figura na qual aparece a bolha 2.3? 226
(c) Quantas figuras de nível superior existem acima da figura na qual aparece a bolha 2.3? Como são chamadas?
71. É necessário que todas as partes de um sistema sejam subdivididas nos mesmos níveis de detalhamento? Por quê?
72. Suponha que alguém lhe mostre um DFD no qual a bolha 1 esteja subdividida em dois níveis inferiores e a bolha 2 esteja subdividi da em 17 níveis inferiores. Qual seria sua reação? Que reco mendações, se houver alguma, você faria?
73. Que significa equilíbrio, no contexto deste capítulo? Como se pode dizer se um DFD está equilibrado?
74. Por que a figura 9.22(b) deste capítulo está desbalanceada?
75. Qual é a diretriz para a exibição de depósitos em diferentes níveis de um DFD? 76. O que é um depósito local? Quais são as diretrizes para a exibição de um depósito local em um DFD em níveis?
77. Projeto de Pesquisa: qual é a relação entre a diretriz para a exibição de depósitos locais e o conceito de projeto orientado para o objeto?
Para isto detalhes sobre isso, leia os capítulos 19 e 20.
78. Que problemas podem estar associados ao desenvolvimento de um conjunto de DFD em níveis na metodologia top-down (em comparação com a leitura de um conjunto já desenvolvido de DFD pela metodologia top-down)?
79. O que é um fluxo de controle? Por que é diferente de um fluxo de dados?
80. O que é um processo de controle? Por que é diferente de um processo normal de um DFD?
81. O que é um depósito de controle? Por que é diferente de um depósito normal de um DFD?
82. Desenhe um diagrama de fluxo de dados para modelar a seguinte receita de Fruits de Mer au Riz (Mexilhões com Arroz), tirada do Tbe New York Times 60-Minute Gourmet, por Pierre Franey (Nova lorque: TIMES Books, 1979).
“1. Para começar, prepare e meça todos os ingredientes para o arroz. Para ganhar tempo, pique uma xícara extra de cebola e 2 dentes extras de alho para a mistura. Deixe de lado.
2. Aqueça 2 colheres de sopa de óleo para o arroz em uma panela e acrescente 1/4 de xícara de cebola, pimentão e alho e aqueça até ficar
cozido. Acrescente o açafrão e cozinhe por mais 2 minutos.
3. Acrescente arroz, água, sal e pimentão e tampe. Aqueça por cerca de 17 minutos ou até que o arroz esteja cozido. Enquanto o arroz cozinha
prepare os frutos do mar. Lembre-se de que quando o arroz estiver 227
cozido, deve ser retirado do fogo. Ele pode ficar tampado por alguns minutos sem problemas.
4. Aqueça, em uma caçarola, 1/4 de xícara de óleo e acrescente uma xícara de cebolas e 2 dentes de alho. Mexa e aqueça até ficar cozido. Acrescente pimentão vermelho, tomates, vinho e orégano. Acrescente sal e pimenta. Tampe e cozinhe por 10 minutos.
5. Coloque os mariscos e mexilhões na panela e tampe de novo. Aqueça por 3 minutos e acrescente os camarões, escalopes, sal e pimenta a seu
gosto. Tampe e aqueça por 5 minutos”.
83. Desenhe um diagrama de fluxo de dados para a seguinte receita de Coqulile St. Jacques Meunlere (Escalopes Fritos na Manteiga), tirada do 7be New York Times 60- Minute Gourinet, por Pierre Franey (Nova lorque: TIMES Books, 1979):
“Um ponto a ser lembrado cem vezes é a organização. Antes de cozinhar, pique o que for preciso picar e meça o que tiver de ser medido. Providencie as panelas e caçarolas que forem necessárias para o serviço - neste caso, duas frigideiras (uma para os escalopes e outra para os tomates) e uma caçarola (para as batatas).
Deixe descansar por alguns instantes.
2. Ponha a farinha de trigo em um prato e acrescente sal e pimenta a seu gosto. Misture bastante. Escorra os escalopes. Polvilhe-os com a farinha e coloque-os em uma peneira. Agite para retirar o excesso de farinha. Espalhe-os em uma folha de papel laminado ou encerado de modo a que não se toquem para que não grudem.
3. Os escalopes devem ser cozidos em fogo alto em pequenas quantidades. Aqueça 3 colheres de sopa de óleo e 1 de manteiga em uma frigideira grande. Quando a mistura estiver bem quente, mas não fumegando, acrescente metade dos escalopes, mexendo-os e agitando- os na frigideira de modo a que cozinhem rápida e uniformemente até
adquirirem um marrom dourado.
4. Use uma colher fendida para transferir os escalopes para uma travessa quente.
Acrescente as 2 colheres de sopa restantes de óleo à frigideira e quando estiver bastante quente, coloque os escalopes restantes, mexendo-os e agitando-os na frigideira como antes. Quando estiverem marrons, passe-os para a travessa com os outros escalopes. Limpe a frigideira, acrescente a manteiga restante e aqueça até ficar marrom claro ou acastanhado. Salpique os escalopes com suco de limão e salsa picada”.
228
84. Desenhe um diagrama de fluxo de dados para a seguinte receita de Omelefle Pavilion (Omelete com frango, tomates e queijo), tirada do Tbe New York Times 60-Minute Gourmet, por Pierre Franey (Nova Jorque: TIMES Books,1979):
“Antes de começar a preparar os omeletes, quebre três ovos para cada omelete em tantas tigelas quantas forem necessárias para a quantidade de omeletes a serem preparados (uma para cada um). Acrescente sal e pimenta a gosto e duas colheres de sopa de creme grosso. Os ovos também podem ser batidos para acelerar o preparo dos omeletes.
1. Aqueça 2 colheres de sopa de manteiga em uma caçarola e junte farinha de trigo. Bata com um batedor de ovos até que fique bem mis turado. Junte o caldo de frango e aqueça, batendo vigorosamente com o batedor. Coloque o creme e deixe ferver. Ferva por cerca de 10 minutos.
2. Enquanto isso, aqueça outra colher de sopa de manteiga em uma caçarola e acrescente cebola. Aqueça, mexendo, até que esteja cozido, e junte tomates, tomilho, folhas de louro, sal e pimenta. Ferva, mexendo vez por outra, por uns 10 minutos.
3. Aqueça outra colher de manteiga e junte o frango. Deixe cozinhar, mexendo, por cerca de 30 segundos. Junte 3 colheres de sopa de
molho cremoso. Deixe ferver e retire do fogo. Ponha de lado.
4. Junte as gemas dos ovos ao molho restante e mexa para misturar. Acrescente sal e pimenta a gosto e queijo suíço ralado. Aqueça e mexa
até que o queijo derreta. Ponha de lado.
5. Bata os ovos com sal e pimenta. Junte 6 colheres de sopa de molho de tomate. Aqueça as 3 colheres restantes de manteiga em uma omeleteira ou em uma frigideira de Teílon e quando estiver bem quente, acrescente os ovos. Cozinhe, mexendo, até que o omelete esteja consis tente em baixo mas úmido e pastoso no meio. Ponha uma colher de frango
com creme no centro do omelete e um pouco do molho de tomate que sobrou. Passe o omelete rapidamente para uma travessa.
6. Passe molho de tomate por sobre o omelete e salpique-o com queijo parmesão ralado. Ponha para assar na grelha até ficar marrom-dourado.
NOTAS
Entretanto, a desvantagem do MacDraw (e de outros programas do gênero) é que ele nada sabe a respeito da especial natureza dos diagramas de fluxo de dados ou dos outros modelos de sistemas 229
apresentados neste livro. Ele só conhece formas primitivas como retângulos, círculos e linhas. Os produtos do estojo de ferramentas do analista de sistemas, discutidos no apêndice A,são muito mais poderosos, porque sabem muito mais sobre o tema dos diagramas de fluxo de dados.
2 O formato utilizado pelo analista de sistemas para os processos é muitas vezes associado a um determinado “campo” da análise
estruturada. O círculo é associado ao campo “Yourdon/DeMarco’, por ser utilizado em vários livros publicados pela YOURDON Press e nas atividades de treinamento e consultoria da YOURDON Inc. De maneira semelhante, o formato oval é muitas vezes associado ao campo ‘Gane/Sarson”, por ter sido apresentado por Chris Gane e Trish Sarson em seu livro [ e Sarson, 1977], e foi usado pela McDonnell Douglas Automation Company (McAuto) e várias outras empresas. O retângulo é comumente associado ao campo ‘SADT”, por ter sido popularizado em vários artigos sobre a Softech
Structured Analysis Design Technique (SADT); veja, por exemplo,