Advertisement

Symmetry Breaking in Software Patterns

  • James O. Coplien
  • Liping Zhao
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2177)

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.

Keywords

Symmetry Breaking Symmetry Group Design Pattern Class Structure Local Symmetry 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. [1]
    Alexander, C., et al. A Pattern Language. New York: Oxford, ©1977.Google Scholar
  2. [2]
    Alexander, C. The Nature of Order. Pending publication by Oxford, New York, New York. Citations quoted with permission.Google Scholar
  3. [3]
    Alexander, C. The Timeless Way of Building. New York: Oxford, ©1979.Google Scholar
  4. [4]
    Alexander, C. A Foreshadowing of 21st Century Art: The Color and Geometry of Very Early Turkish Carpets. New York: Oxford University Press, ©1993.Google Scholar
  5. [5]
    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.Google Scholar
  6. [6]
    Coplien, J. Advanced C++ Programming Styles and Idioms. Reading, MA: Addison-Wesley, ©1992.Google Scholar
  7. [7]
    Coplien, J. Software Patterns. New York: SIGS Publications, ©1996.Google Scholar
  8. [8]
    Coplien, J. Space: The Final Frontier. C++ Report10(3). New York: SIGS Publications, March 1998, 11–17.Google Scholar
  9. [9]
    Coplien, J. Worth a Thousand Words. C++ Report10(5). New York: SIGS Publications, May/June 1998, ff. 54.Google Scholar
  10. [10]
    Coplien, J. To Iterate is Human, to Recurse, Divine. C++ Report10(7). New York: SIGS Publications, July/August 1998, 43–48; 51.Google Scholar
  11. [11]
    Coplien, J. Multi-Paradigm Design for C++. Addison Wesley, Reading MA. 1999. ISBN 0-201-82467-1Google Scholar
  12. [12]
    Coplien, J. Take Me Out to the Ball Game. C++ Report11(5). New York: SIGS Publications, May 1999, 52–8.Google Scholar
  13. [13]
    Coplien, J. C++ Idioms Patterns. In Pattern Languages of Program Design4. Reading, MA: Addison-Wesley, ©2000.Google Scholar
  14. [14]
    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).Google Scholar
  15. [15]
    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).Google Scholar
  16. [16]
    Gamma, E., et al. Design Patterns: Elements of Reusable Object-Oriented Software. Reading, MA: Addison-Wesley, ©1996.zbMATHGoogle Scholar
  17. [17]
    Gordon, C. and N. Hindman. Elementary Set Theory. Hafner Press, 1975.Google Scholar
  18. [18]
    Grenander, U. Elements of Pattern Theory. Baltimore, Maryland: Johns Hopkins University Press, ©1996.zbMATHGoogle Scholar
  19. [19]
    Hawking, S. A Brief History of Time. New York: Bantam, ©1996.Google Scholar
  20. [20]
    Kappraff, J. Connections: The Geometric Bridge Between Art and Science. McGraw-Hill, 1990.Google Scholar
  21. [21]
    Lippman, S. B., and J. Lajoie. C++ Primer. 3rd Ed. Addison-Wesley, 1998.Google Scholar
  22. [22]
    Liskov, B. Data Abstraction and Hierarchy. SIGPLAN Notices23,5, May 1988, p. 25.CrossRefGoogle Scholar
  23. [23]
    Mackay, A. L. Generalized Crystallography. Computers & Mathematics With Applications, 12B(1/2). Exeter, UK: Pergamon Press, 1986.Google Scholar
  24. [24]
    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.Google Scholar
  25. [25]
    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–132Google Scholar
  26. [26]
    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.”Google Scholar
  27. [27]
    Meyer, B. Object-Oriented Software Construction. Upper Saddle River, NJ: Prentice-Hall, ©1997.zbMATHGoogle Scholar
  28. [28]
    Rosen, J. Symmetry in Science: An Introduction to the General Theory. New York: Springer-Verlag, 1995.Google Scholar
  29. [29]
    Senechal, M. Geometry and Crystal Symmetry. In Computers and Mathematics with Applications12B(1/2). Exeter, UK: Pergamon Press, 1986.Google Scholar
  30. [30]
    Stewart, I., and M. Golubitsky. Fearful Symmetry: Is God a Geometer? London: Penguin, ©1992, 1993.Google Scholar
  31. [31]
    Tichy, Walter. Essential Software Design Patterns, http://wwwipd.ira.uka.de/~tichy/patterns/overview.html, n.d.
  32. [32]
    Urmantsev, Y. Symmetry of System and System of Symmetry. Computers and Mathematics with Applications, 12B(1/2). Exeter, UK: Pergamon Press, 1986, 379–405.Google Scholar
  33. [33]
    Weyl, H.Symmetry. Princeton University Press, 1952.Google Scholar
  34. [34]
    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.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2001

Authors and Affiliations

  • James O. Coplien
    • 1
  • Liping Zhao
    • 2
  1. 1.Bell LaboratoriesNapervilleUSA
  2. 2.Department of ComputationUMISTManchesterUK

Personalised recommendations