COMPLEXITY TOOL: UMA FERRAMENTA PARA MEDIR COMPLEXIDADE CICLOMÁTICA DE MÉTODOS JAVA - Complexity Tool: a Tool for Measuring Cyclomatic Complexity in Java Methods

Heleno de Souza Campos Junior, Alisson Fernandes do Prado, Marco Antônio Pereira Araújo

Resumo


Este trabalho tem como objetivo apresentar uma ferramenta capaz de gerar grafos da complexidade ciclomática a partir de métodos escritos em linguagem Java. A partir da leitura do código fonte do método, a ferramenta executa um parsing com a finalidade de criar uma estrutura de grafos que reflete o fluxo do código fonte analisado. Após o parsing, é feita a renderização do grafo para que o usuário possa visualizar os caminhos que a execução do código fonte pode seguir. Através da execução de testes sobre os grafos gerados, a ferramenta demonstrou apresentar corretamente os grafos da complexidade ciclomática.

 

The purpose of this paper is to present a tool that is capable of generating cyclomatic complexity graphs of methods written in Java language. By the scanning of Java code, the tool executes a parsing technique to create a graph structure that reflects the scanned code's control flow. After the parsing, the rendering of the graph is made so the user can visualize the different paths that the code execution can take. It was possible through tests to check that the tool can correctly generate cyclomatic complexity graphs.


Palavras-chave


Engenharia de software; Grafo de controle de fluxo; Qualidade de software; Teste de software; Métricas de software - Software engineering; Control flow graph; Software quality; Software testing; Software metrics

Texto completo:

PDF

Referências


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

BARNEY, S., PETERSEN, K., SVAHNBERG, M., AURUM, A., & BARNEY, H. Software quality trade-offs: A systematic map. Information and Software Technology. Vol. 54, Issue 7, p. 651-662, 2012.

BINDER, R. V. Testing Object-Oriented Systems: Models, Patterns, and Tools. Addison-Wesley, 1999.

BOGHDADY, P. N., BADR, N. L., HASHIM, M. A., & TOLBA, M. F. An enhanced test case generation technique based on activity diagrams. In: Computer Engineering & Systems (ICCES), 2011 International Conference. Cairo, IEEE, 2011, p. 289-294.

CAVANO, J., P., & MCCALL, J. A. A framework for the measurement of software quality. Proceedings of the software quality assurance workshop on Functional and performance issues. Nova Iorque, ACM, 1978, p. 133-139.

JAVAPARSER, disponível em , acesso em: ago 2015.

GITHUB, disponível em , acesso em: ago 2015.

KITCHENHAM, B. (2004). Procedures for performing systematic reviews. Keele, UK: 2004. Relatório Técnico disponível em: http://people.ucalgary.ca/~medlibr/kitchenham_2004.pdf. Acesso em: 7 ago 2015.

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

MCCABE, T., J., WATSON, A., H. Structured Testing: A Testing Methodology Using the Cyclomatic Complexity Metric. NIST Special Publication 500-235, 1996.

MICHURA, J., & CAPRETZ, M. A. Metrics suite for class complexity. In: International Conference on Information Technology, 2005, Las Vegas. Proceedings ITCC 2005 International Conference on Information Technology: Coding and Computing, Las Vegas, IEEE, 2005, Vol. 2, p. 404-409.

ORSO, A., & ROTHERMEL, G. Software testing: a research travelogue (2000-2014). In: 36th International Conference on Software Engineering, 2014, Hyderabad. Proceedings of the on Future of Software Engineering. Nova Iorque, ACM, 2014, p. 117-132.

SHUKLA, A., & RANJAN, P. A generalized approach for control structure based complexity measure. Recent Advances in Information Technology (RAIT), 2012 1st International Conference on. IEEE, 2012 p. 916-921.

YOUNESSI, H.. Object-Oriented Defect Management of Software. Prentice-Hall, 2002.


Apontamentos

  • Não há apontamentos.




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.