1998 · 92 citations · 5 references
ComputingComputer ScienceCompilersProgramming LanguagesSoftware EngineeringAbstract Syntax TreesObject-oriented DesignObject-oriented ProgrammingProgramming Language DesignReverse EngineeringSoftware DesignDesign Pattern RepresentationDesign PatternsInheritance HierarchiesPattern DesignRefactoring Recovery
The paper aims to recover design information from Java source code. The authors use a pattern‑based, compiler‑driven approach that extracts inheritance and method call relations, builds a graph grammar, and applies criteria to detect associations, aggregations, and common design patterns such as composite and strategy. The compile phase yields a graph that serves as the starting point for a graph grammar describing the design recovery process.
In this paper we show how to recover design information from Java source code. We take a pattern-based approach and proceed in a step by step manner deriving several layers of increasing abstraction. A compiler collects information about inheritance hierarchies and method call relations. It also looks for particular source text patterns coming from naming conventions or programming guidelines.The result of the compile phase is a graph acting as the starting graph of a graph grammar that describes our design recovery process. We define criteria for the automatic detection of associations and aggregations between classes, as well as for some of the popular design patterns such as composite or strategy.
5
The C++ Information Abstractor.
Judith E. Grass, Yih-Farn Chen · 1990 · 79 citations
Assessing architectural complexity
Rick Kazman · 2002 · 50 citations