Learn More
We propose design patterns as a new mechanism for expressing object-oriented design experience. Design patterns identify, name, and abstract common themes in object-oriented design. They capture the intent behind a design by identifying objects, their collaborations , and the distribution of responsibilities. Design patterns play many roles in the(More)
Patterns for software development are one of the latest " hot topics " to emerge from the object-oriented community. They are a literary form of software engineering problem-solving discipline that has its roots in a design movement of the same name in contemporary architecture, literate programming, and the documentation of best practices and lessons(More)
Behavioral compositions, groups of interdependent objects cooperating to accomplish tasks, are an important feature of object-oriented systems. This paper introduces <italic>Contracts</italic>, a new technique for specifying behavioral compositions and the obligations on participating objects. Refinement and composition of contracts allows for the creation(More)
Numerous classes, complex inheritance and containment hierarchies, and diverse patterns of dynamic interaction all contribute to diiculties in understanding, reusing, debugging, and tuning large object-oriented systems. To help overcome these diiculties, we introduce novel views of the behavior of object-oriented systems and an architecture for creating and(More)
Direct-manipulation graphics editors are useful tools for a wide variety of domains such as technical drawing, computer-aided design, application building, and music composition. Constraints can be a powerful mechanism for specifying complex semantics declaratively in these domains. To date, few domain-speciic graphics editors have provided constraint-based(More)
New techniques for browsing amongst functionally related classes, and retrieving classes from object-oriented class libraries are presented. These techniques make use of two potent, and rea.dily available sources of information: the source code of each class, and its associated documentation. We describe how the integration of information retrieval(More)