By Daryl Posnett, Christian Bird, and Premkumar Devanbu

Published in Proceedings of the Seventh Working Conference on Mining Software Repositories

Design patterns are codified solutions to common object-oriented design (OOD) problems in software development. One of the proclaimed benefits of the use of design patterns is that they decouple functionality and enable different parts of a system to change frequently without undue disruption throughout the system. These OOD patterns have received a wealth of attention in the research community since their introduction; however, identifying them in source code is a difficult problem. In contrast, metapatterns have similar effects on software design, by enabling portions of the system to be extended or modified easily, but are purely structural in nature, and thus easier to detect. Our long-term goal is to evaluate the effects of different OOD patterns on coordination in software teams as well as outcomes such as developer productivity and software quality. In this paper we present Thex, a metapattern detector which scales to large codebases and works on any Java bytecode. We evaluate Thex by examining its performance on codebases with known design patterns (and therefore metapatterns) and find that it performs quite well, with recall of over 90%.


  author = {Daryl Posnett and Christian Bird and Premkumar Devanbu},
  title = {{Thex: Mining Metapatterns in Java}},
  booktitle = {Proceedings of the Seventh Working Conference on Mining Software
  year = {2010},
  publisher = {IEEE Computer Society},
  location = {Cape Town, South Africa}

Thex: Mining Metapatterns in Java (MSR 10)