Mining Design Patterns from C++ Source Code

Abstract

Design patterns are micro architectures that have proved to be reliable, easy-to implement and robust. There is a need in science and industry for recognizing these patterns. We present a new method for discovering design patterns in the source code. This method provides a precise specification of how the patterns work by describing basic structural information like inheritance, composition, aggregation and association, and as an indispensable part, by defining call delegation, object creation and operation overriding. We introduce a new XML-based language, the Design Pattern Markup Language (DPML), which provides an easy way for the users to modify pattern descriptions to suit their needs, or even to define their own patterns or just classes in certain relations they wish to find. We tested our method on four open-source systems, and found it effective in discovering design pattern instances.

Publication
Proceedings of the 19th International Conference on Software Maintenance (ICSM 2003), Amsterdam, The Netherlands, Pages 305–314

BibTeX:

@InProceedings{BaF03,
    author    = {Balanyi, Zsolt and Ferenc, Rudolf},
    title     = {Mining Design Patterns from {C++} Source Code},
    booktitle = {Proceedings of the 19th International Conference on Software Maintenance (ICSM 2003)},
    year      = {2003},
    pages     = {305--314},
    address   = {Amsterdam, The Netherlands},
    month     = sep,
    publisher = {IEEE Computer Society},
    doi       = {10.1109/ICSM.2003.1235436},
    keywords  = {Design Patterns, DPML, C++, UML, ASG, Schema, Columbus},
    url       = {http://ieeexplore.ieee.org/document/1235436/},
}