Mining Design Rules


  • NEHA KONDURU Aspiring Scientists' Summer Internship Program Intern
  • MUSTAFA LONANDWALA Aspiring Scientists' Summer Internship Program Intern
  • Sahar Mehrpour Aspiring Scientists' Summer Internship Program Co-mentor
  • Thomas LaToza Aspiring Scientists' Summer Internship Program Mentor



Design rules capture guidelines that help ensure that code is organized and written correctly. Active Documentation is a tool that allows developers to document their own design decisions that can be checked against code. Recent work has explored ways to mine these rules from code by looking for frequent co-occurring features within code. However, it is unclear what types of code features are most important to include and how effective this may be in identifying design rules. To answer these questions, we searched for design rules and best practices related to the Fragment and Activity APIs in Android. To test the performance of the technique, we also ran the tool on codebases that included known design rules to see if it could discover these rules. We found a variety of types of design rules that were not yet able to be detected, including specific types of method parameters, function calls, and method call chains. These results suggest ways in which the existing data mining technique may be improved to better identify the design rules developers work with every day. We also found that many design rules are highly similar, and potentially redundant, and explored ways in which rules might be clustered to reduce this redundancy. By refining the layout of the tool and fine-tuning the features and parameters used for mining, developers can more easily identify the most important design patterns present in their code.





College of Engineering and Computing: Department of Computer Science