Design recovery by automated search for structural design patterns in object-oriented software

The object-oriented design community has recently begun to collect so-called design patterns: cliches plus hints to their recommended use in software construction. The structural design patterns Adapter, Bridge, Composite, Decorator, and Proxy represent packaged problem/context/solution/properties descriptions to common problems in object-oriented design. Localizing instances of these patterns in existing software produced without explicit use of patterns can improve the maintainability of software. In the authors' approach, called the Pat system, design information is extracted directly from C++ header files and stored in a repository. The patterns are expressed as PROLOG rules and the design information is translated into facts. A single PROLOG query is then used to search for all patterns. They examined four applications, including the popular class libraries zApp and LEDA, with Pat. With some restrictions all pattern instances are found; the precision is about 40 percent. Since manual filtering of the output is relatively easy, they consider Pat a useful tool for discovering or recovering design information.

[1]  Ted J. Biggerstaff,et al.  Design recovery for maintenance and reuse , 1989, Computer.

[2]  James Coplien,et al.  Industrial experience with design patterns , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[3]  Alexander Dekhtyar,et al.  Information Retrieval , 2018, Lecture Notes in Computer Science.

[4]  Richard C. Waters,et al.  Challenges to the field of reverse engineering , 1993, [1993] Proceedings Working Conference on Reverse Engineering.

[5]  Richard C. Waters,et al.  The programmer's apprentice , 1990, ACM Press frontier series.

[6]  Ralph Johnson,et al.  Design patterns: elements of reuseable object-oriented software , 1994 .

[7]  J BiggerstaffTed Design Recovery for Maintenance and Reuse , 1989 .

[8]  Stefan Näher LEDA user manual : version 2.0 , 1990 .

[9]  Ted J. Biggerstaff,et al.  Program understanding and the concept assignment problem , 1994, CACM.

[10]  William E. Lorensen,et al.  Object-Oriented Modeling and Design , 1991, TOOLS.

[11]  Andrew Koenig,et al.  Patterns and Antipatterns , 1998, J. Object Oriented Program..