ABSTRACT
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.
References
- {AGG} Technical University of Berlin. AGG, the Attributed Graph Grammar system. Online at http://www.tfs.cs.tu-berlin/agg.]]Google Scholar
- {AWT} SUN Microsystems. AWT, the SUN Java Abstract Window Toolkit. Online at http://java.sun.com/products/jdk/awt.]]Google Scholar
- {CFM93} A. Cimitile, A.R. Fasolino, and P. Marascea. Reuse Reengineering and Validation via Concept Assignment. In Proc. of the 3rd International Conference on Software Maintenance (ICSM), pages 216-225. IEEE Computer Society Press, September 1993.]] Google Scholar
Digital Library
- {ELW98} R. Eckstein, M. Loy, and D. Wood, editors. Java Swing. O'Reilly, 1998.]] Google Scholar
Digital Library
- {FNTZ98} T. Fischer, J. Niere, L. Torunski, and A. Zündorf. Story Diagrams: A new Graph Rewrite Language based on the Unified Modeling Language. In G. Engels and G. Rozenberg, editors, Proc. of the 6th International Workshop on Theory and Application of Graph Transformation (TAGT), Paderborn, Germany, LNCS 1764. Springer Verlag, 1998.]] Google Scholar
Digital Library
- {GHJV95} E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object Oriented Software. Addison-Wesley, Reading, MA, 1995.]] Google Scholar
Digital Library
- {HN90} M. T. Hanrandi and J. Q. Ning. Knowledge Based Program Analysis. IEEE Transactions on Software Engineering, 7(1):74-81, IEEE Computer Society Press, 1990.]] Google Scholar
Digital Library
- {JCC} SUN Microsystems. JavaCC, the SUN Java Compiler Compiler. Online at http://www.suntest.com/JavaCC.]]Google Scholar
- {JGL} ObjectSpace, Inc. JGL, the ObjectSpace (Voyager) Java Generic Library. Online at http://www.objectspace.com/products/voyager/libraries.asp.]]Google Scholar
- {KNNZ99} H.J. Köhler, U. Nickel, J. Niere, and A. Zündorf. Using UML as a visual programming language. Technical Report tr-ri-99-205, University of Paderborn, Paderborn, Germany, August 1999.]]Google Scholar
- {KNNZ00} H.J. Köhler, U. Nickel, J. Niere, and A. Zündorf. Integrating UML Diagrams for Production Control Systems. In Proc. of the 22th International Conference on Software Engineering (ICSE), Limerick, Irland, pages 241-251. ACM Press, 2000.]] Google Scholar
Digital Library
- {KP96} C. Krämer and L. Prechelt. Design recovery by automated search for structural design patterns in object-oriented software. In Proc. of the 3rd Working Conference on Reverse Engineering (WCRE), Monterey, CA, pages 208-215. IEEE Computer Society Press, November 1996.]] Google Scholar
Digital Library
- {KSRP99} R.K. Keller, R. Schauer, S. Robitaille, and P. Page. Pattern-Based Reverse-Engineering of Design Components. In Proc. of the 21th International Conference on Software Engineering, Los Angeles, USA, pages 226-235. IEEE Computer Society Press, May 1999.]] Google Scholar
Digital Library
- {Meh84} K. Mehlhorn. Graph Algorithms and NP-Completeness. Springer Verlag, 1st edition, 1984.]] Google Scholar
Digital Library
- {MOTU93} H.A. Müller, M.A. Orgun, S.R. Tilley, and J.S. Uhl. A Reverse Engineering Approach To Subsystem Structure Identification. Journal of Software Maintenance, 5(4):181-204, John Wiley and Sons, Inc., December 1993.]]Google Scholar
Cross Ref
- {PP94} S. Paul and A. Prakash. A Framework for Source Code Search Using Program Patterns. IEEE Transactions on Software Engineering, 20(6):463-475, IEEE Computer Society Press, June 1994.]] Google Scholar
Digital Library
- {Qui94} A. Quilici. A Memory-Based Approach to Recognizing Programming Plans. Communications of the ACM, 37(5):84-93, ACM Press, May 1994.]] Google Scholar
Digital Library
- {Rad99} A. Radermacher. Support for Design Patterns through Graph Transformation Tools. In Proc. of International Workshop and Symposium on Applications Of Graph Transformations With Industrial Relevance (AGTIVE), Kerkrade, The Netherlands, LNCS 1779. Springer Verlag, 1999.]] Google Scholar
Digital Library
- {SS00} P. Selonen and T. Systä. Scenario-Based Syntesis of Annotated Class Diagrams in UML. In Proc. of the Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), Minneapolis, Minnesota USA. IEEE Computer Society Press, October 2000.]]Google Scholar
- {SvG98} J. Seemann and J.W. von Gudenberg. Pattern-Based Design Recovery of Java Software. ACM SIGSOFT Software Engineering Notes, 23(6), ACM Press, November 1998.]] Google Scholar
Digital Library
- {SWZ95} A. Schürr, A.J. Winter, and A. Zündorf. Graph Grammar Engineering with PROGRES. In W. Schäfer, editor, Proc. of European Software Engineering Conference (ESEC/FSE), LNCS 989. Springer Verlag, 1995.]] Google Scholar
Digital Library
- {TA99} P. Tonella and G. Antoniol. Object Oriented Design Pattern Inference. In Proc. of the 5th Symposium on Software Development Environments (SDE5), pages 230-238. IEEE Computer Society Press, September 1999.]] Google Scholar
Digital Library
- {Wil96} L.M. Wills. Using Attributed Flow Graph Parsing to Recognize Programs. In Proc. of International Workshop on Graph Grammars and Their Application to Computer Science, LNCS 1073, Williamsburg, Virginia, 1994, November 1996. Springer Verlag.]] Google Scholar
Digital Library
- {Zün96} A. Zündorf. Graph Pattern Matching in PROGRES. In Proc. of the 5th International Workshop on Graph-Grammars and their Application to Computer Science, LNCS 1073. Springer Verlag, 1996.]]Google Scholar
Index Terms
Towards pattern-based design recovery






Comments