ncreasingly, software engineers spend their time creating software families consisting of similar systems with many variations. While developers are pressed to build these families, they have no effective means for doing so. They are asked to create and reuse libraries of components but find those libraries costly to build and of limited value. They search for the right decomposition of their software into modules or classes, but have limited guidance in finding those decompositions, especially in the face of constraints on performance, reliability, and ease of use. Scope, commonality, and variability (SCV) analysis gives software engineers a systematic way of thinking about and identifying the product family they are creating. Among other things, it helps developers ♦ create a design that contributes to reuse and ease of change, ♦ predict how a design might fail or succeed as it evolves, and ♦ identify opportunities for automating the creation of family members.
The success of symmetry applications in many scientific disciplines has motivated us to explore symmetry in software. Our exploration is based on an informal notion that symmetry is the possibility of making a change together with some aspect that is immune to this change. In this view, symmetry has a duality of change and constancy whereby some aspect of an object can be changed while leaving other key aspects invariant. This view of symmetry is a fundamental concept underpinning many symmetry principles in the physical sciences. We have found that we can explain some object-oriented language constructs using this notion of symmetry. This article explores symmetry in object-oriented languages and also provides other examples of symmetry outside of object-oriented programming to show that symmetry considerations broaden beyond object orientation to other areas of software design.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.