Towards pattern-based design recovery

A method and a corresponding tool is described which assist design recovery and program understanding by recognising instances of design patterns semi-automatically. The approach taken is specifically designed to overcome the existing scalability problems caused by many design and implementation variants of design pattern instances. Our approach is based on a new recognition algorithm which works incrementally rather than trying to analyse a possibly large software system in one pass without any human intervention. The new algorithm exploits domain and context knowledge given by a reverse engineer and by a special underlying data structure, namely a special form of an annotated abstract syntax graph. A comparative and quantitative evaluation of applying the approach to the Java AWT and JGL libraries is also given.

[1]  Ulrich Nickel,et al.  Using UML as Visual Programming Language , .

[2]  Albert Zündorf,et al.  Graph Pattern Matching in PROGRES , 1994, TAGT.

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

[4]  Petri Selonen,et al.  Scenario-based Synthesis of Annotated Class Diagrams in UML , 2000 .

[5]  Aniello Cimitile,et al.  Reuse reengineering and validation via concept assignment , 1993, 1993 Conference on Software Maintenance.

[6]  Jim Q. Ning,et al.  Knowledge-based program analysis , 1990, IEEE Software.

[7]  Linda M. Wills,et al.  Using Attributed Flow Graph Parsing to Recognize Clichés in Programs , 1994, TAGT.

[8]  Ulrich Nickel,et al.  Integrating UML diagrams for production control systems , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[9]  Kurt Mehlhorn,et al.  Graph Algorithm and NP-Completeness , 1984 .

[10]  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).

[11]  Giuliano Antoniol,et al.  Object oriented design pattern inference , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[12]  Hausi A. Müller,et al.  A reverse-engineering approach to subsystem structure identification , 1993, J. Softw. Maintenance Res. Pract..

[13]  Atul Prakash,et al.  A Framework for Source Code Search Using Program Patterns , 1994, IEEE Trans. Software Eng..

[14]  Andy Schürr,et al.  Graph Grammar Engineering with PROGRES , 1995, ESEC.

[15]  Albert Zündorf,et al.  Story Diagrams: A New Graph Rewrite Language Based on the Unified Modeling Language and Java , 1998, TAGT.

[16]  Robert Eckstein,et al.  Java Swing , 1998 .

[17]  Alex Quilici A memory-based approach to recognizing programming plans , 1994, CACM.

[18]  Linda M. Wills,et al.  Using Attributed Flow Graph Parsing to Recognize Programs , 1994 .

[19]  Wilhelm Hasselbring,et al.  The 22th International Conference on Software Engineering , 2000 .

[20]  Ansgar Radermacher,et al.  Support for Design Patterns Through Graph Transformation Tools , 1999, AGTIVE.

[21]  Lutz Prechelt,et al.  Design recovery by automated search for structural design patterns in object-oriented software , 1996, Proceedings of WCRE '96: 4rd Working Conference on Reverse Engineering.