Search
 
     
   
   
   
 
By
Dr. R. Srinivasan,
CTO, iCMG, Bangalore
   
  Maintenance should make the system User-Friendly
 
 

 

The maintenance group has to play a much larger role then the development team because change require an intimate knowledge of the entire architecture and the necessary interface between different modules of the system, says, Dr R Srinivasan

CONTINUING Our discussion on maintenance, the more difficult a program is to understand, the more difficult it will be to maintain. If there no uniform standard across the team in writing the code and also if the system is not based on good software architecture, the cost to maintain will become high. The total software cost incurred from the time of system creation, maintenance and retirement is called the "Life Cycle Cost". The decision to maintain, reengineer/rebuild or replace is normally based on the comparison of life cycle costs for the old, reengineered and new systems. This is typically true in the case of legacy systems, which have to be evaluated according to the present day technologies available and their business needs meeting the cost versus performance.

Shari Pfleeger raises nine questions before deciding to discard the old systems or to adapt to the latest technologies The questions are: is the cost of maintenance too high, is the system reliability unacceptable, can the system no longer adapt to further changes within a reasonable amount of time, is the system still beyond further constraints, are the system functions of limited usefulness, can other systems do same job better, faster and cheaper, and is the cost of maintaining the hardware high to justify it with cheaper and newer hardware?

The question normally faced by many is - who performs the maintenance? It happens that the team that has been responsible for development will not be able to perform maintenance once the system becomes operational. Often a separate maintenance team is formed and after handing over the necessary know-how and body of knowledge, this team takes charge and ensures that the system runs properly. This kind of arrangement has both positive and negative aspects. The team involved in development will be more familiar with the system architecture, design, coding and the system's key functions. But they have to keep in mind that a separate team may be involved in maintenance and so should keep all the documents in a way to be understood easily. If this is not done, it may result in the need for deploying more people or resources to tackle a problem when it occurs. Looking at the positive side of having a separate maintenance team, a fresh new team, comprising analysts, programmers, designers (sometimes including one or two members of the development team), may be more objective. We have already article that maintenance does not mean just fixing the problems.

The maintenance team of today will face more challenges than the development team. Pfleeger says that when we develop systems, our main focus is in producing the code that implements the requirements and works as per the plan. At each stage the developers continuously refer to the work produces at the earlier stage, the characteristic of software life cycle development. In short, development simply involves looking back in in a careful and controlled manner. On the other hand, the maintenance group not only looks back at the developed product for periodic maintenance, but also keeps a watch on the present by establishing a working relationship with users and operated regarding their satisfaction level of the product. The team should also look forward to anticipate things that might go wrong and also to consider functional changes as per the new requirements of the user as dictated by the market. Thus maintenance has a broader scope with more to track and control, because changes require an intimate knowledge of the entire architecture, the code structure and interfaces between different modules of the system. Thus the maintenance group has to play a much larger role than the development team.

Of course, it should be remembered that maintenance processes vary considerably depending on the types of software being maintained, the development process used in an organisation and the people involved in the process. The traditional software life cycle exhibits maintenance to start after software is deployed. This is not strictly true because software maintenance depends on and begins with user requirements. Thus the principal of good software development should also incorporate good maintenance process right from the planning stage of the project. It therefore implies that to lower the maintenance cost, we have to build quality aspects from the very start itself. As Pfleeger says, "Trying to force good design and structure into an already built system is not as successful as building the system correctly in the first place".


(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