Abstract
Patterns have a longstanding identity in the scientific community as results of a phenomenon called symmetry breaking. This article proposes a formalism for software patterns through connections from software patterns to symmetry and symmetry breaking. Specifically, we show (1) the ties from Alexander’s work to symmetry and symmetry-breaking foundations; (2) many programming languages provide constructs that support symmetry; (3) software patterns are the results of symmetry breaking, compensating for design shortfalls in programming languages. The proposed pattern formalism may be useful as a foundation for pattern taxonomies, and to differentiate patterns as a design discipline from heuristics, rules, and arbitrary micro-architectures.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Alexander, C., et al. A Pattern Language. New York: Oxford, ©1977.
Alexander, C. The Nature of Order. Pending publication by Oxford, New York, New York. Citations quoted with permission.
Alexander, C. The Timeless Way of Building. New York: Oxford, ©1979.
Alexander, C. A Foreshadowing of 21st Century Art: The Color and Geometry of Very Early Turkish Carpets. New York: Oxford University Press, ©1993.
Cook, W., and J. Palsberg. A Denotational Semantics of Inheritance and its Correctness. IN OOPSLA’ 89 Conference Proceedings, SIGPLAN Notices24(10), 1989. New York: ACM SIGPLAN, p. 436.
Coplien, J. Advanced C++ Programming Styles and Idioms. Reading, MA: Addison-Wesley, ©1992.
Coplien, J. Software Patterns. New York: SIGS Publications, ©1996.
Coplien, J. Space: The Final Frontier. C++ Report10(3). New York: SIGS Publications, March 1998, 11–17.
Coplien, J. Worth a Thousand Words. C++ Report10(5). New York: SIGS Publications, May/June 1998, ff. 54.
Coplien, J. To Iterate is Human, to Recurse, Divine. C++ Report10(7). New York: SIGS Publications, July/August 1998, 43–48; 51.
Coplien, J. Multi-Paradigm Design for C++. Addison Wesley, Reading MA. 1999. ISBN 0-201-82467-1
Coplien, J. Take Me Out to the Ball Game. C++ Report11(5). New York: SIGS Publications, May 1999, 52–8.
Coplien, J. C++ Idioms Patterns. In Pattern Languages of Program Design4. Reading, MA: Addison-Wesley, ©2000.
Eden, A. H., J. Gil, A. Yehudai. A Formal Language for Design Patterns. 3rd Annual Conference on the Pattern Languages of Programs (Washington UniversityTechnical ReportWUCS-97-07).
Eden. A. H., J. Gil, A. Yehudai. Precise Specification and Automatic Application of Design Patterns. The Twelfth IEEE International Automated Software Engineering Conference (ASE 1997).
Gamma, E., et al. Design Patterns: Elements of Reusable Object-Oriented Software. Reading, MA: Addison-Wesley, ©1996.
Gordon, C. and N. Hindman. Elementary Set Theory. Hafner Press, 1975.
Grenander, U. Elements of Pattern Theory. Baltimore, Maryland: Johns Hopkins University Press, ©1996.
Hawking, S. A Brief History of Time. New York: Bantam, ©1996.
Kappraff, J. Connections: The Geometric Bridge Between Art and Science. McGraw-Hill, 1990.
Lippman, S. B., and J. Lajoie. C++ Primer. 3rd Ed. Addison-Wesley, 1998.
Liskov, B. Data Abstraction and Hierarchy. SIGPLAN Notices23,5, May 1988, p. 25.
Mackay, A. L. Generalized Crystallography. Computers & Mathematics With Applications, 12B(1/2). Exeter, UK: Pergamon Press, 1986.
Mannheim, P. D. Symmetry and Spontaneously Broken Symmetry in the Physics of Elementary Particles. In Computers and Mathematics with Applications, 12B(1/2). Exeter, UK: Pergamon Press, 1986, 169–183.
Meszaros, G. Pattern: Half-Object plus Protocol (HOPP). In J. O. Coplien and D. Schmidt, eds., Pattern Languages of Program Design, Reading, MA: Addison-Wesley, ©1996, Chapter 8, 129–132
Meszaros, G. A Pattern Language for Improving the Capacity of Reactive Systems. In Pattern Languages of Program Design2. Reading, MA: Addison-Wesley, ©1998, p. 586, “Fresh Work Before Stale.”
Meyer, B. Object-Oriented Software Construction. Upper Saddle River, NJ: Prentice-Hall, ©1997.
Rosen, J. Symmetry in Science: An Introduction to the General Theory. New York: Springer-Verlag, 1995.
Senechal, M. Geometry and Crystal Symmetry. In Computers and Mathematics with Applications12B(1/2). Exeter, UK: Pergamon Press, 1986.
Stewart, I., and M. Golubitsky. Fearful Symmetry: Is God a Geometer? London: Penguin, ©1992, 1993.
Tichy, Walter. Essential Software Design Patterns, http://wwwipd.ira.uka.de/~tichy/patterns/overview.html, n.d.
Urmantsev, Y. Symmetry of System and System of Symmetry. Computers and Mathematics with Applications, 12B(1/2). Exeter, UK: Pergamon Press, 1986, 379–405.
Weyl, H.Symmetry. Princeton University Press, 1952.
Zhao, L, and T. Foster. Driver Duty Constructor: A Pattern for Public Transport Systems. In The Journal of Object-Oriented Programming12(2), May 1999, 45–51; 77.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2001 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Coplien, J.O., Zhao, L. (2001). Symmetry Breaking in Software Patterns. In: Butler, G., Jarzabek, S. (eds) Generative and Component-Based Software Engineering. GCSE 2000. Lecture Notes in Computer Science, vol 2177. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-44815-2_4
Download citation
DOI: https://doi.org/10.1007/3-540-44815-2_4
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-42578-6
Online ISBN: 978-3-540-44815-0
eBook Packages: Springer Book Archive