Informações Principais
     Resumo
     Abstract
     Introdução
     Conclusão
     Download
  
  
  
 
Introdução
 
 
Acadêmico(a): Lúcio Antonio Raupp Ferreira
Título: Ferramenta para extração e Documentação de Rotinas de Projetos de Sistemas de Informação
 
Introdução:
A preocupação com a qualidade de produtos de software está cada vez mais presente nos dias de hoje. Um dos motivos é a grande quantidade de pessoas dependentes de aplicações de software para realizar vários tipos de atividade. Segundo Reed (2000 apud ROCHA, 2001), se alguns sistemas de uso global deixarem de funcionar, aproximadamente 40% da população mundial sofrerá as conseqüências do problema.
Portanto, para ter sistemas seguros e de boa qualidade, é necessário ter um melhoramento na fase de produção do software. Para Fuggetta (2000 apud ROCHA, 2001), a qualidade de produtos de software está fortemente relacionada à qualidade do processo de software.
Para um software chegar a ser um produto final, ele passa por várias fases de desenvolvimento, chamado de ciclo de vida do software. O mais usado pela Engenharia de Software é o ciclo de vida clássico, que possui, segundo Pressman (1995), seis fases fundamentais. Essas fases são seguidas uma após a outra, até chegar ao produto final de software.
O ciclo se inicia com a análise e engenharia de sistemas. Nesta fase é feita uma análise de alto nível do problema a ser implementado, coletando todas as informações necessárias para o desenvolvimento do sistema.
Em seguida, vem a fase de análise de requisitos de software. Basicamente é a fase do ciclo de vida que liga a análise do sistema com o projeto de software, onde o engenheiro precisa ter um domínio total das informações coletadas, para, a partir daí, começar a definir e organizar as funções do sistema. Será possível analisar a qualidade através da análise de requisitos, quando o sistema for concluído.
Na fase de projeto, o engenheiro irá definir quatro atributos básicos do sistema: a estrutura de dados, a arquitetura de software, os detalhes procedimentais e a caracterização de interface. Essa fase irá definir a qualidade do software, a facilidade com que o software será mantido e servirá como base para todas as fases seguintes.
Passada a fase de projeto de software, vem a fase de codificação. Nessa fase as representações do projeto são convertidas em linguagem de programação. Se o projeto for construído de forma detalhada, essa fase pode ser feita de forma mecânica.
Segundo Howden (1987 apud ROCHA, 2001), quando a codificação é encerrada e o código fonte é gerado, o software será submetido a uma série de testes, para verificar se o produto está totalmente correto. Porém, apesar do uso dos melhores métodos de desenvolvimento, das melhores ferramentas de suporte e de pessoal treinado, os erros permanecem nos diversos produtos de softwares produzidos e lançados no mercado.
Após ser testado e aprovado na fase anterior, o software está liberado para uso. Isso não quer dizer que o software não sofrerá alterações. Inevitavelmente surgirão várias ao longo do tempo. Essa é a última fase do ciclo de vida de software, a manutenção.
A manutenção do software existente pode ser responsável por mais de 70% de todo o esforço despendido por uma organização de software. A porcentagem continua a se elevar à medida que mais software é produzido. No horizonte, pode-se prever uma organização de software baseada na manutenção que não mais pode produzir novo software, porque está gastando todos os seus recursos disponíveis mantendo um software antigo. (PRESSMAN, 1995).
Segundo Swanson (1996 apud ROCHA, 2001), existem alguns motivos que podem fazer com que o software seja alterado, tais como:
a) manutenção corretiva: isso acontece porque dificilmente a fase de testes conseguirá descobrir todos os erros existentes no sistema. Mesmo assim, a fase de testes continua tendo um papel fundamental no ciclo de vida de software, pois se poucos testes forem feitos, a probabilidade da ocorrência de erros será muito grande;
b) manutenção adaptativa: com o passar dos anos, a informática evolui muito. Com isso, o ambiente original para o qual o software foi desenvolvido certamente sofrerá mudanças, tais como a CPU, os periféricos e o sistema operacional. Esse tipo de manutenção adapta o software a esse novo ambiente;
c) manutenção perfectiva: mesmo quando o software está funcionando corretamente, novas alterações poderão surgir. O software poderá ganhar funções, que originalmente não existem. Outra mudança seria a atualização do software em relação ao ambiente externo. Segundo Pressman (1995), esse tipo de manutenção é responsável pela maior parte de todo esforço despendido em manutenção de software;
d) manutenção preventiva: nesse tipo de manutenção, o software é alterado com o propósito de melhorar sua confiabilidade e manutenibilidade. Outro motivo seria deixar o software pronto para futuras ampliações.
A fase de manutenção pode ser muito trabalhosa. Um fator que pode auxiliar o desenvolvedor é uma boa documentação de todo o sistema. Isso facilitará a localização das informações e deixará bem clara a estrutura do sistema para uma fácil compreensão.
Um software pode ser documentado de várias formas. Uma delas, é documentar junto ao código fonte, explicando de forma clara o código gerado. Outra forma é documentar externamente, guardando toda a estrutura do sistema. Mas, para documentar externamente todo o sistema, o desenvolvedor irá gastar um tempo muito grande. O ideal seria mecanizar esse processo.
Neste contexto, apresentam-se as técnicas voltadas à construção de compiladores. As análises léxica e sintática podem contribuir para a coleta e análise das instruções contidas nos sistemas desenvolvidos. Na análise léxica são identificados os tokens. Tokens são seqüências de caracteres que formam palavras, podendo ser uma palavra reservada, um identificador, um delimitador etc. A análise sintática tem como objetivo verificar se a estrutura do conjunto de tokens que constituem o código fonte está correta. Mesmo se o código estiver sintaticamente correto, ele poderá conter expressões que não fazem sentido. Quem faz essa verificação é o analisador semântico.
Este trabalho apresenta o desenvolvimento de uma ferramenta de extração de instruções em nível de programação para documentação e inventário, para que se tenha um bom entendimento durante a última fase da engenharia de software, a manutenção. Para a extração das instruções, são usadas técnicas para construção de compiladores, as quais são implementadas em ambiente Delphi. O banco de dados Interbase é utilizado para armazenar as informações coletadas e analisadas.