Metric and Rule Based Automated Detection of Antipatterns in Object-Oriented Software Systems


7th International Conference on Computer Science and Information Technology (CSIT), Amman, Ürdün, 13 - 14 Temmuz 2016 identifier identifier


Patterns are techniques to improve design and enhance reusability. Design patterns are general solutions which are used for common problems in object oriented systems. Code and design smells are symptoms of weak design and development, problems that reside deep in code and reduce the quality of software. The antipattern concept is also introduced as poor solutions to solve recurring problems, even though developers think that they practice a design pattern. It is proven that antipatterns have negative effects on maintainability, flexibility and readability of object oriented software systems. In this research, we pro pose a metric and a rule based automated antipattern detection system for object oriented software. This system consists of three main mechanisms to detect an antipattern. These mechanisms are "Metric Analyzer", "Static Code Analyzer" and "Filtering Mechanism". We specified three antipatterns to analyze; namely Blob, Swiss Army Knife and Lava Flow. Thresholds that are used to detect antipatterns are determined considering six reference projects' results and averages of the analyzed project itself. Detection algorithms have been applied on a set of hand-crafted Java classes and accuracy percentages are measured according to the produced results.