Understanding the Evolution of Code Smells by Observing Code Smell Clusters
Code smells are more likely to stay inter-connected in software rather than remaining as a single instance. These code smell clusters create maintainability issues in evolving software. This paper aims to understand the evolution of the code smells in software, by analyzing the behavior of these clusters such as size, number and connectivity. For this, the clusters are first identified and then these characteristics are observed. The identification of code smell clusters is performed in three steps - detection of code smells (God Class, Long Method, Feature Envy, Type Checking) using smell detection tools, extraction of their relationships by analyzing the source code architecture, and generation of graphs from the identified smells and their relationships, that finally reveals the smelly clusters. This analysis was executed on JUnit as a case study, and four important cluster behaviors were reported.
In this paper, we have presented an effective yield improvement methodology that can help both manufacturing ::: foundries, fabless and fab-lite companies to identify systematic failures. It uses the physical addresses of failing bits ::: from wafer sort results to overlay to inline wafer defect inspection locations. The inline defect patterns or the design ::: patterns where overlay results showed matches were extracted and grouped by feature similarity or cell names. The potentially problematic design patterns can be obtained and used for design debug and process improvement.