The recovery of design pattern knowledge from legacy applications can enrich the fields of program
comprehension, maintenance, refactoring, restructuring and re‑engineering — provided the patterns
are extracted accurately from the source code. Many approaches are used for the recognition of
patterns, but they still lack accuracy, flexibility, customisation and effectiveness, and the
evaluation of different design pattern recovery approaches remains debatable due to the unavailability
of standard benchmark systems.
Multiple searching techniques based on customisable feature types and pattern definitions are used in
this approach to recognise patterns from source code in multiple languages (Java, C#, C/C++). Feature
types allow switching between the appropriate searching techniques — SQL, regular expressions, a
source code parser and annotations — using static and dynamic parameters. The approach is validated
by applying a prototyping tool to different open‑source legacy applications. The extracted results
are comprehensible and can be reused for other applications.