Category:Patterns

Overview
Wikipedia defines a pattern as "a general repeatable solution to a commonly occurring problem in software design. A design pattern is not a finished design that can be transformed directly into code".

Design patterns are a method for effective communication of design rationale, to aid people in reasoning about what they do and to help them understand why they do it in a given context.

Structure of a Pattern
A FREMA pattern includes the following sections, which are prompted for at creation time :-


 * Name and Classification - a descriptive unique name that identifies this particular pattern


 * Intent - the reason for using this pattern


 * Also Known As - a pattern can have more than one name. These names should be documented in this section


 * Motivation - a problem and a context in which this pattern can be used


 * Implementation - how this pattern can be implemented (not software code at this point - see Sample Code and Known Uses below)


 * Structure - a graphical representation of the pattern. Class diagrams and Interaction diagrams can be used for this purpose


 * Applicability - situations in which this pattern is usable


 * Participants - a listing of the classes and objects used in this pattern and their roles in the design


 * Collaboration - how classes and objects used in the pattern interact with each other


 * Consequences - the results, side effects, and trade-offs caused by using this pattern


 * Sample Code - an illustration of how this pattern can be used in a programming language. You record each of these via the has sample code relationship


 * Known Uses - examples of software which represent real usages of this pattern. You record each of these via the implements relationship.


 * Related Patterns - other patterns with some relation to this pattern. These can be used along with this pattern (using the complements relationship), or instead of this pattern (using the has alternative relationship). It also includes the differences this pattern has with similar patterns.

FREMA paper on Patterns
The FREMA project team wrote a paper entitled "Design Patterns for Wrapping Similar Legacy Systems with Common Service Interfaces" ([[Media:FREMA_Patterns.pdf|PDF version]]). This describes the following three patterns
 * Lowest Common Denominator Interface
 * Most Popular Interface
 * Negotiated Interface

Attributes
A pattern does not have any attributes.

Related Components and Associations
The following table identifies the other components to which Pattern is associated. Click on an association below to find out more information.