• Nenhum resultado encontrado

5.2 Técnicas de detecção de código morto: RSL

5.2.5 Discussão dos resultados

As principais técnicas de detecção de código morto encontradas foram Análise de Fluxo de Dados e Análise de Acessibilidade. Além dessas, foram encontradas algumas técnicas referenciadas em menor quantidade, como a Análise de Anotações de Código, Estimador de Kaplan Meier, Análise de Arquivos XPath, com utilização da usabilidade de arquivos e com utilização de medidas de software. A técnica Análise de Fluxo de Dados foi a mais abordada, sendo referenciada em quase metade dos artigos selecionados (FIGURA 5.3). As técnicas menos referenciadas foram contabilizadas em “Demais Técnicas”. Alguns artigos não propuseram técnicas de detecção de código morto, representando 9% do total.

Os artigos selecionados na RSL consideraram diferentes granularidades de código morto. Existem trabalhos que o consideraram como componentes de código que nunca são executados. Outros trabalhos relacionaram código morto a componentes de código que produzem resultados não utilizados. Nesse contexto, ainda existe o conceito de código parcialmente morto, cujos componentes de software produzem resultados não utilizados dependendo do caminho da execução.

Figura 5.3 - Quantidade de Artigos por Técnica

Fonte: Do autor (2017).

Com as informações apresentadas na Tabela 5.1, pode-se observar que algumas técnicas foram mais utilizadas de acordo com a definição de código morto considerada. Dos 20 estudos que definiram código morto como componentes de código não executados, 11 estudos (55%) utilizaram a técnica Análise de Acessibilidade. A técnica Análise de Fluxo de Dados foi utilizada por 3 estudos (15%). Outras técnicas variadas (30%) foram propostas para detecção desse tipo de código.

Tabela 5.1 - Classificação dos Estudos por Definições

Código não Executado Resultados não Utilizados Parcialmente Mortos Análise de

Acessibilidade

[A1] [A35] [A2] [A11] [A5] [A6] [A26] [A48] [A38] [A15] [A14]

11 artigos

- -

Análise de Fluxo de Dados

[A23] [A46] [A20]

3 artigos

[A31] [A53] [A47] [A3] [A34] [A29] [A27] [A28] [A18]

[A39] [A4] [A52]

12 artigos

[A37] [A33] [A41] [A36] [A22] [A12]

[A42] [A21]

8 artigos Outras técnicas

[A40] [A45] [A44] [A10] [A30] [A9]

6 artigos

[A24] [A51] [A13] [A8] [A25] [A50]

6 artigos

-

Fonte: Do autor (2017).

Foram encontrados 18 estudos que definiram código morto como componentes de software que produzem resultados não utilizados. Dentre esses estudos, 12 (66,67%) utilizaram a técnica Análise de Fluxo de Dados para detecção. Técnicas diversas foram

propostas por 6 estudos (33,33%). Não foram encontrados estudos que consideraram essa definição e utilizaram a técnica Análise de Acessibilidade para detecção. A técnica de detecção aplicada nos 8 estudos que utilizaram o conceito de código parcialmente morto foi a Análise de Fluxo de Dados. Dois estudos não foram classificados: i) em [A43], não foi apresentada a definição de código morto utilizada, e ii) em [A19], foi utilizada a técnica Análise de Fluxo de Dados considerando duas definições de código morto.

De acordo com os resultados, para detecção de código não executado, a técnica mais adequada é a análise de acessibilidade. Para detecção de código parcialmente morto e de componentes de código que produzem resultados não utilizados, a análise de fluxo de dados pode ser a técnica mais indicada. Além disso, foram identificados alguns artigos que propuseram ferramentas para análise de código morto. Esse fato levou a elaboração de uma nova pergunta:

Quais artigos desenvolveram ferramentas para aplicação das técnicas de detecção de código morto propostas?

Na Tabela 5.2, são apresentados o código dos artigos que propuseram ferramentas e a técnica de detecção de código morto utilizada. Apenas 8 artigos (15%) propuseram ferramentas. Pode-se observar que metade dos artigos que propuseram ferramentas não definiram a técnica utilizada.

Tabela 5.2 - Estudos que Propuseram Ferramentas Código de Identificação Técnica Utilizada

[A6] Análise de Acessibilidade

[A13] Outras técnicas

[A16] Não sugeriu técnicas [A17] Não sugeriu técnicas [A19] Análise de Fluxo de Dados

[A30] Outras técnicas

[A32] Não sugeriu técnicas [A49] Não sugeriu técnicas

Fonte: Do autor (2017).

5.3 Considerações finais

Neste capítulo, foram apresentados conceitos básicos a respeito de código morto. Também, foram descritas técnicas para identificação desse código morto, obtidas com a execução de uma RSL. Após a análise de 53 artigos selecionados com a seleção secundária,

foram identificas duas técnicas mais referenciadas: i) Análise de Fluxo de Dados e; ii) Análise de Acessibilidade.

De modo geral, a técnica Análise de Fluxo de Dados verifica o fluxo de execução do sistema de software para identificar código morto considerando variáveis não utilizadas, trechos de código que produzem resultados não utilizados e código parcialmente morto. Em contrapartida, a técnica Análise de Acessibilidade visa encontrar trechos de código inacessíveis (não executados) a partir de um ponto de inicialização do sistema de software. Além disso, foram encontradas técnicas menos citadas, tais como, Análise de Anotações de Código e Baseadas em Conceitos Matemáticos.

Existem poucos estudos cujo objetivo principal é analisar código morto. Apesar da quantidade de artigos selecionados na RSL, aproximadamente metade dos estudos tratava somente desse assunto. Os outros estudos propuseram técnicas de análise que poderiam ser utilizadas em otimizações diversas, inclusive detecção de código morto, indicando possível carência de pesquisas realizadas de maneira exclusiva nessa área. Além disso, não foram encontrados estudos que utilizaram técnicas de visualização de software juntamente com as técnicas de detecção de código morto.

Com a análise das datas de publicação dos artigos selecionados, foi possível notar que o tema “código morto” foi constantemente estudado nos últimos anos. Isso mostra que há lacunas na área que motivam os pesquisadores a estudarem código morto em sistemas de software.

6 DEAD CODE EVOLUTION VISUALIZATION (DCEVizz)

A abordagem DCEVizz (Dead Code Evolution Visualization) realiza a identificação de código morto considerando métodos em versões de sistemas de software orientados a objetos. As características evolutivas do código morto identificado são apresentadas por meio de técnicas de visualização de software, sob as perspectivas quantitativa e qualitativa (BASTOS et al., 2016a). Essa abordagem foi implementada em um apoio computacional (plug-in para a plataforma Eclipse IDE), denominado DCEVizz Tool. Neste capítulo, são apresentados as características e o funcionamento da abordagem DCEVizz e do plug-in desenvolvido.

O restante do capítulo está organizado da seguinte forma. Visão geral das técnicas utilizadas e do funcionamento de DCEVizz é exibida na Seção 6.2. Características do plug-in DCEVizz Tool são descritas na Seção 6.3. Exemplos de como a abordagem pode ser utilizada e das informações que podem ser obtidas a partir de suas visualizações são apresentados na Seção 6.4.