Abstract
A software (design) pattern describes a general solution for a recurring design problem. The solution is mostly described in terms of an abstract design structure expressed in design elements such as classes, methods and relationships (inheritance, associations).
This paper describes a prototype tool that supports working with design patterns when developing or maintaining object-oriented programs. The tool provides three integrated views on a program: the code (classes, methods, etc.), a design view (abstraction of the code plus additional information not in the code) and occurrences of design patterns in the program.
The tool assists developers using patterns in three ways:
-
•
Generating program elements (e.g. classes, hierarchies) for a new instance of a pattern, taken from an extensible collection of “template” patterns
-
•
Integrating pattern occurrences with the rest of the program by binding program elements to a role in a pattern (e.g. indicating that an existing class plays a particular role in a pattern instance)
-
•
Checking whether occurrences of patterns still meet the invariants governing the patterns and repairing the program in case of problems
Through the use of an existing refactoring package, the tool supports the use of patterns both in forward engineering and in backwards engineering, i.e. documenting occurrences of patterns in existing programs and modifying the program to better reflect the pattern's structure.
The tool is implemented in Smalltalk and has been applied to identify pattern occurrences in several non-trivial (Smalltalk) applications and to reorganize these subsequently.
Preview
Unable to display preview. Download preview PDF.
References
E. Gamma et.al., Design Patterns — Elements of Reusable Object-Oriented Software, Addison Wesley, 1995
F. Buschmann, et. al. Pattern-Oriented Software Architecture — A System of Patterns, Wiley and Sons Ltd., 1996.
Richard Helm, Ian M. Holland and Dipayan Gangopadhyay, “Contracts: Specifying Behavioral Compositions in Object-Oriented Systems,” pp. 169–180 in Proceedings of the 1990 OOPSLA/ECOOP Conference, ed. Norman Meyrowitz (October 1990).
Jung. J. Kim and Kevin M. Benner, “An Experience Using Design Patterns: Lessons Learned and Tool Support”, Theory and Practice of Object Systems, Vol. 2, No. 1, 1996, pp. 61–74.
F.J. Budinsky et.al., “Automatic code generation from design patterns”, IBM Systems Journal, Vol 35, No. 2, 1996.
Marco Meijers, Tool Support for Object-Oriented Design Patterns, Master's Thesis, Utrecht University, CS Dept, INF-SCR-96-28, August 1996.
Pieter van Winsen, (Re)engineering with Object-Oriented Design Patterns, Master's Thesis, Utrecht University, CS Dept, INF-SCR-96-43, Novemberl996.
William F. Opdyke, Refactoring object-oriented frameworks, University of Illinois, Urbana Champaign, 1992.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1997 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Florijn, G., Meijers, M., van Winsen, P. (1997). Tool support for object-oriented patterns. In: Akşit, M., Matsuoka, S. (eds) ECOOP'97 — Object-Oriented Programming. ECOOP 1997. Lecture Notes in Computer Science, vol 1241. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0053391
Download citation
DOI: https://doi.org/10.1007/BFb0053391
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-63089-0
Online ISBN: 978-3-540-69127-3
eBook Packages: Springer Book Archive