|
Patterns are successful because
developers and project managers take the time
to read, learn and use them, writers, Dr
R Srinivasan
LAST WEEK we saw the generic
definition of pattern. To repeat it again, pattern
is a recurring solution to a standard problem;
this means a pattern comprises a problem-solution
pair. As mentioned earlier, patterns are described
under different contexts, viz. Design patterns,
architecture patterns, project management patterns,
analyses patterns, and even in areas like anthropology,
music and sociology. The concept of pattern has
evolved from initiative taken by several people
and the procedures followed by them. To give a
few examples, work of Kent Buck and Ward Cunningham,
the pioneers of small Talk, Bruce Anderson's initiative
in workshops at OOPSLA in early 1990's which lead
to the investigation of building a handbook for
software architects, Jim Coplein's illustration
of idioms in C++ based design, etc. But the greater
public knowledge was recognised only from the
book of the Gang of four (GOF), viz., Eric Gamma,
Richard Gelm, Ralph Johnson and John Vlissides.
Number of these people formed what is known as
the "Hillside Group" to explore further.
While establishment and study
of patterns are important at every stage of software
life cycle development, it is very critical at
the design stage. The GOF have dedicated a complete
book on design patterns called 'Design Patterns
- Elements of Reusable Object Oriented Software',
where they illustrate that in OO design, we will
find recurring patterns of classes and communicating
objects. So design patterns are the object-oriented
way I today's software design to assure success
of the project and provide technical guidance
to increase the effectiveness of software developers.
A question normally arises in the minds of the
designers - what is the difference between patterns
and frame works? While patterns are language independent,
frameworks are generally implemented in a particular
language. Schmidt and Douglas, in their paper
'Using Design Patterns to Develop Reusable Object-Oriented
Communication Software' (CACM, 38, 10, Oct.1995),
say that patterns and frameworks are highly synergistic
concepts, with neither one is subordinate to the
other. They forecast that next generation of object-oriented
frameworks will explicitly embody many patterns
and patterns will be widely used to document the
form and contents of frameworks. When related
patterns in software development are woven together
they form a "pattern language" which will provide
a process for the orderly solution of software
development problem. It should be noted that pattern
languages are not formal languages similar to
those with which we are familiar. They are a collection
of inter related patterns, encompassing domains
and disciplines in concurrency, distribution,
organisational design, software reuse, real-time
systems, business and electronic commerce, and
human interface. Pattern languages will support
large-scale reuse of software architecture and
design than individual patterns.
Developing pattern languages
is not an easy task because it is not only challenging
but also time consuming. Moreover we need dedicated
people for this job. Once a catalogue of pattern
language is developed in a particular domain,
it will provide the greatest payoff for pattern
based software development in future years.
Solution of problem by adopting
the methodology of patterns, is applicable to
both technical areas, because patterns pinpoint
issues, which are often neglected in resolving
concerns at several phases in software lifecycle.
However it would be borne in mind that patterns
are not a software development method or process;
they actually complement existing methods and
processes. During the Analysis and design phases,
patterns help in guiding developers to select
proven and successful architectures while in the
implementation and maintenance, phases, they help
in documenting the strategic properties of software
systems at a level higher than source code and
models of individual software modules.
Patterns are only a starting
point and not the destination. Particularly, a
design pattern is the overall concept behind many
alternative design solutions. Thomas Mowbray says
that there is always some tradeoffs or leeway
in how the problem is solved, which allows us
to choose a "design point" that balances the contextual
forces, benefits, and consequences in a way that
is most appropriate for the design situation.
In Object Oriented Software design, Design Patterns
guide in using primitive techniques such as objects,
inheritance and polymorphism. The patterns show
the method of how to parameterise a system with
an algorithm, behaviour, a state, or the type
of objects it is supposed to create. As GOF say,
Design Patterns provide a way to describe more
of the "way" of a design and not just record the
results of our decision. To summarise, with the
help of Design Patterns, a designer will be able
to get a design tight and faster. In general,
patterns are successful due to the fact that the
developers and project managers take the time
to read them, learn them, use them and also write.
(The
author is Chief Technology Officer, Internet Component
Management Group, Bangalore and can be contacted
at: r.srinivasan@iCMGworld.com)
|