Design Patterns
Abstract
One of the key challenges in software engineering and development is how to successfully reuse knowledge and experience, as well as the software itself. A primary goal is how to reuse solutions (e.g., software design, software modules) in new applications that were previously developed for other, possibly different applications. Specifically, how can we describe successful solutions to common software problems so that they can be successfully understood, customized, and reapplied on succeeding development efforts? Patterns provide one step toward goal of developing handbooks for software engineers.
“Design pattern” is a term that has come into widespread use to represent a set of partial, proven solutions to general software design problems. Design patterns address one of the key challenges in software engineering and development: reusing the success experience of other developers. Patterns provide a means to capture successful solutions to common software problems in a formal written manner so that they can be successfully passed on to and understood by software developers. Developers can then customize and reapply the pattern on succeeding development efforts. Patterns are not limited to just design; however, they can be and are being applied on a host of domains, including system analysis and the software development process itself.
Bibliography
- C. Alexander, Notes on the Synthesis of Form, Harvard University Press, Cambridge, MA, 1964.
- C. Alexander, A Pattern Language: Towns, Buildings, Construction, Oxford University Press, Oxford, England, 1977.
- C. Alexander, The Timeless Way of Building, Oxford University Press, Oxford, England, 1979.
- S. R. Alpert, K. Brown, and B. Woolf, The Design Patterns Smalltalk Companion, Addison-Wesley, Reading, MA, 1998.
- B. Appleton, Patterns and Software: Essential Concepts and Terminology 2000. Available at: http://www.enteract.com/∼bradapp/docs/patterns-intro.html
- K. Beck, Smalltalk Best Practice Patterns, Prentice Hall, Upper Saddle River, NJ, 1997.
- K. Beck and W. Cunningham, 1989. A Laboratory for Teaching Object-Oriented Thinking, OOPSLA'89 Conference Proceedings, SIGPLAN Notices 24(10) (1989).
- W. J. Brown and H. W. McCormickIII, AntiPatterns in Project Management, Wiley, New York, 2000.
- S. Burbeck, Applications Programming in Smalltalk-80: How to use Model-View-Controller (MVC), 1992. Available at: http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html
- F. Buschmann, R. Meunier, et al., Pattern-Oriented Software Architecture: A System of Patterns, Wiley, New York, 1996.
- J. Carey, B. Carlson, and T. Graser, San Francisco(tm) Design Patterns: Blueprints for Business Software, Addison-Wesley, Reading, MA, 2000.
-
P. Coad,
Object-Oriented Patterns,
Communications of the ACM
35(9),
152–159
(Sept. 1992).
10.1145/130994.131006 Google Scholar
- P. Coad, M. Mayfield, and D. North, Object Models: Strategies, Patterns and Applications, Yourdon Press Computing Series, New York, 1996.
- J. Coplien, Advanced C++: Programming Styles and Idioms, Addison-Wesley, Reading, MA, 1991.
- J. Coplien, The Column without a Name: Pattern Mining, C++ Report 7(8) (Oct. 1995).
- J. Coplien, Software Patterns, 1997a. Available at: http://hillside.net/patterns/definition.html
- J. Coplien, Idioms and Patterns as Architectural Literature, IEEE Software Special Issue on Objects, Patterns, and Architectures, Jan. 1997b.
- J. Coplien and D. Schmidt, eds., Pattern Languages of Program Design, Addison-Wesley, Reading, MA, 1995.
- J. Coplien et al., Organizational Patterns 2000. Available at: http://www.bell-labs.com/cgi-user/OrgPatterns/OrgPatterns? OrganizationalPatterns
- M. Fowler, Analysis Patterns: Reusable Object Models, Addison-Wesley, Reading, MA, 1997.
- R. P. Gabriel, Patterns of Software: Tales from the Software Community, Oxford University Press, Oxford, England, 1996.
- E. Gamma, Object-Oriented Software Development Based on ET++: Design Patterns, Class Library, Tools. Ph.D. Thesis, University of Zurich, Institut fur Informatik, 1991.
- M. Grand, Patterns in Java, Vol. 1, Wiley, New York, 1998.
- V. Huston, Design Patterns, 2000. Available at: http://rampages.onramp.net/∼huston/dp/patterns.html
- J. C. Jones, Design Methods: Seeds of Human Futures, Wiley, London, 1981.
- R. K. Keller, R. Schauer, S. Robitaille, and P. Page, Pattern-based Reverse Engineering of Design Components, Proceedings of the Twenty-First International Conference on Software Engineering, Los Angeles, CA, May 1999, pp. 226–235.
- J. Kerievsky, A Learning Guide to Design Patterns, 2000. Available at: http://www.industriallogic.com/papers/learning.html
- D. Lea, Christopher Alexander: An Introduction for Object-Oriented Designers, 1993. Available at: http://gee.cs.oswego.edu/dl/ca/ca/ca.html
- D. Lea, Design Patterns for Avionics Control Systems, DSSA Adage Project ADAGE-OSW 94-01, SUNY Oswego & NY CASE Center, Oswego, NY, 1994.
- D. Lea, Concurrent Programming in Java: Design Principles and Patterns, Addison-Wesley, Reading, MA, 1996.
- R. Martin, D. Riehle, and F. Buschmann, Pattern Languages of Program Design 3, Addison-Wesley, Reading, MA, 1997.
- B. Massingill, T. G. Mattson, and B. A. Sanders, A Pattern Language for Parallel Application Programming, Technical Report CISE TR 99-009, University of Florida, Gainesville, 1999.
- T. J. Mowbray, W. J. Brown et al., AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis, Wiley, New York, 1998.
- G. Neumann and U. Zdun, 1999. Filters as a Language Support for Object-Oriented Scripting Languages, Proceedings of COOTS'99, 5th Conference on Object-Oriented Technologies and Systems, San Diego, May 3–9, 1999. Also available at: http://nestroy.wi-inf.uni-essen.de/xotcl/xotcl-patterns/
- E. Rechtin, Systems Architecting: Creating and Building Complex Systems, Prentice-Hall, Englwood Cliffs, NJ, 1991.
- D. Riehle, Composite Design Patterns, in Proceedings of the 1997 Conference on Object-Oriented Programming Systems, Languages and Applications (OOPSLA '97), ACM Press, New York, 1997a, pp. 218–228.
- D. Riehle, A Role Based Design Pattern Catalog of Atomic and Composite Patterns Structured by Pattern Purpose. Technical Report 97-1-1, UbiLabs, 1997b, Zurich, Switzerland.
-
D. Riehle and
H. Züllighoven,
Understanding and Using Patterns in Software Development,
Theory and Practice of Object Systems
2(1),
3-13
1996).
10.1002/(SICI)1096-9942(1996)2:1<3::AID-TAPO1>3.0.CO;2-# Google Scholar
- L. Rising, Patterns Handbook: Techniques, Strategies, and Applications, Cambridge University Press, Cambridge, England, 1998.
- D. Schmidt, Active Object—An Object Behavioral Pattern for Concurrent Programming, Proceedings of the Second Pattern Languages of Programs conference, Monticello, IL, Sept. 6–8, 1995.
- D. Schmidt, Asynchronous Completion Token—An Object Behavioral Pattern for Efficient Asynchronous Event Handling, 3rd Annual Pattern Languages of Programming Conference, Allerton Park, IL, Sept. 4–6, 1996.
- D. Schmidt, Proactor—An Object Behavioral Pattern for Demultiplexing and Dispatching Handlers for Asynchronous Events, 4th Annual Pattern Languages of Programming Conference, Allerton Park, IL, Sept. 2–5, 1997.
- D. Schmidt, M. Fayad, and R. Johnson, Software Patterns, Communications of the ACM, Special Issue on Patterns and Pattern Languages 39(10) (Oct. 1996).
- D. Schmidt, M. Stal, H. Rohnert, and F. Buschmann, Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects, Wiley, New York, 2000.
- J. Tidwell, Common Ground: A Pattern Language for Human-Computer Interface Design, 1999. Available at: http://www.cs.vu.nl/∼martijn/patterns/index.html
- J. Vlissides, Pattern Hatching: Design Patterns Applied, Addison-Wesley, Reading, MA, 1998.
- J. Vlissides and M. Linton, Unidraw: A Framework for Building Domain-Specific Graphical Editors, ACM Transactions on Information Systems 8(3), 237–268 (1990).
- E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns, Elements of Reusable Object-Oriented Software, Addison- Wesley, Reading, MA, 1995.
- J. Vlissides, J. Coplien, and N. Kerth, Pattern Languages of Program Design 2, Addison-Wesley, Reading, MA, 1996.