Search
 
     
   
   
   
 
By
Dr. R. Srinivasan,
CTO, iCMG, Bangalore
   
  Planning is the key in software development
 
 


It is essential to plan well before initiating the development process. Dr R Srinivasan explains why 20 percent of an engineer's time should be devoted to planning

In any branch of engineering design and development, it is absolutely essential to have a well-laid plan before the actual development starts. Many experts have insisted that 20 percent of an engineer's time should be devoted to planning. Good planning will always lead to increase in efficiency and hence towards better productivity. Time management experts teach that a key element in reducing the stress of a person is through proper planning of activities. Planning is all the more important in software development.

I have explained in one of the earlier articles that as soon as the scope of the project is understood by the software development group, they should do a thorough analysis of the project, followed by a good planning on how to execute it. The most important aspect of the planning stage is to decide the system architecture, which has been explained in the last article. Unfortunately, in many organisations least importance is given to software architecture, thereby ending up with either a system of weak architecture or the absence of documented specifications. William Brown, et al, mention that it may be due to the reason that either the manager or the project leader are over confident that they can decide the architecture and implement it without any proper documentation. This practice of deciding the architecture by implementation leads to code writing that will not commensurate with the architecture and is a typical example of another antipattern called, 'Architecture by Implementation'.

The manager and members of a software development team should take note of the architectural aspects in the course of development, such as, the hardware, communications, handling database, security aspects in incorporating applications, elements and tools needed as part of programming and coding, and finally in system management. To explain this in little more detail, the development team should take cognisance of the following so that they do not get into the problem of this antipattern. The software architecture should include usage of the appropriate language and library, choice of correct coding standard, module interfaces, test plan, etc.

Under the communication architecture decision of proper networking protocols, architectural persistence to include databases and file handling systems are important points to note. Inadequate and insufficient details on the above are normally the symptoms leading to Architecture by Implementation Antipattern. The other factors that lead to this situation will be detected in the course of project execution. These risks are hidden due to lack of domain knowledge in the team, absence of technical backup and contingency plans, misunderstood requirements and unnecessary complexity introduced in the planning stage. According to statistics, 30% of projects in software development meet with problems during development and operations stage due to unresolved architecture issues and lack of risk management.

The refactored solution for this antipattern is to adopt a structured approach to look into the architecture and this is where well-written documentation is essential, through which it will be possible to extract the decisions taken on architecture. It is needless to say that such a document must be easily understood by everybody in the team. Hillard et al, in their paper, 'Experiences Applying a Practical Architectural Method', bring out nine steps to define system architecture using viewpoints from the perspective of every stakeholder in the project.

They are:
1) Clear definition of the architecture goals explaining what would be achieved by this architecture, who are the stakeholders.

2) He specifies questions that would answer and satisfy the stakeholders.

3) Decide the views that would represent the blueprint of the architecture

4) Finalise the architecture from each viewpoint.

5) Integrate them to arrive at the final decision.

6) Validate the architecture with formal requirements.

7) Review and refine the views if necessary

8) Communicate the finalised architecture to every system stakeholder.

9) Bring out a good documentation of the architecture and upgrade it, if necessary, after bridging possible gaps between the blueprints and implementation scheme.

Hillard, et al, name this as the Goal-Question Architecture (GQA), because the views of every stakeholder are taken into account in arriving at the final architecture. While Stovepipe System Antipattern exemplifies inadequacy of computational architecture, Architecture by Implementation Antipattern deals with the problem of occurrence of gaps due to multiple viewpoints in deciding the architecture at the planning stage of the software project.


( 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