Reusing Patterns through Design Refinement

  • Authors:
  • Jason O. Hallstrom;Neelam Soundarajan

  • Affiliations:
  • School of Computing, Clemson University,;Computer Sci. & Eng., Ohio State University,

  • Venue:
  • ICSR '09 Proceedings of the 11th International Conference on Software Reuse: Formal Foundations of Reuse and Domain Engineering
  • Year:
  • 2009

Quantified Score

Hi-index 0.00

Visualization

Abstract

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 .