Loading [a11y]/accessibility-menu.js
Code Anomalies Flock Together: Exploring Code Anomaly Agglomerations for Locating Design Problems | IEEE Conference Publication | IEEE Xplore

Code Anomalies Flock Together: Exploring Code Anomaly Agglomerations for Locating Design Problems


Abstract:

Design problems affect every software system. Diverse software systems have been discontinued or reengineered due to design problems. As design documentation is often inf...Show More

Abstract:

Design problems affect every software system. Diverse software systems have been discontinued or reengineered due to design problems. As design documentation is often informal or nonexistent, design problems need to be located in the source code. The main difficulty to identify a design problem in the implementation stems from the fact that such problem is often scattered through several program elements. Previous work assumed that code anomalies -- popularly known as code smells -- may provide sufficient hints about the location of a design problem. However, each code anomaly alone may represent only a partial embodiment of a design problem. In this paper, we hypothesize that code anomalies tend to ``flock together'' to realize a design problem. We analyze to what extent groups of inter-related code anomalies, named agglomerations, suffice to locate design problems. We analyze more than 2200 agglomerations found in seven software systems of different sizes and from different domains. Our analysis indicates that certain forms of agglomerations are consistent indicators of both congenital and evolutionary design problems, with accuracy often higher than 80%.
Date of Conference: 14-22 May 2016
Date Added to IEEE Xplore: 03 April 2017
ISBN Information:
Electronic ISSN: 1558-1225
Conference Location: Austin, TX, USA

1. Introduction

Design problems are structures that indicate violations of key design principles or rules [38]. Every software system suffers from design problems, introduced either during original development or during evolution. Examples of design problems are Fat Interfaces [10], [38], Overused Interfaces [10], [38], and Scattered Concerns [10], [38]. These problems may have different degrees of severity, but all of them should be detected and possibly removed from the source code. Software systems have been often discontinued [22] or have had to be fundamentally reengineered [12], [34], [40] when design problems were allowed to persist in a system and to be compounded by other design problems introduced later.

Contact IEEE to Subscribe

References

References is not available for this document.