What is a pattern?

    Software design is not the only field where patterns are utilized. Patterns are very important in our everyday life as they help us guide the process of object recognition. Effective process of learning and recognizing patterns can significantly reduce the amount of information that each human has to remember. Instead of remembering every instance of an object, a simple retrieving tool can generate or recognize similar objects. For example, there is no need to remember every chair one has ever seen, one can simply remember a pattern that the chair is something that you sit on. Software patterns draw on the work of the architect Christopher Alexander, which in turn builds on foundations that may be more suitable to software than the architectural metaphors themselves. 

    In order for patterns to be used, they need to be somehow represented. While scientists agree that there should be a common representation form, there is little consensus between groups that try to promote their own method for representing patterns.