Design patterns are ubiquitous in modern software. Therefore, identification of design patterns in unknown code is a major step in understanding the code, its design and some of its intentions. Automated design pattern detection (DPD) encompases the development, evaluation and improvement of techniques and tools for identifying design patterns in code.
A challenge for DPD is the identification of patterns that have different accepted implementation variants and the distinction of variants from deviations that do not have accepted rationales but are rather an indication of lacking expertise or sloppy implementation of a design pattern. In the case of deviations, automated correction is a desirable goal. This is the domain of design pattern improvement (DPI).
The ROOTS research group is active in both domains, taking advantage of its software analysis and transformation tool, JTransformer / StarTransformer, which can easily express the seamless transition of detection diagnostics into corrective transformations.
We investigate novel DPD techniques, including
- integration of lightweight variants of known techniques in a novel tool, DPJF, and
- combination of results from existing DPD tools via data fusion.
As a step towards easier fusion and stronger synergy among DPD tools, we are collaborating with other research groups in the development of a common interchange format for DPD results. Together with our partners we also gather a public repository of DPD benchmarks. Feel invited to
- try DPJF
or contribute to our