What is a Design Pattern?
A design pattern solves a problem within a given context. The solution that is offered by implementing a pattern results in a system design structure, which balances the concerns of the design problem in a manner most appropriate for the given context. In “Understanding and Using Patterns in Software Development”, Dirk Riehle and Heinz Zullighaven offer a rather nice definition of what a design pattern is: “A pattern is the abstraction from a concrete form which keeps recurring in specific non-arbitrary contexts.” The ability to write good patterns is very difficult. A pattern should not only convey the facts about a system, but it should also tell a story about the system. It should allow the systems users to comprehend it, be able to customize it to accommodate new features.
Elements of a Design Pattern
A design pattern can be made up of the following components:
The design pattern must have a meaningful name to allow a developer to use a single word or short phrase to reference the pattern. Problem
The problem describes the patterns intent, the goal and objectives the pattern wants to achieve within the given context. Context
The context of the pattern is the preconditions under which the problem and its solution seem to recur, and for which the solution is desirable. Motivation
A description of the relevant forces/constraints and how they can interact/conflict with each other and the goals the pattern wishes to achieve. Solution
The solution illustrates the structure of the pattern through UML diagrams, textual descriptions that include the patterns collaborations and participants. Sample Example
One or more sample applications of the pattern which illustrates: •A specific initial context
•Application of the design pattern
•The resulting context of the application after the pattern is implemented Resulting Context
This describes the configuration of the system after the design pattern has been applied. Related Patterns
This describes the interaction with/ from other patterns.
Describes known implementations of the pattern. This helps to validate its use by proving to solve a particular recurring problem.
The goal of this project is to produce a repository of design pattern implementations through a PIM(Personal Information Manager) application, in order to help software developers better understand the use of design patterns. The limitations of current presentations of patterns is addressed by augmenting certain sections from above such as Motivation, Solution, Context and Known Uses. The lack of pattern interaction that is displayed by many examples in today’s literature is also addressed. The primary focus of the project is not so much on the technology used but more on creating a resource that documents and supports developers when approaching new system designs.
Software development is among the most complex human activities. Software development methodologies, tools, programming languages and practices are continually addressing the complexity at the heart of software structures, devising and revising approaches to improve quality, reusability and productivity. Design patterns are one such approach in a wider family of methods. This methodology was first introduced over ten years ago. One of the very first publications illustrating the use of patterns in software development was “Design Patterns: Elements of Reusable Object-Orientated Software” published in 1995 by a group of four men Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides who became known as the Gang of Four (GoF): The difficulty and limitations of this book are that it is now over ten years since it’s publication, which is a long time in the software development industry. The industry has seen new methodologies and practices emerge, such as Test Driven Development, Refactoring for example, which may now...