Search
 
     
   
   
   
 
By
Dr. R. Srinivasan,
CTO, iCMG, Bangalore
   
  Patterns hold the key to effective software development
 
 

 

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)


 
 
     
Copyright © 2006 iCMG. All rights reserved.
Site Index | Contact Us | Legal & Privacy Policy