Identifying Complex Functions By Investigating Various Aspects of Code Complexity
Paper in proceedings, 2015
The complexity management of software code has become one of the major problems in software development industry. With growing complexity the maintenance effort of software code increases. Moreover, multiple aspects of complexity create difficulties for optimal complexity management. The objective of this study is to investigate the relationships of several aspects of code complexity and assess the possibilities of optimizing overall code complexity. We conducted an action research project in two software development companies and complemented it with a study of three open source products. Four complexity metrics were measured, and their nature and mutual influence were investigated using statistical methods. The results and possible explanations were discussed with software engineers in industry. The results showed that there are two distinguishable aspects of complexity of source code functions; internal and external complexities. Those have an inverse relationship. Moreover, the product of them cannot be greater than a certain limit, regardless of software size. We developed a method that permits identification of most complex functions considering the two aspects of complexities. The evaluation showed that the use of the method is effective in industry; it enables identification of few (0.5%) most complex functions out of thousands of functions for manual assessment and reengineering.