MELHORIA DA QUALIDADE DE SOFTWARE ATRAVÉS DA ELIMINAÇÃO DA COMPLEXIDADE DESNECESSÁRIA EM CÓDIGO FONTE - IMPROVEMENT OF SOFTWARE QUALITY THROUGH THE ELIMINATION OF UNNECESSARY COMPLEXITY IN SOURCE CODE

Nathan Manera Magalhães, Heleno de Souza Campos Junior, Marco Antônio Pereira Araújo

Resumo


Programadores iniciantes podem escolher priorizar o funcionamento de um código-fonte ao desprezar sua qualidade, tornando-o difícil de ser mantido e testado. Com base nisso, um fenômeno chamado complexidade estrutural desnecessária pode ocorrer quando um método tem o valor de complexidade ciclomática que pode ser reduzido sem mudar o seu comportamento. Em trabalhos anteriores, foram desenvolvidas abordagens capazes de identificar a presença do referido fenômeno e mostrar ao desenvolvedor uma sugestão para reestruturar o código-fonte. Ainda, abordagens para auxiliar na construção de casos de teste de unidade. O objetivo deste artigo é agregar as evidências empíricas obtidas ao se avaliar experimentalmente as abordagens desenvolvidas e implementadas em uma ferramenta nomeada Complexity Tool. As evidências obtidas nos estudos, realizados em trabalhos anteriores, sugerem que as abordagens impactam significativamente em um aumento da cobertura de testes de unidades desenvolvidos e na identificação e remoção do fenômeno de complexidade ciclomática desnecessária. Não foram encontradas, no entanto, evidências que apontem para a diminuição do esforço necessário para criação de casos de teste de unidade.

 

Programming apprentices may choose to prioritize the functioning of a source code by neglecting its quality, making it difficult to maintain and test. Based on that, a phenomenon called unnecessary structural complexity may occur when a method has a cyclomatic complexity value that can be reduced without changing its behavior. In previous works, different approaches were proposed, including the automated identification and removal of unnecessary cyclomatic complexity in source code through the use of control flow graphs and source code refactoring. Also, an approach to support the development of unit test cases, by specifying and displaying paths to be tested in a control flow graph. The goal of this paper is to aggregate empirical evidence obtained by experimentally evaluating the proposed approaches implemented in a tool named Complexity Tool. Evidence provided by studies performed in previous works, suggests that the approaches significantly impact on developed unit tests coverage increase and on the identification and removal of unnecessary cyclomatic complexity.  No evidence was found regarding a possible effort decrease to develop unit tests.


Palavras-chave


Complexidade Ciclomática; Teste de Software; Refatoração do Código Fonte - Cyclomatic Complexity, Software Testing, Source Code Refactoring

Texto completo:

PDF

Referências


ALLEN, F. E. “Control flow analysis”, Proceedings of a symposium on Compiler optimization, Urbana-Champaign, Illinois, p. 1-19, 1970.

BALAZINSKA, M.; MERLO, E.; DAGENAIS, M.; LAGUE, B.; KONTOGIANNIS, K. “Advanced Clone-Analysis to Support Object Oriented System Refactoring.”, Proceedings of Seventh Working Conference on Reverse Engineering (WCRE’00). IEEE, p. 98-107, Nov. 2000.

CAMPOS JUNIOR, H. S.; MARTINS FILHO, L. R. V.; ARAÚJO, M. A. P. “Uma ferramenta interativa para visualização de código fonte no apoio à construção de casos de teste de unidade”. In: BRAZILIAN WORKSHOP ON SYSTEMATIC AND AUTOMATED SOFTWARE TESTING, 9th, 2015, Belo Horizonte. Proceedings of the 9th Brazilian Workshop on Systematic and Automated Software Testing. p. 31-40, 2015.

CAMPOS JUNIOR, H. S.; PRADO, A. F.; ARAÚJO, M. A. P. “Complexity Tool: uma ferramenta para medir complexidade ciclomática de métodos Java”. Revista Multiverso. v. 1, n.1, p. 66-76, 2016a.

CAMPOS JUNIOR, H. S.; MARTINS FILHO, L. R. V.; ARAÚJO, M. A. P. “An Approach for Detecting Unnecessary Cyclomatic Complexity on Source Code”. IEEE Latin America Transactions, vol. 14, no. 8, 2016b.

CAMPOS JUNIOR, H. S.; MARTINS FILHO, L. R. V.; ARAÚJO, M. A. P. “Uma Abordagem para Otimização da Qualidade de Código Fonte Baseado na Complexidade Estrutural”. Revista Multiverso. v. 2, n.1, p. 13-21, 2017.

CLARKE, L. A.; HASSELL, J.; RICHARDSON, D. J. “A close look at domain testing”. IEEE Transactions on Software Engineering, n. 4, p. 380-390, 1982.

IEEE standard glossary of software engineering terminology. 1990.

LEHMAN, M. M. “Programs, Life Cycles and Laws of Software Evolution”, Proceedings of the IEEE, vol. 68, no. 9, p.1060–1076, Set. 1980.

MAGALHÃES, N. M.; CAMPOS JUNIOR, H. S.; ARAÚJO, M. A. P.; NEVES, V. O. “An Automated Refactoring Approach to Remove Unnecessary Complexity in Source Code”. In: Proceedings of the 2nd Brazilian Symposium on Systematic and Automated Software Testing. ACM, p. 3, 2017.

MCCABE, T. J. “A complexity measure”. In: IEEE Trans. Software Eng. Vol. SE-2, N. 4, p. 308-320, 1976.

YU, S. e ZHOU, S. 2010. “A Survey on Metric of Software Complexity”. In: IEEE INTERNATIONAL CONFERENCE ON INFORMATION MANAGEMENT AND ENGINEERING. 2nd, 2010, Chengdu. Proceedings of the 2nd IEEE International Conference on Information Management and Engineering. IEEE, p. 352-356, 2010.


Apontamentos

  • Não há apontamentos.




Licença Creative Commons
Este obra está licenciado com uma Licença Creative Commons Atribuição 4.0 Internacional.

Multiverso: Revista Eletrônica do Campus Juiz de Fora - IF Sudeste MG, ISSN 2447-8725, Juiz de Fora, Minas Gerais, Brasil.

Licença Creative Commons

Esta obra está licenciada com uma Licença Creative Commons Atribuição 4.0 Internacional.