• Nenhum resultado encontrado

Nesta seção, são apresentados exemplos de informações que podem ser obtidas a partir das visualizações quantitativa e qualitativa da abordagem DCEVizz, além da utilidade dessas informações aos engenheiros de software. Na Figura 6.19, são apresentadas algumas visualizações quantitativas da abordagem DCEVizz para dez versões de um sistema de software. Como pode ser observado, cada figura representa uma tendência de evolução diferente em relação a quantidade de código morto:

a) Figura 6.19A. Existe tendência de aumento contínuo da quantidade de código morto ao longo das versões dos sistemas de software. Essa informação pode alertar os engenheiros de software sobre a necessidade de execução de medidas preventivas para eliminar esse código morto. A eliminação do código morto ao longo das versões diminui a poluição do código, aumenta a legibilidade e facilita a compreensão. Além disso, essa eliminação evita que o código morto seja propagado para as próximas versões, melhorando a qualidade interna e facilitando a manutenção;

Figura 6.19 - Protótipos de Visualização Quantitativas

(A) (B) (C)

Fonte: Do autor (2017)

b) Figura 6.19B. Existe oscilação da quantidade de código morto ao longo da evolução. Nesse caso, não é possível identificar algum padrão de evolução que possibilite a previsão do comportamento futuro desse código. Porém, a análise dessa oscilação pode ser útil para compreender outros fatores, por exemplo, quando alguma manutenção significativa foi feita no sistema. Como pode ser observado, houve queda expressiva da quantidade de código morto entre as versões V1 e V2. Exemplos de fatores que podem ocasionar essa queda são a eliminação de código morto ou a finalização de módulos que estavam em desenvolvimento em V1, desencadeando

chamadas para outros métodos e reduzindo a quantidade de métodos inacessíveis. Em contrapartida, o aumento súbito do código morto entre as versões V2 e V3 pode ocorrer por causa da troca de tecnologias ou da substituição de módulos obsoletos, fazendo com que os trechos de código substituídos se tornem mortos;

c) Figura 6.19C. Existe tendência de redução contínua da quantidade de código morto ao longo das versões. Essa informação pode indicar que atividades de manutenção estão sendo executadas para eliminar código morto, melhorando cada vez mais a legibilidade das versões. Também, pode indicar que a propagação de código morto entre as versões está sendo evitada pelos desenvolvedores. Com base nessas informações, os engenheiros de software podem verificar se possíveis medidas preventivas adotadas na empresa estão evitando aumento contínuo da quantidade desse código.

Apesar de mostrar o aumento, a redução ou a variação da quantidade de código morto ao longo da evolução, a visualização quantitativa não apresenta especificamente quais pacotes ou classes do sistema de software em que ocorreram essas mudanças. A visualização qualitativa complementa essa visualização oferecendo detalhes do código morto, como a classe e o pacote a que pertence e suas características evolutivas. Na Figura 6.20, é apresentado um exemplo de visualização qualitativa, gerada a partir da análise de três versões do sistema de software. A análise da visualização qualitativa pode ser útil para:

a) Aumentar a segurança na eliminação de código morto. Se determinado método é morto em várias versões analisadas, por exemplo, o método A2(), então reforça o indicativo de sua inutilidade e de que sua eliminação não fará falta ao sistema de software. Por outro lado, se o uso do método oscila ao longo da evolução, por exemplo, método A3(), deve-se ter cautela na sua eliminação, visto que poderá fazer falta nas futuras versões;

b) Identificar pacotes e classes com tendência de se tornarem em desuso nas versões futuras. Se a quantidade de métodos mortos aumenta gradativamente em um pacote, pode indicar que algumas de suas funções estão deixando de ser utilizadas ao longo das versões, por exemplo, o pacote Pacote C. Essa informação pode ser útil no momento da seleção de módulos do sistema de software para eliminar código morto, dando prioridade para aqueles com maior quantidade e com tendência de se tornarem obsoletos;

c) Identificar pacotes e classes que tiveram eliminação constante de código morto ao longo da evolução. Essa situação é ilustrada no pacote Pacote B, no qual métodos mortos foram eliminados ou voltaram a ser utilizados nas versões. Essa informação pode indicar que esse pacote tem sido alvo de atividades para combater a propagação de código morto nas versões, contribuindo para sua legibilidade;

d) Identificar pacotes e classes estáveis em relação a código morto. Por exemplo o pacote Pacote D.

Figura 6.20 - Protótipo de Visualização Qualitativa

Fonte: Do autor (2017)

Os argumentos utilizados no exemplo apresentado são possíveis conclusões que podem ser obtidas a partir da abordagem DCEVizz. A princípio, não faz parte do escopo da abordagem automatizar a análise das visualizações e das possíveis conclusões que podem ser obtidas. O propósito de DCEVizz é facilitar a identificação e a compreensão da evolução de código morto, servindo como alerta sobre possíveis problemas que podem ocorrer no sistema de software por causa da existência desse código. Desse modo, cabe ao engenheiro de software analisar e compreender as técnicas de visualização, a fim de obter suas próprias conclusões a respeito das informações apresentadas e tomar as medidas cabíveis.

6.4 Considerações finais

Neste capítulo, foi apresentada a abordagem DCEVizz, que detecta métodos mortos em versões de sistema de software e os apresenta utilizando técnicas de visualização, enfatizando suas características evolutivas. De modo geral, essa abordagem consiste na execução de quatro etapas: i) Seleção das Versões; ii) Detecção de Código Morto; iii) Análise da Evolução de Código Morto e; iv) Renderização das Visualizações. A detecção de código morto é feita estaticamente utilizando a técnica Análise de Acessibilidade. Além disso, foram definidas duas visualizações, nas quais é exibida a evolução do código morto sob as perspectivas quantitativa e qualitativa.

A abordagem DCEVizz foi implementada em um plug-in (DCEVizz Tool) para a plataforma Eclipse IDE concebido com base em uma adaptação do modelo de referência de visualização. Dessa forma, DCEVizz Tool implementa a abordagem proposta em três etapas: i) Fonte de Dados; ii) Processamento e Mapeamento em Estruturas Visuais e; iii) Visualizações.

7 AVALIAÇÃO DA ABORDAGEM DCEVizz

A abordagem DCEVizz foi avaliada em duas etapas. Na primeira etapa, a finalidade foi investigar a capacidade de detecção de código morto da técnica Análise de Acessibilidade utilizada na abordagem. Na segunda etapa, foi realizado um estudo experimental para investigar possíveis benefícios de DCEVizz para identificar e compreender a evolução do código morto. Neste capítulo, são apresentados os procedimentos adotados e os resultados obtidos em cada etapa da avaliação.

O restante do capítulo está organizado da seguinte forma. Detalhes e resultados da avaliação da técnica análise de acessibilidade são descritos na Seção 7.2. O estudo experimental realizado para avaliar a abordagem é apresentado na Seção 7.3. As ameaças à validade dos estudos são apresentadas na Seção 7.4.