|
Acadêmico(a): Oliver Mário da Silva |
Título: Ambiente para Auxiliar o Desenvolvimento de Programas Monolíticos |
|
Introdução: |
Desenvolver programas de computadores livres de erros é algo que envolve alguns fatores. Seguir algum modelo de requisitos e projeto de software com certeza é um fator fortíssimo para se obter um bom resultado. A etapa de implementação de um programa consiste basicamente na construção do código fonte, sua compilação e execução. Durante a implementação, demanda-se um esforço para que se escreva um código sem erros. Mesmo que se esteja utilizando um ambiente de programação avançado, exige-se muito da experiência e conhecimento dos desenvolvedores. Ainda assim os erros são praticamente inevitáveis.
Quando o código fonte de um programa passa pelo compilador, são revelados os erros de sintaxe e alguns de semântica. Se o programa não apresentar nenhum erro detectável, o mesmo é compilado com sucesso e pode ser executado. Os chamados “erros de lógica” (ou semânticos) ainda não foram totalmente solucionados pelos compiladores atuais. Alguns compiladores já conseguem identificar alguns erros simples de lógica como: variáveis não inicializadas, estruturas de repetição mal definidas (somente algumas), entre outros.
Visto o problema descrito, desenvolveu-se um ambiente, que além de detectar os erros mais comuns (léxicos e sintáticos) em programas monolíticos (programas baseados em desvios condicionais e incondicionais), também detecta “erros de lógica” encontrados em programas. Estes erros podem ocorrer na estrutura estática ou dinâmica de um programa. Aqui desenvolveu-se apenas a detecção de alguns “erros de lógica” na estrutura estática, tais como: detecção de ciclos infinitos e instruções mortas (inatingíveis).
O erro conhecido como ciclo infinito acontece em uma estrutura de repetição cuja condição foi mal definida. Esta falha irá fazer com que as instruções da estrutura de repetição sejam executadas infinitamente. Já as instruções mortas são conjuntos de instruções que jamais serão executadas.
Estes dois erros ou propriedades como serão chamados, serão verificados em cima de programas monolíticos, que primeiramente serão transformados em instruções rotuladas compostas, utilizando um algoritmo proposto em Silva (2004).
Ainda, o processo de detecção para os erros mencionados prepara os programas para verificar a sua equivalência com outros. Visto isto, o ambiente também possibilita a realização da verificação da equivalência entre dois programas monolíticos.
|
|
|