Thursday 8 March 2007

FAQ

What is patterns and anti-patterns?
Patterns:
A pattern is a named piece of instructive information that captures the essential structure and insight of a successful family of proven solutions to a recurring problem that arises within a certain context and system of forces [1].

Anti-Patterns:
If a pattern represents a "best practice", then an anti-pattern represents a "lesson learned." Initially proposed by Andrew Koenig in the November 1995 C++ Report, there are two notions of "anti-patterns" [1].

Those that describe a bad solution to a problem which resulted in a bad situation. Those that describe how to get out of a bad situation and how to proceed from there to a good solution [1].

What are software patterns?
Software patterns development is one of the hot topics to flash out from the object oriented community. Popular form of software engineering problem solving discipline that has its roots in a design movement of the same name in contemporary architecture. Fundamental to any science or engineering rule is a common language for expressing its idea and language for attach them together. The role of patterns within the software community it to create a body of literature to help software developers resolve persistent problems encountered throughout all of software development [1].

How patterns helps software engineer?
The role of patterns within the software community it to create a body of literature to help software developers resolve persistent problems encountered throughout all of software development. Pattern shares the solution of various problem to help them. Properly codifying these solutions and their relationships lets us successfully capture the body of knowledge which defines our understanding of good architectures that meet the goal of their users [1].

What are kind of design patterns?
According to GOF there are few kinds of design patterns which are as follow:

Architectural patterns:
An architectural pattern expresses a fundamental structural organization or schema for software systems. It provides a set of predefined subsystems, specifies their responsibilities, and includes rules and guidelines for organizing the relationships between them [1].

Design Patterns:
A design pattern provides a scheme for refining the subsystems or components of a software system, or the relationships between them. It describes commonly recurring structure of communicating components that solves a general design problem within a particular context [1].

Idioms:
An idiom is a low-level pattern specific to a programming language. An idiom describes how to implement particular aspects of components or the relationships between them using the features of the given language [1].

Conceptual patterns:
A conceptual pattern is a pattern whose form is described by means of terms and concepts from an application domain [1].

Programming patterns:
A programming pattern is a pattern whose form is described by means of programming language constructs [1].

What are the qualities of pattern?
Encapsulation and Abstraction:
Each pattern encapsulates a well-defined problem and its solution in a picky domain. Patterns should provide crisp, clear limits that help come together the problem space and the solution space by parceling them into a network of distinct, interconnected fragments [1].

Openess and Variability:
Each pattern should be open for expansion or parameterization by other patterns so that they may work together to solve a larger problem [1].

Equilibrium:
Each pattern must realize some kind of balance among its forces and constraints. This may be due to one or more invariants or heuristics that are used to minimize conflict within the solution space. The invariants often typify an underlying problem solving principle or philosophy for the particular domain, and provide a rationale for each step/rule in the pattern [1].

Reference:
[1] http://www.cmcrossroads.com/bradapp/docs/patterns-intro.html#KindsOfPatterns

2 comments:

Anonymous said...

Sir!

Thanks indeed for the information.

Ever since I have understood the definition of patterns given in your previous blog, it becomes easy for me to understand these FAQs.

The questions have been furnished with brief definitions of different areas covered within its context. After reading these, I got a feeling of confidence in terms of its thorough understanding.

Much obliged.

Asmat Ali said...

Thanks for your compliment. By my uderstanding, I am trying to keep things simple, so that poeple can understand it easily.