Published December 28, 1998 | Version v1
Journal article Open

Functionality versus Practicality: Employing Existing Tools for Recovering Structural Design Patterns

  • 1. Universitaet Karlsruhe, Karlsruhe, Germany
  • 2. Kanthor AG, Karlsruhe, Germany

Description

The object-oriented design community has recently begun to collect so-called software design patterns: descriptions of proven solutions common software design problems, packaged in a description that includes a problem, a context, a solution, and its properties. Design pattern information can improve the maintainability of software, but is often absent in program documentation. We present a system called Pat for localizing instances of structural design patterns in existing C ++ software. It relies extensively on a commercial CASE tool and a PROLOG interpreter, resulting in a simple and robust architecture that cannot solve the problem completely, but is industrial-strength, it avoids much of the brittleness that many reverse engineering tools exhibit when applied to realistic software. The contribution of our work is not so much in the engineering value represented by this concrete system, but in its methodological approach. To evaluate Pat, we quantify its performance in terms of precision and recall. We examine four applications, including the popular class libraries zApp and LEDA. Within Pat s restrictions all pattern instances are found, the precision is about 40 percent, and manual filtering of the false positives is relatively easy. Therefore, we consider Pat a good compromise: modest functionality, but high practical stability for recovering design information.

Files

jucs_article_27525.pdf

Files (297.5 kB)

Name Size Download all
md5:09d168668b718c0ef5db18fdab3cd9ff
297.5 kB Preview Download