1. PROGRAMAO ESTRUTURADA
1.1 - DEFINIES 3 3 1.2 - OBJETIVOS 3 1.3 - PROPRIEDADES 4 1.4 - ESTRUTURAS BSICAS DE CONTROLE 4 1.5 - FORMATO PADRONIZADO DO MDULO 5 1.6 - ESTRUTURA DE CONTROLE DO PROGRAMA 1.6.1 - REGRAS PARA O FLUXO DE CONTROLE DO PROGRAMA EM UM PROGRAMA ESTRUTURADO 5 5 1.7 - DOCUMENTAO 2. PROGRAMAO MODULAR 2.1 - DIVIDIR-PARA-CONQUISTAR 2.2 VANTAGENS DA PROGRAMAO MODULAR 2.3 - ESQUEMAS DE MODULARIZAO 2.3.1 TAMANHO DO MDULO 3. PROGRAMAO POR REFINAMENTO SUCESSIVO (STEPWISE REFINEMENT) 3.1 - DEFINIO 3.2 - CARACTERSTICAS DO REFINAMENTO 4. TOP-DOWN E BOTTOM-UP 4.1- METODOLOGIAS DE PROGRAMAO ESTRUTURADA 4.2 - PROGRAMAO TOP-DOWN 4.2.1 - VANTAGENS 4.2.2 - ETAPAS DA PROGRAMAO TOP-DOWN 4.2.3 - PRINCPIOS BSICOS DA PROGRAMAO TOP-DOW 4.3 - PROGRAMAO BOTTOM-UP VERSUS PROGRAMAO TOP-DOWN 4.4 - PROGRAMAO BOTTOM-UP 4.4.1 - ETAPAS DA PROGRAMAO BOTTOM-UP 4.4.2. - CARACTERSTICAS DO PROCESSO DE CONCATENAO 5. DIAGRAMAS ESTRUTURADOS 5.1 - INTRODUO 5.2 - FUNES DOS DIAGRAMAS ESTRUTURADOS 5.3 - CATEGORIAS DE DIAGRAMAS ESTRUTURADOS 5.4 - CLASSIFICAO DAS TCNICAS DE DIAGRAMAO
http://www.li.facens.br/eletronica 1
6 6 6 7 7 8 8 8 9 9 9 10 10 10 10 11 11 11 12 12 12 12 13
1
6. DIAGRAMAS DE NASSI-SHNEIDERMAN 6.1 - INTRODUO 6.2 - ESTRUTURAS BSICAS DE CONTROLE 6.3 - EXEMPLO DE UM DIAGRAMA N-S 6.4 - CRTICA AO DIAGRAMA DE NASSI-SHNEIDERMAN 7. DIAGRAMA DE FLUXO DE DADOS 7.1 - INTRODUO 7.2 - COMPONENTES DE UM DFD 7.3 NIVELAMENTO DE UM DFD 7.4 ESPECIFICAO DE PROCESSO E DICIONRIO DE DADOS 7.5 - CRTICAS AO DFD 8. NOTAO DE GANE E SARSON 8.1 INTRODUO
14 14 14 16 17 18 18 18 20 22 23 24 24
http://www.li.facens.br/eletronica 2
1. Programao Estruturada
1.1 Definies
No existe uma definio universalmente aceita para a programao estruturada; ao contrrio, existem vrias escolas de pensamento que a conceituam. No sentido mais restrito, o conceito de programao estruturada diz respeito forma do programa e do processo de codificao. um conjunto de convenes que o programador pode seguir para produzir o cdigo estruturado. As regras de codificao impem limitaes sobre o uso das estruturas bsicas de controle, estruturas de composio modular e documentao. Com este sentido, a programao estruturada enfoca os seguintes tpicos: Programao sem GO TO (eliminao completa ou parcial do comando GO TO) Programao com apenas trs estruturas bsicas de controle: seqncia, seleo e iterao Forma de um programa estruturado Aplicao de convenes de codificao estruturada a uma linguagem de programao especfica Em um sentido mais amplo, a programao estruturada dirigida tanto aos mtodos de programao como forma do programa. Implica seguir uma metodologia estruturada para organizar o projeto e a implantao do programa. Os tpicos envolvidos incluem: Programao modular Refinamento gradual (stepwise refinement) Nveis de abstrao Programao top-down e bottom-up
1.2
Objetivos
O principal objetivo da programao estruturada produzir um programa de alta qualidade a baixo custo, proporcionando uma disciplina de programao para conseguir: Melhorar a confiabilidade do programa Aumentar a legibilidade do programa Minimizar a complexidade do programa Simplificar a manuteno do programa Aumentar a produtividade do programador Estabelecer uma metodologia disciplinada de programao
1.3
Propriedades
As caractersticas mais notveis de um programa estruturado so sua forma hierarquizada e o conjunto reduzido de suas estruturas bsicas de controle. Alm dessas, tambm so consideradas propriedades igualmente importantes, a estrutura de controle padronizada, os requisitos de programao e as convenes de estilo. A seguir, um resumo das propriedades de um programa estruturado.
http://www.li.facens.br/eletronica 3 3
Propriedade 1 - o programa dividido em um conjunto de mdulos dispostos em uma hierarquia que define suas relaes lgicas e de tempo de execuo. Propriedade 2 - o fluxo de execuo de mdulo para mdulo restringe-se a um esquema simples, fcil de entender, no qual o controle deve ser passado para o mdulo em seu nico ponto de entrada, sair do mdulo de seu nico ponto de sada e retornar sempre ao mdulo que o chamou. Propriedade 3 - a construo do mdulo padronizada de acordo com as regras tradicionais de modularizao, e as estruturas bsicas de controle so limitadas a seqncia, seleo, iterao e desvio. Propriedade 4 - requerida a documentao relativa ao cdigo fonte, para descrever a funo do programa como um todo e descrever, para cada mdulo, sua funo, sua estrutura de dados e sua relao com outros mdulos do programa.
1.4
As trs estruturas bsicas de controle para a construo de programas estruturados : Seqncia - usada para controlar a execuo do programa, os comandos so executados na mesma ordem em que aparecem no cdigo fonte. As estruturas de seleo, iterao e desvio so usadas para alterar o fluxo de execuo do programa de sua ordem seqencial normal. Seleo - usada para testar uma condio e, ento, dependendo de ser o teste verdadeiro ou falso, um dos dois conjuntos alternativos de instrues executado. Iterao - usada para executar um conjunto de instrues em um nmero inteiro de vezes isto , para construir um lao (loop). Deve-se observar que existem duas formas bsicas para a estrutura de iterao: DO UNTIL e WHILE.
1.5
Um programa estruturado um programa modular. Porm, em um programa estruturado o mdulo, alm de seguir as regras bsicas de modularizao, tem sua forma mais limitada. A imposio de regras de formato rigorosas para a construo de um mdulo estruturado um outro meio de simplificar a estrutura do programa. Elas permitem que o programador concentre sua ateno no contedo e no na forma do programa. As regras para a construo de um mdulo estruturado so as seguintes: Um mdulo tem um nico ponto de entrada e um nico ponto de sada. Um mdulo uma estrutura completa - executa uma nica tarefa lgica no programa e limitado pelo seu ponto de entrada e seu ponto de sada. As estruturas bsicas de controle legais restringem-se seqncia, seleo (admitindo-se extenses), iterao e desvio para o ponto de sada do mdulo.
http://www.li.facens.br/eletronica 4
1.7 - Documentao
A documentao uma parte essencial de um programa bem-estruturado. Ela dirigida a trs nveis de compreenso do programa: Global Organizao do programa Instruo do programa Cada nvel sucessivo fornece uma viso mais detalhada do programa e todos os trs nveis so necessrios para a sua compreenso e manuteno.
http://www.li.facens.br/eletronica 5 5
2. Programao Modular
2.1 - Dividir-para-Conquistar
A programao estruturada tem sua origem na programao modular. Grande parte da filosofia estruturada construda sobre a filosofia de modularizao de dividir-para-conquistar. A programao modular utiliza essa filosofia para resolver o problema da complexidade do programa. Quando um programa dividido em partes independentes, fceis de serem entendidas, sua complexidade pode ser grandemente reduzida. A filosofia estruturada utiliza dividir-para-conquistar e amplia a filosofia de modularizao acrescentando os importantes conceitos de organizao hierrquica e nveis de abstrao para controlar as relaes intermodulares. A programao modular pode ser definida como a organizao de um programa em unidades independentes, chamadas mdulos, cujo comportamento controlado por um conjunto de regras. Suas metas so as seguintes: Decompor um programa em partes independentes Dividir um problema complexo em problemas menores e mais simples Verificar a correo de um mdulo de programa, independentemente de sua utilizao como uma unidade em um sistema maior A modularizao pode ser aplicada em diferentes nveis. Pode ser usada para separar um problema em sistemas, um sistema em programas e um programa em mdulos.
http://www.li.facens.br/eletronica 6
2.3.1 Tamanho do Mdulo Para ajudar o projetista de programa na escolha de um bom esquema de modularizao, tm sido desenvolvidas diretrizes relativas ao tamanho do mdulo. A IBM, por exemplo, recomenda que se definam mdulos com, no mximo, 50 linhas de cdigo de programa ou a uma pgina de listagem do programa fonte (uma tela de vdeo), pois permite que o leitor veja, e portanto compreenda, todo o cdigo de uma s vez. Um nmero semelhante surge de Weinberg, cujos trabalhos demonstram que mdulos que possuem mais de 30 instrues de programao so difceis de entender. De uma maneira geral, o tamanho do mdulo deve estar compreendido entre 10 e 100 instrues. Mdulos com mais de 100 instrues so mais dispendiosos em relao a testes e manutenes, enquanto mdulos com menos de 10 instrues podem dividir o programa em muitas partes, afetando desfavoravelmente a eficcia do programa.
http://www.li.facens.br/eletronica 7
3.
3.1 - Definio
a maneira de desenvolver um programa executando uma seqncia de etapas de refinamento. O processo comea com a definio dos dados e tarefas procedurais bsicas, para resolver o problema de programao. Esta definio inicial feita em nvel bem alto e geral. O processo pra quando todas as tarefas do programa so expressas em uma forma que diretamente traduzvel na(s) linguagem(ns) de programao. A cada etapa de refinamento, uma ou vrias tarefas so decompostas em subtarefas mais detalhadas. A definio de uma subtarefa freqentemente acompanhada por um refinamento da definio dos dados necessrios para as tarefas de interface. Por esta razo o refinamento de tarefa e o refinamento de dados so executados em paralelo.
Quo bem as decises do projeto de programa forem tomadas, to bem o programa ser estruturado em mdulos fceis de serem entendidos e de serem modificados.
http://www.li.facens.br/eletronica 8
4. TOP-DOWN e BOTTOM-UP
http://www.li.facens.br/eletronica 9
4.2.1 - Vantagens A abordagem top-down pode evitar muitos destes problemas. Tem a vantagem de iniciar os testes mais cedo, no processo de desenvolvimento. Desta forma os problemas de integrao podem ser descobertos e corrigidos antes e a um custo mais baixo. Uma segunda vantagem que existe um esqueleto do programa desde as primeiras etapas de desenvolvimento, fornecendo ao usurio uma verso parcial do programa bem antes de sua concluso.
4.2.2 - Etapas da Programao Top-Down O desenvolvimento top-down do programa segue a estrutura lgica do programa, iniciando-se com o mdulo de nvel mais alto e continuando, em etapas bem organizadas, at os mdulos de nvel mais baixo. As etapas so as seguintes: Etapa l - comea com uma anlise do problema e, ento, prope um plano de abordagem, definido como a estrutura geral do programa. Representa a soluo como um esboo que identifica o processamento e os componentes de dados gerais do programa. Neste ponto, os contedos dos componentes no so definidos em detalhes. O esboo obtido dividindo-se o problema em partes lgicas que refletem as tarefas funcionais que o programa deve executar para realizar seu objetivo (por exemplo, calcular o pagamento bruto, selecionar o formato da tela). Etapa 2-n - em etapas, expande o esboo do programa chegando ao programa completo. O processo de expanso segue as regras do processo de refinamento. Os componentes do programa so refinados em subcomponentes (stubs tocos), os quais so tambm refinados, e assim por diante. O processo terminar quando o programa puder ser escrito como um conjunto de componentes diretamente representveis na linguagem de programao.
4.2.3 - Princpios Bsicos da Programao Top-Dow As decises de projeto devem ser feitas de tal forma que dividiro o problema em partes cujos componentes estaro relacionados a ele. Os detalhes de implantao no devem ser considerados at o processo de desenvolvimento estar avanado, mas em cada etapa devem ser exploradas alternativas. As etapas de refinamento devem ser simples e explcitas.
sistematizar o processo de programao fornecer uma estrutura para a resoluo do problema produzir um programa modular
Ambas so compatveis com a metodologia de programao estruturada. Contudo, abordam o desenvolvimento de programa de maneiras opostas. Na programao top-down, a tcnica de construo usada no desenvolvimento de programa a decomposio - o sentido do desenvolvimento de uma soluo abstrata e de alto nvel para o ambiente de programao real. Na programao bottom-up, o caminho de desenvolvimento seguido oposto. O programa construdo pela combinao de componentes simples, atmicos, para formar componentes mais abstratos e de nvel mais alto. Esta tcnica de construo a concatenao.
4.4.1 - Etapas da Programao Bottom-Up Etapa 1 - comea com um esboo do programa proposto. Este esboo contm os componentes gerais do programa - componentes funcionais e de dados. Etapa 2-n - em etapas explcitas, desenvolve o programa combinando os componentes de nvel mais baixo para formar componentes de nvel mais alto. Este processo chamado de concatenao. Esse processo terminar quando for construdo a partir de elementos disponveis no ambiente de programao real, um conjunto de funes e estruturas de dados do programa, capazes de resolver o problema de programao. Acionadores de testes so usados para representar os mdulos de nvel mais alto que sero desenvolvidos em etapas posteriores.
4.4.2. - Caractersticas do processo de concatenao O processo prossegue em etapas explcitas. A cada etapa, construda uma mquina. Os componentes desta mquina so formados a partir dos componentes da mquina desenvolvida durante a etapa de concatenao anterior. Cada etapa o resultado de uma deciso de combinar alguns componentes da mquina anterior.
Na prtica, o processo de concatenao, de maneira anloga ao processo de refinamento, no um procedimento de um passo. Erros e omisses podem forar a repetio de parte do processo ou de todo o processo.
http://www.li.facens.br/eletronica 11 11
5. Diagramas Estruturados
5.1 - Introduo
As tcnicas de diagramao estruturada oferecem muitas vantagens. Combinam notaes grficas com narrativas, para aumentar a compreenso. Os grficos so particularmente teis porque tendem a ser menos ambguos do que a descrio narrativa. Alm disso os grficos, porque tendem a ser mais resumidos, podem ser desenhados em um tempo bem menor do que poderia ser gasto para escrever um documento narrativo contendo a mesma quantidade de informao. As tcnicas de diagramao estruturada apoiam uma abordagem de desenvolvimento top-down e estruturado. Podem descrever um sistema ou programa com vrios graus de detalhes, durante cada etapa do processo de decomposio funcional. Tornam claras as etapas e os resultados do processo de decomposio funcional, ao fornecerem um modo padronizado de descrever a lgica dos procedimentos e as estruturas de dados.
Detalhe do programa - a lgica detalhada dentro de um mdulo de programa desenhada. Modelos de dados - um modelo lgico global dos dados desenhado. importante aqui que se faa a distino entre modelos de banco de dados e representao de arquivos. Estruturas de dados - as estruturas dos bancos de dados ou dos arquivos so desenhadas. Estruturas de dilogos - as possveis seqncias das telas e interaes em um dilogo homemcomputador podem ser desenhadas.
X X X X
X X X X X X X X
X X
X X
X X
X X X X X
http://www.li.facens.br/eletronica 13
13
6. Diagramas de NASSI-SHNEIDERMAN
6.1 - Introduo
Os fluxogramas, no so tcnicas adequadas para descrever programas estruturados. Do uma viso no-estruturada do mundo e tendem a gerar programas com GO TOs, em vez de programas hierarquicamente estruturados. I. Nassi e B. Shneiderman resolveram substituir o fluxograma tradicional por um diagrama que apresenta uma viso hierrquica e estruturada da lgica do programa. (N. Chapin usa um tipo de diagrama semelhante, denominado por ele diagrama Chapin.) Os diagramas de Nassi-Shneiderman (N-S) representam estruturas de programas que tm um ponto de entrada e um ponto de sada e so compostos pelas estruturas bsicas de controle (seqncia, seleo e repetio). Enquanto difcil mostrar o embutimento e a recursividade com o fluxograma tradicional, fcil mostr-1os com um diagrama N-S e fcil, tambm, converter um diagrama N-S em cdigo estruturado. Um diagrama N-S consiste em um retngulo que representa a lgica do mdulo do programa. Pretende-se que este retngulo seja desenhado em uma pgina. Portanto ele deve ter, no mximo, cerca de 15 a 20 subdivises. Quando um diagrama N-S torna-se muito grande, as subfunes so separadas e desenhadas em um outro diagrama. Foi projetado para ser usado com mtodos top-down e de refinamento gradual. Para representar a lgica do processo, vrias estruturas so embutidas dentro do retngulo. No permitida uma instruo de desvio.
Por exemplo, a Figura 6.1 descreve a seqncia de quatro processos : CHECAR NOME E ENDEREO, CHECAR CEP NUMRICO, CHECAR TERMOS VLIDOS e CHECAR PAGAMENTO.
http://www.li.facens.br/eletronica 14
14
Seleo - apresenta-se a seleo (IF-THEN-ELSE) dividindo-se o retngulo de processo em 5 partes. A metade superior dividida em trs tringulos. O tringulo superior contm a condio a ser testada. Os tringulos inferiores indicam a parte verdadeira e a parte falsa do IF-THENELSE. A metade inferior dividida em retngulo de processo verdadeiro e retngulo de processo falso, p-1 e p-2, respectivamente. C? V p-1 F p-2
Por exemplo, na Figura 6.1, o ltimo teste de condio no diagrama a checagem do INDICADOR INVLIDO. Se o teste verdadeiro, o processo ESCREVER MENSAGENS ERROS executado. Se o teste falso, nada feito, pois o processo falso nulo. Observe que a estrutura de seleo pode ser embutida. Na Figura 2.1, o teste de condio para ERROS embutido no teste de condio para RENOVAO. A estrutura de condio pode ser ampliada para a estrutura de casos, na qual uma seleo feita entre vrias opes mutuamente exclusivas, como se segue: EXECUTE CASO 1 2 i=2 .... p-2 .... CASO n i=n p-n ou cond.1 cond.2 p-1 p-2 ... cond.n p-n default p-d
1 i=1 p-1
Repetio - indicada por uma estrutura REPETIR ENQUANTO ou uma estrutura REPETIR AT. CONDIO REPETIR ENQUANTO PROCESSO do while PROCESSO CONDIO REPETIR AT do - until
Observe que na estrutura DO WHILE a condio testada em primeiro lugar; ento, se a condio for verdadeira, o processo executado. Na estrutura DO UNTIL, o processo executado em primeiro lugar; depois a condio testada. Na Figura 6.1, a estrutura de repetio usada para indicar que o processo de validao e processamento de uma assinatura executado uma vez para cada assinatura no arquivo de transaes.
http://www.li.facens.br/eletronica 15 15
ERROS?
SIM
RENOVAO?
SIM
CHECAR TERMOS VLIDOS CHECAR PAGAMENTO ERROS? NO SIM POSICIONARPOSICIONAR INDICADOR INDICADOR VALIDO INVLIDO CANCELAMENTO? NO SIM POSICIONAR SINALIZADOR CANCELAMENTO INDICADOR INVLIDO ? NO ESCREVER MENSAGENS ERROS Figura 6.1 Exemplo de um diagrama N-S para validar assinaturas SIM
http://www.li.facens.br/eletronica 16
16
http://www.li.facens.br/eletronica 17
17
http://www.li.facens.br/eletronica 18
18
Nenhuma outra informao sobre o que faz o processo mostrada no DFD. Normalmente, os dados entram e saem de cada processo. Geralmente, existem mltiplos fluxos de dados entrando e saindo de um processo; por exemplo: REGISTRO CLIENTE PEDIDO VALIDAR CLIENTE PRODUTOS PEDIDOS
CLIENTE INVLIDO
Depsito de Dados representa um arquivo lgico. desenhado no DFD como um par de linhas paralelas (s vezes, fechadas em um dos lados). O nome do depsito de dados escrito entre as linhas; por exemplo: ARQUIVO PRODUTOS ou ARQUIVO PRODUTOS
Cada depsito de dados ligado a um "retngulo" de processo por meio de um fluxo de dados. O sentido da seta do fluxo de dados mostra se os dados esto sendo lidos do depsito de dados para o processo ou produzidos pelo processo e ento enviados para o depsito de dados. No exemplo mostrado a seguir, as informaes sobre erros so produzidas pelo PROCEDIMENTO ERROS e gravadas no ARQUIVO ERROS: PROCESSAR ERROS INFORMAES SOBRE ERROS ARQUIVO ERROS
Ponto Terminal - mostra a origem dos dados usados pelo sistema e o ltimo receptor de dados produzidos pelo sistema. A origem dos dados chamada de fonte e o receptor dos dados chamado de destino. Para representar um ponto terminal em um DFD, usado um retngulo (como mostrado) ou um quadrado duplo. Na verdade, os pontos terminais situam-se fora do DFD. DEPTO. VENDAS PEDIDOS
http://www.li.facens.br/eletronica 19
19
http://www.li.facens.br/eletronica 20
20
A Figura acima mostra a viso em alto nvel do processo aceitao de pedido. Ela nos indica que o processo aceitao de pedido um dos quatro processos do sistema de distribuio de vendas. Esta viso, porm, no nos fornece nenhuma informao detalhada sobre o processo e o fluxo de dados necessrios para registrar um pedido. Se necessitarmos de mais detalhes, devemos olhar dentro do retngulo do processo para ver quais subprocessos esto contidos no PROCESSO ACEITAO DE PEDIDO. ARQUIVO CLIENTE ARQUIVO PEDIDO PEDIDO VALIDAR CLIENTE REGISTROS PEDIDO CLIENTE CLIENTE INVALIDO PRODUTO INVLIDO PROCESSAR ERROS INFORMAES SOBRE ERRO ARQUIVO ERROS CATEGORIA PROCESSAR PEDIDOS PENDENTES INFORMAO ENTREGA PRODUTO INFORMAO PEDIDO PEDIDO CONFIRMADO Figura 7.2 DFD do processo ACEITAO DE PEDIDO.
http://www.li.facens.br/eletronica 21 21
CHECAR DISPONIBILIDADE PRODUTO INFORMAO ENTREGA PRODUTO ARQUIVO CATEGORIA PEDIDO INFORMAO
PRODUTO NO DISPONVEL
Podemos continuar a expandir nossa viso do sistema, olhando dentro de cada processo, at onde quisermos. Quo detalhada deve ser nossa viso? Uma regra prtica seria: continuar expandindo os retngulos de processos, para criar DFDs detalhados, at as operaes executadas por cada processo poderem ser descritas em uma especificao de uma pgina. A cada nvel, o DFD deve conter menos que 12 retngulos de processos, preferivelmente, seis ou sete. DFDs maiores so um sinal de tentativa de mostrar muitos detalhes, e so difceis de serem lidos. Este processo de definir um sistema em uma maneira top-down chamado de nivelamento de um DFD.
http://www.li.facens.br/eletronica 22
22
ARQUIVO CLIENTE = [registros de cliente] Os colchetes [ ] indicam que neste exemplo ARQUIVO CLIENTE repeties de registros de cliente. registro-cliente = nome-cliente + endereo-cliente + informaopagamento + pedidos-pendentes + tipo-cli
O sinal + indica que neste exemplo um registro de cliente um item de dado composto formado por uma seqncia dos itens de dados relacionados acima. tipo-cli = empr | indivduo A barra | indica que tipo-cli uma empresa ou um indivduo.
http://www.li.facens.br/eletronica 23
23
Yourdon, De Marco e outros Fluxo de dados Processo que transforma os dados Descrio do processo
Gane e Sarson
Fluxo de materiais Depsito de dados repetidos em um diagrama N linhas para n repeties Origem ou destino de dados externos repetidos em um diagrama N linhas para n repeties
http://www.li.facens.br/eletronica 24
24