Code smells are warnings of upcoming software design flaws that could compromise the system’s maintainability. Based on object-oriented design concepts, design smell is one of the classifications for code smells. Frequent occurrences of some design smells within the same class and in highly coupled classes is the inter-smell relationship among design smells. It has a stronger negative impact than a single design smell. Frequent occurrences of some design smells in the same class are collocations of design smells. In this study, we used the associative rule mining technique to identify the frequent occurrence of 17 design smells found in three publicly available Java-based software systems having the same domain. The study’s findings indicate that some pairs of design smells frequently coexist. Some relationships are quite expected (Broken Hierarchy \(\rightarrow \) Unutilized Abstraction) and (Insufficient Modularization \(\rightarrow \) Unutilized Abstraction), while others are indirect. Collocation of design smells could aid in prioritizing the classes that require refactoring to address code smells, and in developing or optimizing detectors to generate an optimal refactoring order.

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

Collocations of Class Level Design Smells Using Associative Rules Mining

  • Kapil Sharma,
  • Jitender Kumar Chhabra

摘要

Code smells are warnings of upcoming software design flaws that could compromise the system’s maintainability. Based on object-oriented design concepts, design smell is one of the classifications for code smells. Frequent occurrences of some design smells within the same class and in highly coupled classes is the inter-smell relationship among design smells. It has a stronger negative impact than a single design smell. Frequent occurrences of some design smells in the same class are collocations of design smells. In this study, we used the associative rule mining technique to identify the frequent occurrence of 17 design smells found in three publicly available Java-based software systems having the same domain. The study’s findings indicate that some pairs of design smells frequently coexist. Some relationships are quite expected (Broken Hierarchy \(\rightarrow \) Unutilized Abstraction) and (Insufficient Modularization \(\rightarrow \) Unutilized Abstraction), while others are indirect. Collocation of design smells could aid in prioritizing the classes that require refactoring to address code smells, and in developing or optimizing detectors to generate an optimal refactoring order.