Skip to Main Content
A major impediment to program comprehension, maintenance and evolvability is the existence of crosscutting concerns scattered across different modules tangled with implementations of other concerns. Presence of crosscutting concerns in software systems can lead to bloated and inefficient software systems that are difficult to evolve, hard to analyze, difficult to reuse and costly to maintain. This paper shows that clustering based on easily extractable software features derived through method calls, parameter sharing and method interactions represented as dynamic metrics can be used to determine code scattering and or tangling, thereby providing a steppingstone towards identifying crosscutting concerns leading to mining of possible aspect candidates. A three-step approach is used in the Aspect Mining methodology introduced in this paper. In the first step, two legacy programs were dynamically traced, and data representing interaction between code fragments were collected. In the second step, metrics were formulated from the collected data and submitted as input to Self Organizing Maps for clustering. In the third step, the obtained clusters were mapped against the test programs in order to identify code scattering and tangling symptoms, leading to identification of aspect candidates. Finally viable validation methodologies were applied to assess performance, and establish the validity of the methodologies used. Results obtained in this paper are found to have matched or exceeded results obtained in other existing Aspect Mining methods.