In Zaidman, A., Hamou-Lhadj, A., & Greevy, O., editors, Proceedings of the 3<sup>rd</sup> International Workshop on Program Comprehension through Dynamic Analysis (PCODA), pages 34–42, October, 2007. Delft University of Technology. TUD-SERG-2007-022. 9 pages.Paper abstract bibtex
Design patterns are considered to be a simple and elegant way to solve problems in object-oriented software systems, because their application leads to a well-structured object-oriented design, and hence, are considered to ease software comprehension and maintenance. However, due to the complexity of large object-oriented software systems nowadays, it is impossible to recover manually the design patterns applied during the design and implementation of a system, which, in turn, impedes its comprehension. In the past few years, the structure and organization among classes were the predominant means of identifying design patterns in object-oriented software systems. In this paper, we show how to describe behavioral and creational design patterns as collaborations among objects and how these representations allow the identification of behavioral and creational design patterns using dynamic analysis and constraint programming.