Search
 
     
   
   
   
 
By
Dr. R. Srinivasan,
CTO, iCMG, Bangalore
   
  Well documented patterns reduce future labour
 
 

 

In software development process each pattern describes a problem which occurs over and over again and then provides the core of the solution, explains Dr R Srinivasan

"A pattern conveys a proven solution to a recurring problem in a given context amidst competing concerns"

In the few articles over the last 19 weeks, we have been concentrating on the development practices being adopted and executed by software development houses all over the world. But the big question mark is whether we have been 100% successful in our development efforts. The definition of success depends on what you had planned in the beginning of the project and what you have achieved in terms of schedules, cost, quality, support, etc. The recent trend to make software development more successful is to take cognizance of what are called as patterns and anti-patterns in general, but specifically with respect to an organization under the practices and methodologies it follows in software development. Initially we will concentrate on patterns and later move to describe anti-patterns.

Many authors describe patterns depending upon the context and environment in which they are seen. Generally speaking, a pattern is a recurring solution to a standard problem; this means a pattern comprises a problem solution pair. As mentioned, patterns are described under different context, viz. design patterns, architecture patterns, project management patterns, analysis patterns, etc. The concept of employing the methodology of patterns in software development was derived from the discoverer of patterns, Professor Christopher Alexander, a brick-and-mortar kind of architect from the University of California, Berkeley, and USA.

He says, "Each pattern describes a problem which occurs over and again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice." Alexander effectively conveyed the standard and successful methodologies in design and construction of buildings to many trained and untrained individuals. Typical example of deployment of patterns is in automobile industry where designers reuse standard designs, with successful track records. The principle is, if you could remember the details of the previous problem and how you solved it, then you could reuse the experience instead of rediscovering it. David Dikel, et al, in their book 'Software Architecture - Organizational Principles and Patterns', say that pattern is also a named "nugget" of instructive insight, conveying the essence of proven solution to a recurring problem in a given context amidst competing concerns. This means that patterns capture experience.

It is to be stressed upon that to make pattern-oriented methodology to be successful in software development, documentation of the problem-solution pair is very vital. Douglas Schmidt, et al, in their guest editorial for the Communication of the ACM (vol. 39, No.10, Oct. 1996), illustrate five important values that motivate the people who document patterns. The are:

1) Success is more important than novelty - the longer a pattern has been used successfully, the more valuable it tends to be. Finding a pattern is more of discovery and experience and not invention.

2) Emphasis on writing and clarity of communication - recurring solutions under patterns are documented using standard format so that writing patterns will be like catalogue entry. Well-written pattern descriptions improve communication between developers through well-structured documentation of solutions to common problems.

3) Qualitative validation of knowledge - to qualitatively describe concrete solutions to common problems rather than qualifying or theorizing about them. The aim should be to recognize and reward the creative process used by the developers in building high quality software systems.

4) Good patterns arise from practical experience - valuable patterns written by experienced developers must be shared by all, but at the same time experience of all software developers must be valued rather than resorting to the idea that few people have patterns and others just sit and learn them.

5) Recognize the importance of human dimensions in software development - it is to be remembered that the purpose of patterns is not to replace the creativity of the developer.

(To be continued)

(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