• Nenhum resultado encontrado

6.1 Visão geral da abordagem

6.1.4 Gerar as visualizações

Os métodos mortos classificados durante a etapa Análisar a Evolução dos Métodos Mortos são representados por meio de duas perspectivas, utilizando técnicas de visualização de software: i) quantitativa, para perceber a variação da quantidade de código morto na evolução; e ii) qualitativa, para compreender detalhes do comportamento desse código em pacotes e classes específicos ao longo das versões. Quando utilizadas em conjunto, essas duas

perspectivas podem auxiliar na compreensão geral da evolução do sistema de software em relação a código morto.

A técnica de visualização quantitativa utilizada foi um gráfico de linha, no qual o eixo y corresponde a quantidade de código morto e o eixo x as versões analisadas. É apresentado na Figura 6.4 um protótipo dessa visualização, que exibe a evolução da quantidade de código morto de três versões de um sistema de software. Essa visualização facilita a percepção de tendência de aumento ou diminuição da quantidade desse código ao longo das versões do sistema.

Figura 6.4 - Protótipo da Visualização Quantitativa de DCEVizz

Fonte: Do autor (2017).

Na perspectiva qualitativa, são apresentados detalhes da evolução do código morto, utilizando uma técnica de visualização concebida com base nas técnicas TreeMap e Matriz de Evolução. Essas técnicas foram selecionadas considerando os fatores:

a) Organização. No contexto deste trabalho, a organização é um requisito importante da técnica de visualização, visto que auxilia na identificação da localização do método morto no sistema de software, facilitando a compreensão da sua evolução. Como sistemas de software orientados a objetos são estruturados hierarquicamente em pacotes, classes e métodos, técnicas de visualização hierárquicas (Seção 4.4) foram consideradas no momento da seleção. Com base nesses fatores, a técnica TreeMap foi selecionada por causa da sua capacidade em oferecer uma visão geral da estrutura das informações, utilizando cores para especificar características dos dados representados. A técnica de visualização proposta assemelha-se a essa pelas seguintes características:

- Cores das Bordas. As cores das bordas dos retângulos são utilizadas para identificar a entidade de software sendo representada (versão, pacote, classe ou método);

- Cores do Preenchimento. As cores do preenchimento dos retângulos são utilizadas para representar características da entidade de software;

- Agrupamento Hierárquico. A hierarquia das entidades de software é representada utilizando agrupamento de retângulos em uma área de exibição plana.

Os fatores que diferenciam a técnica de visualização proposta da técnica TreeMap são: - Uso de Espaço de Visualização Limitado. Ao contrário da técnica TreeMap,

a técnica proposta considera limitação de espaço apenas no sentido vertical para cada versão. No sentido horizontal, é utilizado o espaço necessário para representar os métodos mortos;

- Tamanho de Retângulo Fixo. A técnica TreeMap varia a proporção de tamanho dos retângulos de acordo com a limitação do espaço de visualização. Além disso, a variação da largura e da altura desses retângulos é utilizada para representar características da entidade do software correspondente, por exemplo, medidas de software. Esse recurso não foi utilizado na técnica proposta, visto que causaria dificuldade de compreensão da evolução dos métodos mortos;

b) Evolução. A seleção da técnica para representar a evolução foi realizada considerando técnicas que ofereçam uma visão geral da evolução de determinado atributo do sistema de software. Desse modo, a técnica Matriz de Evolução foi selecionada por apresentar a evolução das versões analisadas simultaneamente. Outro fator que levou a seleção dessa técnica foi sua capacidade de adaptação, podendo ser combinada com a técnica TreeMap.

Como ilustrado no protótipo apresentado na Figura 6.5, a técnica de visualização qualitativa possui a estrutura de uma matriz, em que as linhas correspondem as versões analisadas e as colunas correspondem aos pacotes dessas versões. No interior das linhas da matriz, são apresentados hierarquicamente os pacotes (bordas vermelhas), as classes (bordas amarelas) e os métodos mortos de cada versão analisada, conforme sugerido na técnica TreeMap. São utilizadas cores para caracterizar a evolução dos métodos mortos, que variam de acordo com a classificação obtida na etapa anterior. A cor verde foi utilizada para representar métodos mortos que não existiam na versão anterior (Novo Método Morto). A cor laranja foi utilizada para representar métodos mortos que existiam na versão anterior (Método Morto Propagado). A cor cinza foi utilizada para representar métodos mortos na

versão anterior e que se tornaram acessíveis (Método Morto Utilizado) na versão em questão. A cor cinza com símbolo “X” foi utilizada para representar métodos mortos na versão anterior e excluídos na versão em questão (Método Morto Removido).

Figura 6.5 - Protótipo da Visualização Qualitativa de DCEVizz

Fonte: Do autor (2017).

Não há limite quanto à quantidade de versões que podem ser analisadas, fazendo com que a matriz contenha quantas linhas forem necessárias. No exemplo da Figura 6.5, foram representadas três versões de um sistema de software (matriz com três linhas). A altura dessas linhas e dos retângulos que representam as classes e os pacotes é fixa. No entanto, a largura desses componentes varia de acordo com a quantidade de métodos mortos que devem ser representados em cada um. A altura e a largura dos retângulos que representam os métodos mortos são fixas. Ao contrário da técnica TreeMap, essa característica foi adotada na visualização proposta para não dificultar a compreensão da evolução desses métodos quando assumissem tamanhos diferentes em cada versão.

Para facilitar o acompanhamento da evolução, cada método morto é representado visualmente na mesma posição vertical em todas as versões analisadas. Pacotes e classes excluídos e que continham métodos mortos em algumas das versões analisadas anteriormente são representados com o símbolo “X”. Esse fato ocorre com pacote B na terceira versão (V3) e com a segunda classe presente no pacote B na segunda versão (V2). Métodos mortos classificados como Método Morto Removido também são representados com esse símbolo, como o caso do método A1() no pacote A em V3 e dos métodos C2() e C3()

no pacote C em V3. Versões que possuem pacotes ou classes que terão métodos mortos nas versões futuras são representadas com espaço em branco, como o caso do pacote C na primeira versão (V1).