ACM Transactions on Programming Languages and Systems (TOPLAS)
Draco: a method for engineering reusable software systems
Software reusability: vol. 1, concepts and models
Contracts: specifying behavioral compositions in object-oriented systems
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Pattern-oriented software architecture: a system of patterns
Pattern-oriented software architecture: a system of patterns
Proceedings of the 20th international conference on Software engineering
A perspective of generative reuse
Annals of Software Engineering
The GenVoca Model of Software-System Generators
IEEE Software
Design Patterns Application in UML
ECOOP '00 Proceedings of the 14th European Conference on Object-Oriented Programming
Responsibilities and Rewards: Specifying Design Patterns
Proceedings of the 26th International Conference on Software Engineering
Using Integrated Metamodeling to Define OO Design Patterns with Object-Z and UML
APSEC '04 Proceedings of the 11th Asia-Pacific Software Engineering Conference
Data Refinement: Model-Oriented Proof Methods and their Comparison
Data Refinement: Model-Oriented Proof Methods and their Comparison
Amplifying the benefits of design patterns: from specification through implementation
FASE'06 Proceedings of the 9th international conference on Fundamental Approaches to Software Engineering
Hi-index | 0.00 |
Refinement concepts, such as procedural and data refinement, are among the most important ideas of software engineering. In this paper, we investigate the idea of design refinement , the process of refining a set of design patterns to arrive at application-specific design components, and ultimately, to system implementations. The approach also enables designers to refine a given pattern to arrive at more specialized versions of that pattern --sub-patterns -- thus enabling the creation of pattern hierarchies . We present three contributions: (i ) We explore the concept of design refinement and consider what it means for such a refinement to be correct , in the sense of being faithful to the pattern being refined. (ii ) We describe a two-part formalism for documenting patterns and sub-patterns. A pattern contract captures the requirements and behavioral guarantees associated with a given pattern, while a subcontract captures the ways in which the pattern is specialized for use in a particular application or sub-pattern. Contracts and subcontracts serve as the basis for validating the correctness of a given refinement. (iii ) We consider how related patterns may be organized into suitable hierarchies based on the notion of design refinement. We focus on variations of the standard Observer pattern as examples. A key feature of our formalism is that while it enables us to specify patterns and sub-patterns precisely, it allows us to do so without compromising their flexibility .