Escolar Documentos
Profissional Documentos
Cultura Documentos
Metodologiasprograma
Metodologiasprograma
. e ie x
1. GENERALIDADES Todo programa a ser elaborado deve ser considerado como um produto a ser desenvolvido. Para tal, uma srie de etapas devem ser cumpridas at a obteno do programa final, testado e aprovado. Muitos programadores inexperientes gastam a maior parte do tempo na codificao do programa, e o restante, na depurao e testes. Na verdade, a codificao apenas uma das etapas, ocupando em torno de 20% do tempo total consumido. O intuito deste captulo apresentar um resumo das principais metodologias de programao, fornecendo uma orientao bsica no sentido de disciplinar o desenvolvimento de programas. 2. ETAPAS DE DESENVOLVIMENTO DE SOFTWARE As etapas do desenvolvimento de software so: 1 etapa: Definio do problema 2 etapa: Projeto do programa 3 etapa: Codificao 4 etapa: Depurao 5 etapa: Testes 6 etapa: Documentao 7 etapa: Manuteno e reprojeto apresenta um fluxograma das etapas do desenvolvimento de
- 1
CODIFICAO
DEPURAO
ERROS ?
TESTES
ERROS ?
DOCUMENTAO
GRANDES ALTERAES ?
MANUTENO E REPROJETO
- 2
A primeira etapa a DEFINIO DO PROBLEMA. Todas as tarefas desejadas devero ser especificadas, tais como: - definio das entradas: tipos, formas e taxas de aquisio, inter-relaes com as sadas, escalas, etc. - definio das sadas: entradas, escalas, etc. tipos, taxas de atualizao, inter-relaes com as de velocidade e memria,
- tratamento de erros: tipos que podem ocorrer, tratamento previsto, influncia no comportamento do sistema, diagnstico, reconfiguraes, etc. - interface homem-mquina: formas de comunicao com o operador, procedimentos automticos, manuais e interativos, facilidades de operao, etc. A segunda etapa o PROJETO DO PROGRAMA. Muitas tcnicas disponveis podem ser utilizadas para sistematizar a especificao do programa. conveniente a descrio das tarefas a serem desempenhadas de maneira a facilitar suas transcries para programas. Algumas tcnicas teis normalmente usados so: - fluxogramas - programao estruturada - programao modular - projeto "top-down". A terceira etapa CODIFICAO. Esta torna-se uma tarefa difcil e demorada se as duas etapas anteriores no forem adequadamente cumpridas. Trata-se da escrita de um programa em uma forma que possa ser entendida pelo microprocessador, ou que possa ser traduzido para essa forma, atravs de montadores ou compiladores. A quarta etapa a DEPURAO. A quinta etapa so os TESTES. Em linhas gerais, tem-se que a DEPURAO procura suprimir todos os erros de programa, enquanto que os TESTES, procuram validar o programa, verificando se as tarefas previstas esto sendo desempenhadas a bom termo. A sexta etapa a DOCUMENTAO, nem sempre tratada com a real importncia que deveria ser. Muitos programadores procuram erroneamente deix-la como ltima etapa, acarretando problemas, como por exemplo, esquecimentos de detalhes, comentrios errados e explicaes superficiais. Na verdade, a DOCUMENTAO deve comear a ser gerada desde a primeira etapa, descrevendo todos os passos percorridos at a obteno de um programa testado e aceito.
- 3
Nesta etapa, todos os documentos gerados devem ser conferidos e combinados de forma coesa, devendo ser dirigido aqueles que no participaram dos trabalhos, e que com a leitura deste, poderiam compreender o que foi desenvolvido. A stima etapa a de MANUTENO e REPROJETO do que foi desenvolvido. Correes de pequenos erros, aprimoramentos e ampliao de programas so fatos comuns que deve ser cuidadosamente estudados. Cada alterao em um programa deve ser considerada como um novo programa, sendo submetida a todos os estgios anteriores. Desta forma, evita-se remendos, efeitos colaterais e dificuldades maiores nas alteraes. Uma boa documentao ser de real utilidade adequadamente atualizada. 3. PROJETO DO PROGRAMA O PROJETO DO PROGRAMA deve ser elaborado inspirado em alguma metodologia adequadamente escolhida, evitando-se um gasto maior de tempo, dificuldades excessivas em programas de maior porte e construes de estruturas confusas e inflexveis. Alguns princpios bsicos devem ser observados em cada projeto, tais como: - diviso do problema em mdulos curtos, logicamente divididos, e de mais simples resoluo - elaborao de estruturas de programas simples e de fcil controle - medida do possvel, utilizar representaes grficas da lgica do programa - no elaborao de programas difceis de serem depurados e alterados - iniciar a codificao apenas aps todo o programa ter sido projetado. Sero apresentadas a seguir 4 tcnicas de PROJETO DE PROGRAMAS comumente utilizadas: - fluxograma - programao modular - programao estruturada - projeto Top-Down nesta etapa, e deve ser
- 4
3.1 Fluxogramas Trata-se de um dos mais conhecidos e utilizados mtodos. Utiliza-se de alguns smbolos que permitem uma representao grfica da estrutura do programa. Os smbolos utilizados so:
ENTRADA/SADA
OPERAES DE PROCESSAMENTO
DECISES LGICAS
SUBROTINAS
PONTO DE CONEXO
INTERLIGAO
INCIO ou FIM
As principais vantagens dos Fluxogramas so: - uso de smbolos padronizados e bem conhecidos - de fcil entendimento por no especialistas - facilidade de diviso das tarefas em subtarefas - facilitam a localizao de erros por apresentarem a seqncia das operaes - muito conhecidos em diversas reas de atividades.
- 5
As principais desvantagens dos Fluxogramas so: - apresentam dificuldades no desenho e alteraes - depurao e testes no so fceis, em geral - dificuldade na fluxogramas deciso do nvel de detalhes a serem colocados nos
- no apresentam a organizao de dados e estruturas de entrada e sada - no facilitam em casos particulares de hardware ou "timing". Verificar nas figuras 3.1, 3.2 e 3.3, alguns exemplos de utilizao de fluxogramas
INCIO
SIM
NO
Caminhe at o barbeiro
NO FIM
NO
SIM Corte o cabelo Pague o barbeiro Veio de carro? SIM Dirija e volte para casa Volte para casa caminhando NO
FIM
Figura 3.1: Exemplo de Fluxograma para uma pessoa que precisa cortar o cabelo
- 6
INCIO
DESPESA INCORRIDA
RELATRIO EXAMINADO
REVISO DA CONTABILIDADE
REVISO DO GERENTE
DESPESA ADMISSVEL?
NO
REVISO DA CONTABILIDADE
SIM
DESPESA ADMISSVEL?
NO
NO ENVIAR POR CHEQUE MEIOS FIM RECEBIDO ELETRNICOS Exemplo de Fluxograma para o Processo de Reembolso de Despesa
Figura 3.2: Exemplo: Apresentar um Fluxograma para quando uma chave for ligada, uma lmpada dever permanecer acesa por um segundo.
- 7
Uma dificuldade que costuma aparecer o nvel de detalhamento necessrio. Na figura 3.3 apresentada uma verso simples, especificando apenas os aspectos fundamentais do programa. Uma verso mais detalhada poderia ser elaborada, utilizando variveis e com maiores informaes nos blocos.
INCIO
CHAVE LIGADA?
LIGAR A LMPADA
PASSOU 1 SEG?
APAGAR A LMPADA
FIM Figura 3.3: Exemplo de Fluxograma para quando uma chave for ligada, uma lmpada dever permanecer acesa por um segundo
- 8
3.2 Programao Modular Consiste na diviso de programas em subtarefas de menor complexibilidade, eliminando o inconveniente dos fluxogramas de se tornarem extremamente grandes e complexos, em aplicaes de maior porte. As principais vantagens da Programao Modular so: - maior facilidade na escrita e depurao dos mdulos, por serem menores e mais simples - os mdulos podem ser utilizados diversas vezes em programas e tambm arquivados em bibliotecas, para uso futuro - restringe as alteraes aos mdulos ao invs de todo o programa - maior facilidade de isolao dos erros - maior facilidade na quantificao do trabalho a ser/que foi desenvolvido. As principais desvantagens da Programao Modular so: - dificuldades na elaborao de critrios objetivos de diviso de mdulos - necessidade de padronizao da documentao de mdulos, uma vez que eles podem ser elaborados por diferentes programadores - dificuldade, em alguns casos, em se depurar e testar mdulos isoladamente, por necessitarem de outros dados de outros mdulos (necessidade de elaborao de programas de testes) - programas inadequadamente modularizados podem se tornar de difcil manuseio - eventual necessidade de maior quantidade de memria e tempo de processamento, em funo de repeties de partes de mdulos separados. Algumas sugestes bsicas podem auxiliar o programador, tais como: - usar mdulos de 20 a 50 linhas (geralmente mdulos menores podem no apresentar vantagens, enquanto que mdulos maiores, tornam-se de difcil integrao) - criar mdulos flexveis, adaptveis s mudanas de opes de uma mesma funo - funes bsicas tais como atrasos, rotinas aritmticas, etc., elaboradas com maior cuidado para futuro aproveitamento - evitar a mistura de funes distintas em um mesmo mdulo. devem ser
- 9
Exemplo:
Em relao ao exemplo da Figura 3.3, tem-se a possibilidade de diviso do programa em dois mdulos:
- mdulo 1: espera uma chave ser ligada e acende uma lmpada - mdulo 2: espera um segundo. Enquanto o mdulo 1 especfico, o mdulo 2 pode ser de uso geral, podendo ser construdo de uma maneira mais genrica. 3.3 Programao Estruturada A Programao Estruturada baseia-se em 4 diretrizes: - o programa desenvolvido de cima para baixo - qualquer programa pode ser escrito utilizando apenas 3 estruturas bsicas de controle - cada estrutura bsica de controle tem apenas uma entrada e uma sada - minimizao do uso de desvios incondicionais As 3 estruturas bsicas de controle, conforme mostra a figura 3.4, e com as quais pode-se construir qualquer programa so: - estrutura seqencial - estrutura de controle condicional - estrutura de malha ("loop").
ESTRUTURA SEQUENCIAL
P1
P1
P1
P2 P2 P2 COND. (a) Chapin GEEK BRASIL http://www.geekbrasil.com.br - 10 DO WHILE COND = VERD. 10 VERD.? (b)P3 Tradicional (Fluxograma) P P3 P3 (c) Forma de escrita da Programao Estruturada (a) (b) (c) (a) ESTRUTURA (b) MALHAN Figura 3.4: Estruturas Bsicas DE Programao Estruturada END; (c) da S P
S COND. P1
COND. VERD.?
S P1
N P2
P2
COND. P
- 11
11
As principais vantagens da Programao Estruturada so: os programas normalmente so claros e bem organizados, facilitando o entendimento a
- uso de poucas estruturas padronizadas, facilitando a modularizao, documentao e a descrio com Fluxogramas ou outros mtodos - permite reduo no tempo de elaborao de programas. As principais desvantagens da Programao Estruturada so: - no caso de linguagem Assembly deve-se fazer converses das para as instrues do microprocessador
estruturas
- elaborao de programas maiores (consome mais memria) e mais lentos - excessivos encadeamentos de estruturas geram confuso Sugere-se a utilizao de programao estruturada nos seguintes casos: grandes programas (mais que 1000 instrues) aplicaes onde a quantidade de memria utilizada no crtica, e o custo de programao importante (pouca demanda de produto) aplicaes sem estruturas de dados complexas, controle de processos, uso de algoritmos, etc. disponibilidade de linguagem de alto nvel. exemplo da Figura 3.3 , tem-se a seguinte verso
CHAVE = DESLIGADA do While CHAVE = DESLIGADA LEIA ESTADO DA CHAVE end LMPADA = LIGADA ESPERA 1 LMPADA = DESLIGADA End
- 12
12
3.4 Projeto "Top-Down" Esta tcnica sugere que o PROJETO DO PROGRAMA se inicie pela definio da estrutura principal do mesmo, deixando os sub-programas indefinidos temporariamente. Desta forma, pode-se mais facilmente avaliar e testar a estrutura principal de um programa. Posteriormente, tal procedimento deve ser repetido para os subprogramas, sucessivamente, at o trmino da elaborao e testes do programa. As principais vantagens do Projeto Top-Down so: - elaborao e testes a cada nvel, sem a necessidade programas auxiliares de teste da construo de
- pressupe o uso de Programao Modular, e compatvel com Programao Estruturada - fornece uma idia clara do que falta ser desenvolvido. As principais desvantagens do Projeto Top-Down so: - poucas vantagens apresenta em caso da existncia de partes de programas prontos - dificulta a elaborao de mdulos mais genricos - erros no nvel superior costumam apresentar efeitos muito abrangentes. Exemplo: Em relao ao exemplo da Figura 3.3, tem-se que a estrutura apresentada corresponde primeira etapa do projeto "top-down". Algumas das declaraes devem ser detalhadas: - LEIA ESTADO DA CHAVE: CHAVE = DADO (PORTA 1) and mscara leitura de um bit especfico de uma porta. end - ESPERA 1: CONTADOR = VALOR INICIAL do while CONTADOR # 0 CONTADOR = CONTADOR - 1 end
- 13
13
O programa expandido : CHAVE = 0 do while CHAVE = 0 CHAVE = DADO (PORTA 1) and mscara end LMPADA = LIGADA CONTADOR = VALOR INICIAL do while CONTADOR # 0 CONTADOR = CONTADOR - 1 end LMPADA = NOT (LMPADA) Nesta forma, o programa j pode ser mais facilmente traduzido em termos de instrues da linguagem utilizada. 4. DEPURAO O tempo nesta fase do desenvolvimento de um programa costuma ser considervel. A escolha de um mtodo adequado de programao, por si s j simplifica a depurao e os testes. Entretanto, necessrio que o programador conte com ferramentas adequadas, e com um roteiro de procura de erros, no sentido de no tornar tal tarefa aleatria. Sero apresentadas, de forma resumida, as principais ferramentas e metodologias de depurao. 4.1 Execuo Passo-a-Passo (Single-Step) Permite a execuo de instruo por instruo de um programa, sob controle do operador. Aps uma instruo ter sido executada, os registradores, posies de memria, linhas de sada e sinais de controle podem ser examinados. Apresenta limitaes em casos de interrupes, DMA (acesso direto memria) e tempo de execuo de programas. 4.2 Ponto de Parada (Breakpoint) um endereo de memria que, quando atingido, provoca a parada do programa, permitindo o mesmo tipo de monitorao conseguida na execuo passo-a-passo. Costuma ser implementada com a instruo RST 1 (8080, 8085 e Z-80), a qual colocada no endereo de parada desejado, e chama uma subrotina que faz a parada do programa. Amplia as possibilidades da execuo passo-a-passo, permitindo interrupes, DMA e no afeta o tempo de execuo de trechos de programas.
- 14
14
Apresenta o contedo de todos os registradores do microprocessador ao programador, ou de algum selecionado. Utilizado em conjunto com os recursos de execuo passo-a-passo e ponto de parada. 4.4 Visualizao de Memria (Memory Dump) Apresenta o contedo de uma regio de memria especificada. Algumas variaes deste recurso podem ser encontradas, tais como a visualizao da rea de cdigo de um programa, onde mostrada uma instruo por linha, em hexadecimal ou at mesmo em mnemnicos. Tambm utilizada em conjunto com os recursos de execuo passo-a-passo e ponto de parada. 4.5 Simuladores Programas elaborados para simular o processo. 4.6 Analisador Lgico Basicamente uma verso digital paralela de um osciloscpio. Mostra informaes em binrio ou hexadecimal na tela, comandado por diversas formas de disparo. Costumam apresentar memria, registrando fatos passados. Utilizado basicamente no registro de informaes at/aps um certo evento particular, na via de dados ou endereos, ou execuo de uma instruo de entrada/sada particular. So efetivamente necessrios em sistemas com "timing" complexo. 4.7 Listas de Verificao Muitos dos erros comumente encontrados pelos programadores poderiam ser eliminados com facilidade, a partir de uma Lista de Verificao. Esta apresenta alguns itens bsicos que devem ser conferidos antes do uso de qualquer outra ferramenta. Alguns dos itens que podem ser includos na lista so: - verificar se cada elemento do projeto do programa se encontra no programa, e vice-versa - verificar se todos os registradores e posies de memria utilizados em malhas ("loops") so previamente inicializados - conferir todos os desvios condicionais - verificar se todas as malhas se iniciam e terminam corretamente - verificar se todas as condies so tratadas - verificar se as regras da linguagem no esto sendo desobedecidas, e se as instrues no esto sendo utilizadas erradamente. Para este ltimo item, uma nova Lista de Verificao pode ser particular a cada linguagem de microprocessador.
GEEK BRASIL http://www.geekbrasil.com.br - 15
elaborada,
15
4.8 Simuladores de Entrada/Sada 4.9 Emuladores So acoplados a Sistemas de Desenvolvimento permitindo a execuo em tempo real, e entradas/sadas programveis 4.10 Programas de Testes Diversos. 5. TESTES Procura-se efetuar a validao (verificao que realmente os programas esto depurados) dos programas elaborados, verificando se os mesmos atendem s especificaes estabelecidas. Esta etapa est intimamente ligada etapa de Depurao. As ferramentas usadas na etapa anterior tambm podero ser utilizadas nesta etapa. 6. LISTA DE EXERCCIOS DE FLUXOGRAMA 1) Fazer um Fluxograma para ler posies de memria at encontrar um contedo igual a 20H. Guardar a posio de memria em RESULT quando encontrar o contedo. Colocar 0000H em RESULT caso no seja encontrado um contedo igual a 20H. Ler no mximo o contedo de 100H posies de memria. 2) Ler o contedo de 1000 posies de memria. Guardar em RESULT o valor do maior contedo. 3) Fazer o Fluxograma para calcular o fatorial do nmero N, cujo valor lido do teclado. 4) Fazer o Fluxograma para ler 50 arquivos contendo, cada um, a altura e o cdigo do sexo de uma pessoa (cdigo = H para homem e M para mulher), calcular: a mdia de altura dos homens.
5) Fazer o Fluxograma de um algoritmo para fazer a soma de 2 setores de mesmo nmero de elementos. 6) Fazer o Fluxograma de um algoritmo para calcular o nmero de alunos que tiraram nota acima da nota mdia da turma. A turma tem 40 alunos. 7) Dado um arquivo com uma frase de 80 letras (incluindo brancos). Escrever o Fluxograma de um algoritmo para: a) contar quantos brancos existem na frase b) contar quantas vezes aparece a letra A
- 16
16
- 17
17