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.
- {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 ScholarDigital Library
- {ELW98} R. Eckstein, M. Loy, and D. Wood, editors. Java Swing. O'Reilly, 1998.]] Google ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital Library
- {Meh84} K. Mehlhorn. Graph Algorithms and NP-Completeness. Springer Verlag, 1st edition, 1984.]] Google ScholarDigital 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 ScholarCross 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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
Recommendations
Investigating design anti-pattern and design pattern mutations and their change- and fault-proneness
AbstractDuring software evolution, inexperienced developers may introduce design anti-patterns when they modify their software systems to fix bugs or to add new functionalities based on changes in requirements. Developers may also use design patterns to ...
Design pattern alternatives: what to do when a GoF pattern fails
PCI '13: Proceedings of the 17th Panhellenic Conference on InformaticsDesign patterns have been introduced in the field of software engineering in the middle of 90s as common solutions to common design problems. Until now, the effect of design patterns on software quality attributes has been studied by many researchers. ...
Pattern-based design evolution using graph transformation
In recent years, design patterns gain more interest in software engineering communities for both software development and maintenance. As a template to solve a certain recurring problem, a design pattern documents successful experiences of software ...
Comments