Patterns‎ > ‎

Essence Of Patterns

Author : Rajesh Patkar    Article ID : 1906150001    Published :  August 2005 

Patterns and their Life Cycle
Pattern is a solution to a problem in context. It is a unit of expression that captures experience and enables reuse. It is relevant to all modern crafts including Software Development

Action packed Software Industry has its own set of problems. Technology is getting sophisticated, problems are growing complex, and software professionals are struggling with deadlines. The rate of change of contextual environment underlying the developmental activities is alarmingly high.Patterns offer a shimmer of hope.

Abstraction has always been an effective tool against complexity. Every engineering discipline offers a set of fundamental building blocks. Engineers use this off-the-self fundamental building blocks to create their products.This set of fundamental building blocks and the principles governing their use, form the context within which the product formation in envisioned. The pace of evolution of Software Engineering is unsettling from the building block's perspective.There always seems to be a need for better abstractions.

A prospective Pattern is formed when an engineer identifies a particular configuration of basic building blocks achieving a well defined motive. This newly discovered Pattern becomes graduated, if it can be re-purposed in a variety of applications while still retaining it's configuration. Graduated Patterns are named, documented and communicated for wider adoption. Successful patterns find place in widely distributed Pattern Catalogs. Patterns offer higher level of abstraction and are a larger unit of construction in comparison to the fundamental building blocks. In the process of evolution successful patterns are directly supported in the contextual environment and they eventually become fundamental building blocks. When a pattern becomes a fundamental building block it is no longer a pattern. The following diagram depicts Life Cycle of a Pattern

Pattern building is a technique which every good engineer needs to acquire. Patterns form the modern building blocks. They encourage and cultivate refined thought process. Patterns allow rapid design prototyping and elegant implementations.Patterns are not just limited to the design phase of Software Development. They are relevant to all phases of software development. From requirement specifications to maintenance, patterns and pattern languages are coming to life.For instance, there are patterns for Use Case( UML) formation and there are also patterns for GUI designs.

Patterns vary in size and scope. Be it a small elegant coding technique or an intimidating software architecture, patterns capture them all. However it is not enough to know patterns. What's more important is to be able to harness its power in day-to-day solutions. Applied in the programming context, small patterns are referred to as Idioms. Large patterns that can characterize entire systems are referred to as Architectural patterns. All patterns between this two extremes are design patterns.

Judicious use of patterns has been proved to deliver the following benefits
  • Rapid Design Prototyping 
  • Increased Reliability 
  • Effective Communication 
  • Increased Reuse 
  • Compact and Complete Documentation 

Software Design

It is not always possible to express a Software Design completely in terms of patterns. However, the following diagram illustrates how to approximate Patterns based Software Design. The expression is in terms of patterns and the fundamental building blocks.

  • Pattern Activities 
    • Activities related to Patterns 
  • Pattern Mining 
    • Identifying patterns in existing solutions 
  • Pattern Formulation 
    • Creating new Patterns 
  • Pattern Documentation 
    • Documenting the pattern configuration and motives 
  • Pattern Application 
    • Using patterns in the development process.