Search
 
     
   
   
   
 
By
Dr. R. Srinivasan,
CTO, iCMG, Bangalore
   
  Antipatterns identify bad design concepts
 
 

 

Software projects are often subjected to severe constraints in schedules and associated stress and any hasty decision often leads to compromises on quality aspects, writes Dr R Srinivasan

IN the last article we defined AntiPatterns as the one which will guide us to avoid and prevent us from repeating certain mistakes committed in a project earlier. Patterns are abstractions of experience; AntiPatterns are more difficult to draft, but rapidly lead to sharing of experiences. In practice it is much more difficult to identify the situations that should be avoided, particularly so in software development and that is the challenge tackled carefully through Antipatterns in many phases of software life cycle development. Through AntiPatterns it is possible to clearly identify bad concepts followed in design, the approaches taken to follow it towards development that would lead to a software of poor quality, ultimately resulting in the failure of the project, Johnny Johnson in his article 'Creating chaos' in the July 1995 issue of American Programmer says that five out of six corporate development projects fall short of desired features because of bad practices.

Let us see one example here - one important parameter attributed to the success of a well-planned software development project is "on time delivery".

In majority cases this does not happen and therefore because of the slippage in schedule, the morale of the team will go low and the project will suffer further. Another example will illustrate as to what will happen when the customer appears in the middle of the project and wants the time schedule to be reduced so that the market earlier than that of his competitors; but he will not realize that this demand will lead the project into what is called as "Swamp Effect". Brown et al describe this effect as the situation where there are finite number of alligators in a swamp and if we compress the size of the swamp into a smaller area (equivalent to schedule compression in software development), we increase the likelihood of being eaten by an alligator!!

AntiPatterns are much more effective and appropriate for identifying and describing recurring solutions than Design Patterns, because they start with a solution that has been adopted wrongly by the project team and refactor towards perfection. As part of the software life cycle, AntiPatterns can be viewed through the viewpoints of the developers, the software architect and the project manager. While AntiPatterns identified during development illustrate the problems encountered by the programmers, problems in system architecture, structure and consequences come under Architectural AntiPatterns. Management AntiPattern illustrate problems and solutions in the overall perspective and the software organization.

The three common concepts that depict AntiPatterns in software project development are:

1) Root causes that pin point the context and situations for detecting AntiPatterns,
2) Primal forces that influence the decision making and
3) The model adopted in software design typically based on the chosen architecture.
A good understanding of architectural levels is needed for defining the different scales of pattern applicability.

Brown, et al in their book, 'AntiPatterns - Refactoring Software And Projects in Crisis', illustrate that root causes are the mistakes committed during the development cycle leading to effort/cost over runs, schedule slippage, etc. According to them, the main reasons attributed are haste, apathy, narrow mindedness, sloth, avarice, ignorance and pride.

To describe each one of these briefly, software projects are often subjected to severe constraints in schedule and associated stress and so under this situation any hasty decision will lead to compromise in quality aspects.

Apathy denotes a situation when the developers or the project manager are unwilling to accept and adopt to solving known problems. Narrow mindedness is another form of apathy where the people refuse to adopt solutions that are known to be effective. Sloth is the attribute of a sluggish or lazy person in the project who makes poor decisions based upon an easy and short cut answer.

When the software development model incorporates excessive but superfluous details, we call it a situation of avarice. This will not only lead to unnecessary complexity of the system but also towards effort and cost overrun.

Ignorance is intellectual sloth that happens when a person does not try to learn or understand resulting in long term software problems. We will discuss about AntiPatterns due to primal forces and the model adopted in software development in the next article.

(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