• Nenhum resultado encontrado

L ISTA DE A BREVIATURAS E S IGLAS HTML HyperText Markup Language

Capítulo 8 CAPÍTULO 8 C ONCLUSÕES

CAPÍTULO 8 -

CONCLUSÕES

Este trabalho apresentou a ferramenta CRISTA – Code Reading Implemented with

Stepwise Abstraction –, que foi implementada como o objetivo principal de apoiar a atividade

de inspeção de código usando a técnica de leitura Stepwise Abstraction. A ferramenta faz uso de uma metáfora visual por meio da técnica de visualização Treemap para representar a estrutura do código a ser inspecionado. O uso dessa metáfora proporciona uma maneira simples e rápida de entender a hierarquia das instruções presentes no código, além de auxiliar na própria aplicação da técnica de leitura Stepwise Abstraction

A CRISTA possibilita a geração de diferentes relatórios os quais podem ser solicitados para auxiliar a própria atividade de inspeção, facilitando a compreensão do código. Um exemplo é a exportação de um arquivo que contém o código fonte, no qual os trechos abstraídos são substituídos pelas abstrações já inseridas. Esse relatório sintetiza a compreensão feita até o momento e facilita o entendimento do que ainda falta abstrair. Além disso, para dar apoio a todo o processo de inspeção, ela auxilia no registro das discrepâncias encontradas, bem como na junção das listas de discrepâncias elaboradas individualmente pelos inspetores.

A documentação também é um alvo da CRISTA, a qual permite, depois de abstraído todo o código, exportar as abstrações em formato algorítmico, exportar as abstrações para o próprio código, promovendo a documentação interna, e gerar um documento HTML contendo as descrições das estruturas de código escolhidas pelo usuário.

Outro ponto muito importante que a CRISTA apóia é a identificação de trechos de código propensos à manutenção. A CRISTA provê um recurso que marca o tempo desde o momento em que o usuário seleciona um bloco do código até o momento em que ele insere a sua abstração. Com base nessa informação, a ferramenta provê a geração de um relatório que mostra os trechos de código mais demorados para serem abstraídos. Tais trechos

podem ser encarados como os de maior complexidade e/ou menor legibilidade, fornecendo um bom indício de trechos candidatos a sofrer manutenções preventivas.

Essa marcação do tempo para cada estrutura do código também permite identificar o que foi inspecionado, facilitando a tarefa do moderador, no que se refere a avaliar se o inspetor realizou a inspeção de forma bem feita. Isso evita que a efetividade na identificação de defeitos seja baixa devido à falta leitura do código todo.

Outra característica importante da ferramenta CRISTA é que ela é uma ferramenta independente, sem vínculo a nenhuma IDE de desenvolvimento. Com isso, abriu-se mão do uso de algumas funcionalidades já disponibilizadas pela IDE, como por exemplo, a identificação das instruções dos programas por meio do seu parser, tornando a identificação das instruções mais trabalhosa. Por outro lado, devido à arquitetura utilizada, tem-se a vantagem de poder facilmente instanciar a ferramenta CRISTA para outras linguagens, fato que não seria possível se fosse utilizada uma IDE. A versão atual aceita códigos em Java, C, C++ e Cobol85.

Além da apresentação da própria ferramenta, foram também apresentados três estudos experimentais conduzidos para avaliá-la. Os dois primeiros estavam no contexto de inspeção de código e foram realizados com o objetivo principal de avaliar sua viabilidade prática, sua usabilidade e se o seu apoio ao processo de inspeção e à técnica Stepwise

Abstraction eram adequados. No terceiro estudo explorou-se o uso da CRISTA no contexto

de manutenção, e o objetivo foi corrigir um sistema após ele ter sido inspecionado.

Os resultados obtidos nos estudos mostraram que os participantes tiveram facilidade de usar a ferramenta. Para uma maior certeza de que ela era intuitiva, no primeiro estudo não foi dado nenhum treinamento na ferramenta e, conhecendo somente o processo de inspeção e a técnica Stepwise Abstraction, os participantes (alunos de graduação) conseguiram, em pouco tempo, entender o seu funcionamento e realizar a inspeção. Apenas em relação ao apoio dado pela ferramenta durante o próprio processo é que os alunos não tiraram o todo o proveito possível, por não perceberem, em alguns casos, quais relatórios solicitar ao longo da inspeção. Por outro lado, tendo recebido o treinamento, os participantes conseguiram identificar esse apoio fornecido pela CRISTA e, principalmente no estudo que explorou a atividade de manutenção, essa interação foi bastante positiva. A CRISTA contribuiu muito no tempo de localização e correção dos defeitos, bem como no tempo de redocumentação do programa. Como mencionado por alguns autores (DIAS; ANQUETIL; OLIVEIRA, 2003; SOUSA; ANQUETIL; OLIVEIRA, 2004), um dos maiores problemas enfrentados por mantenedores de software, é a perda de conhecimento que ocorre durante as alterações nos sistemas, e isso é facilitado pela opção de redocumentação fornecida pela CRISTA.

Ressalta-se que, provavelmente por oferecer esses recursos e pelo fato do usuário da CRISTA poder interagir com ela justamente para obter outros tipos de informação, é que os tempos de aplicação da inspeção, quer de forma manual ou com a ferramenta tenham sido bastante próximos.

Outra observação importante decorrente do primeiro estudo é que o número de defeitos identificados antes dos participantes receberem a especificação do programa, é significativamente alto e não pode ser desprezado. Essa observação levou a uma modificação na aplicação da técnica Stepwise Abstraction, que determina que a comparação com a especificação original do programa seja feita somente depois que todo o código tenha sido abstraído.

8.1 Contribuições e limitações deste trabalho

As principais contribuições deste trabalho são:

• Criação da ferramenta CRISTA para apoio à atividade de inspeção e outras atividades que requeiram compreensão de código;

• Definição de uma arquitetura que propicia uma fácil instanciação da ferramenta para diferentes linguagens de programação;

• Implementação de reconhecedores para as linguagens Java, C/C++ e Cobol85;

• Modificação do processo de aplicação da técnica Stepwise Abstraction; • Avaliação da ferramenta por meio de estudos experimentais;

• Revisão Sistemática sobre inspeção de software. As principais limitações deste trabalho são:

• Implementação da metáfora visual somente na técnica Treemap;

• Os estudos experimentais foram realizados unicamente em meio acadêmico; • A ferramenta apóia a abstração somente de um arquivo de cada vez e não

8.2 Trabalhos futuros

Dentre as atividades que podem ser realizadas como continuidade deste trabalho citam-se:

• Dar manutenção à ferramenta CRISTA, de forma a evoluí-la, principalmente no que diz respeito às limitações apresentadas acima;

• Reproduzir os estudos experimentais descritos no Capítulo 7 em um contexto real, com códigos maiores em ambientes industriais;

• Adicionar novos módulos para o reconhecimento de novas linguagens;

• Realizar outros estudos experimentais para avaliar melhor a influência da ferramenta no contexto de manutenção, reengenharia e engenharia reversa; • Implementar na ferramenta CRISTA funcionalidades que possibilitem o

trabalho com múltiplos arquivos e trabalhos de colaboração assíncrona, bem como explorar esses contextos em estudos experimentais;

• Associar os tempos gastos nas abstrações com outras medidas de complexidade de código, como por exemplo a complexidade ciclomática, de forma a permitir um firme embasamento para a definição de estratégias de manutenção; e

• Investigação de técnicas de leitura alternativas que possam tornar a atividade de compreensão mais eficiente.

REFERÊNCIAS BIBLIOGRÁFICAS