A CodeForest proposta por Mutti (2014) tem como objetivo auxiliar os desenvolve-dores na atividade de depura¸c˜ao atrav´es de representa¸c˜oes visuais tridimensionais em uma floresta de cactus que demonstra os elementos mais suspeitos de um programa.
A CodeForest recebe listas de classes, m´etodos e blocos suspeitos (conjunto de instru¸c˜oes executadas em sequˆencia) para construir uma floresta de cactus tridimensional representando o programa inspecionado. Na CodeForest, as classes s˜ao representadas como cactus, os m´etodos como galhos e as linhas do programa avaliado s˜ao representadas como espinhos de um galho. Os elementos mais suspeitos da floresta s˜ao pintados de vermelho.
Quanto mais um elemento (classe, m´etodo ou declara¸c˜ao) for executado por um caso de teste que falhou mais suspeito ele ´e.
O posicionamento, a colora¸c˜ao e a espessura de cada cactu da floresta s˜ao determi-nados com base em seu valor de suspei¸c˜ao. Os cactus s˜ao posicionados de maneira ordenada da esquerda para a direita da base onde encontram-se os elementos mais suspeitos do programa.
A Figura 20 ilustra o processo descrito. Primeiramente, o cactu com menor valor pintado de verde est´a posicionado no canto superior esquerdo. Outro com probabilidade m´edia est´a localizado no centro. O cactu com maior probabilidade de apresentar defeitos est´a posicionado no canto inferior `a direita da base.
Figura 20 – Posicionamento dos cactus na CodeForest
Fonte: Mutti (2014)
Os elementos da floresta s˜ao coloridos de acordo com o seu valor de suspei¸c˜ao, considerados no intervalo entre 0 e 1. A cor verde representa a menor probabilidade dele apresentar defeitos. A cor amarela representa um estado intermedi´ario. A cor laranja indica uma alta probabilidade. Por ´ultimo, a cor vermelha representa os elementos com maior valor de suspei¸c˜ao.
A CodeForest funciona de maneira integrada e totalmente desacoplada da Jaguar possibilitando que ela seja apenas respons´avel pela gera¸c˜ao da floresta de cactus com base nas informa¸c˜oes dos testes. Primeiramente, a CodeForest realiza a interpreta¸c˜ao dos arquivos gerados pela Jaguar. Os relat´orios possuem as informa¸c˜oes do valor de suspei¸c˜ao de cada elemento do programa avaliado, que representa a sua probabilidade de apresentar defeitos.
As informa¸c˜oes do arquivo s˜ao armazenadas e recuperadas no momento em que for solicitada a visualiza¸c˜ao com a ferramenta. Quando ela for requisitada o arquivo ´e interpretado e suas informa¸c˜oes s˜ao apresentadas atrav´es da met´afora visual. A seguir, s˜ao detalhados todos os passos necess´arios para a utiliza¸c˜ao da CodeForest, detalhados no Apˆendice C.
• O desenvolvedor cria casos de testes da aplica¸c˜ao.
• Os testes s˜ao automatizados comframework JUnit.
• A Jaguar ´e invocada para gerar as informa¸c˜oes de suspei¸c˜ao das classes, m´etodos e linhas com o uso de t´ecnicas SFL.
• A CodeForest ´e invocada.
• O desenvolvedor seleciona o relat´orio da heur´ıstica desejada e solicita a gera¸c˜ao da floresta de cactus.
• Por ´ultimo, a floresta ´e apresentada de acordo com o arquivo selecionado.
A CodeForest permite que o desenvolvedor aumente ou diminua o valor de suspei¸c˜ao que ele deseja avaliar. O filtro pode ser feito somente por m´etodos que possuam um valor de suspei¸c˜ao alto com grande probabilidade de conterem defeitos. A Figura 21 demonstra a visualiza¸c˜ao da met´afora criada pela ferramenta.
Figura 21 – Representa¸c˜ao visual da CodeForest
Fonte: F´abio Pereira da Silva, 2017
O desenvolvedor tem a op¸c˜ao de interagir clicando no galho da met´afora. Ao clicar a janela, ser´a exibida, como na Figura 22, o c´odigo fonte, com todas as suas linhas coloridas de acordo com o valor de suspei¸c˜ao calculado para cada uma delas com a floresta de cactus minimizada.
Figura 22 – Intera¸c˜ao com o c´odigo do programa
Fonte: F´abio Pereira da Silva, 2017
Este projeto de pesquisa incluiu a implementa¸c˜ao de in´umeras melhorias na met´afora da ferramenta CodeForest com o objetivo de facilitar a sua usabilidade para a condu¸c˜ao dos experimentos. Dentre as melhorias implementadas est˜ao a integra¸c˜ao com a ferramenta Jaguar e melhorias na representa¸c˜ao da floresta.
Na integra¸c˜ao com a Jaguar, a CodeForest se tornou capaz de interpretar todos os arquivos XMLs com as informa¸c˜oes de suspei¸c˜ao dos elementos do programa para cada heur´ıstica gerados pela Jaguar sem a necessidade de qualquer configura¸c˜ao manual. Foi melhorado o posicionamento dos elementos na floresta de cactus. Est˜ao dispon´ıveis op¸c˜oes em que o desenvolvedor pode aumentar ou diminuir o n´umero de cactus (classes) que ele deseja que seja apresentado na floresta de acordo com a sua necessidade e tamb´em aumentar ou diminuir o valor de suspei¸c˜ao para a apresenta¸c˜ao dos elementos na floresta de cactus, facilitando o entendimento das funcionalidades da ferramenta.
4.3 Considera¸c˜oes finais
Neste cap´ıtulo, foram apresentadas as principais caracter´ısticas das ferramentas Jaguar e CodeForest. Foram detalhados os aspectos fundamentais adotados em seu funcio-namento e como os resultados dos testes s˜ao utilizados para a exibi¸c˜ao de informa¸c˜oes de depura¸c˜ao. No pr´oximo cap´ıtulo, ser˜ao apresentados os detalhes da avalia¸c˜ao experimental conduzida com as ferramentas.
5 Planejamento do Experimento
Para atingir os objetivos deste trabalho definidos na Se¸c˜ao 1.4 foram realizados experimentos com as ferramentas CodeForest e Jaguar visando avaliar a efic´acia, a eficiˆencia e a usabilidade de cada ferramenta para a localiza¸c˜ao de defeitos. Tamb´em foi avaliado o potencial de uso destas ferramentas com o Technology Acceptance Model (TAM). O desenho experimental aplicado ao trabalho e aprovado no Comitˆe de ´Etica da Universidade de S˜ao Paulo ´e descrito neste cap´ıtulo.