Alexander writes, “Each pattern is a three part rule, which expresses a relation between a certain context, a problem and a solution”.
Understanding the context with structural and dynamic properties is essential to design the patterns. A pattern is a mental concept which emerges out from our contextual understanding and experience. The understanding should be sufficient enough to formalize the pattern but not its context. A pattern can be applied as a solution only on proper experience.
We carry out application domain analysis and high-level system design using conceptual patterns. We develop software designs using design patterns. And we implement software systems using programming patterns.
Extracting the metaphors rooted in the application domain brings out the conceptual patterns. They guide on perception of an application domain and help in understanding the tasks to be carried out.
Understanding the structure and dynamics of a software component along with their interplay and responsibilities aids in designing the design patterns. They are also essential in understanding the software design models.
A framework should incorporate and instantiate design patterns, in order to enforce the reuse of designs in a constructive way. A pattern should be generic enough to guide analysis and design and as well as specific enough to be used for everyday practice and a development culture.
Note – Summary and Reference from:
Dirk Riehle and Heinz Züllighoven. 1996. Understanding and using patterns in software development. Theor. Pract. Object Syst. 2, 1 (November 1996), 3-13.