Hot spot recovery in object-oriented software with inheritance and composition template methods

The success of an object-oriented software development project highly depends on how well the designers can capture the Hot Spots of the application domain, that is, those aspects that should be kept flexible to accommodate reuse and change. Yet, all too often, Hot Spots are hardly documented and over years of software evolution, the source code that reifies them becomes increasingly entangled with the application specific code. This blurring of the flexible with the rigid parts makes an application hard to maintain, prone to unexpected change impact, and immobile for reuse in related areas. In this paper we apply SPOOL, our prototype environment for reverse engineering, to the recovery of Hot Spots in C++ software. We base the technique for Hot Spot recovery on the design concept of template methods. We present the approach and the interactive analysis capabilities of SPOOL to visualize browse, and inspect Hot Spots in both separate and contextual form. The findings are validated based on two industrial systems.

[1]  Rudolf K. Keller,et al.  Pattern-based reverse-engineering of design components , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[2]  Hans Albrecht Schmid,et al.  Systematic framework design by generalization , 1997, CACM.

[3]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[4]  Brian Foote,et al.  Designing Reusable Classes , 2001 .

[5]  Rudolf K. Keller,et al.  Design components: towards software composition at the design level , 1998, Proceedings of the 20th International Conference on Software Engineering.

[6]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[7]  Klaus Quibeldey-Cirkel,et al.  Using Patterns for Design and Documentation , 1997, ECOOP.

[8]  Premkumar T. Devanbu GENOA - A Customizable, Language- And Front-end Independent Code Analyzer , 1992, International Conference on Software Engineering.

[9]  Serge Demeyer Analysis of Overridden Methods to Infer Hot Spots , 1998, ECOOP Workshops.

[10]  Rudolf K. Keller,et al.  Pattern visualization for software comprehension , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

[11]  William M. Tepfenhart,et al.  A Unified Object Topology , 1997, IEEE Softw..

[12]  Wolfgang Pree,et al.  Design Patterns for Object-Oriented Software Development , 1994, Proceedings of the (19th) International Conference on Software Engineering.

[13]  Rebecca Wirfs-Brock,et al.  Designing object-oriented software , 1990 .

[14]  Ralph E. Johnson,et al.  Refactoring and Aggregation , 1993, ISOTAS.

[15]  Bruno Laguë,et al.  DATRIX Abstract Semantic Graph Reference Manual , 1999 .

[16]  Ralph Johnson Documenting frameworks using patterns , 1992, OOPSLA 1992.