Search
 
     
   
   
   
 
By
Dr. R. Srinivasan,
CTO, iCMG, Bangalore
   
  Software maintenance is also about upgradation
 
 

 

Software maintenance does not involve just fixing problems but should address upgradation needs as well, says Dr R Srinivasan

A SOFTWARE development project comprises mainly of three distinct phases, concentrating on the definition of the requirements, subsequent planning and development, followed by delivery of the product and support. A very good description of these phases is given by Roger Pressman in, "Software Engineering - a Practitioner's Approach (Fifth Edition)". During the definition phase, the information to be processed is identified specifying the required functions and performance, the nature of the behavior of the system, types of interfaces needed, the risks involved, constraints in the design, and the necessary testing and validation required to define a successful system.

The development phase is one where the actual implementation, of what has been planned in the definition phase, takes place. The main tasks during this phase are design, coding and testing leading to the delivery of the product to the customer, with every stage of development under the strict implementation of software engineering standards and processes. The next phase is to provide customer support and maintenance during which not only fault occurring in the usage of the product is corrected but also effect changes as per customer requirements, viz. enhancements towards the next version as dictated by market needs.

Having seen the first two phases in earlier articles, let us take the support phase involving maintenance. According to Roger Pressman, a system development is deemed to be complete when the system is being used by users in an actual production environment. Any work to change the system after it is in operation is considered to be maintenance. Canning in his paper on, "The Maintenance Iceberg" (Ref: EDA Analyser, Vol.10, No. 10, Oct. 1972) says that software maintenance was characterized as an "iceberg". He adds that, in the early 1970's, the maintenance iceberg was big enough to sink an aircraft carrier; today it could easily sink an entire navy. It is the effective maintenance and support provided by an organization that brings in more confidence in the customer and the end-user. To quote Manna from his paper in Datamation April '93 on, "Maintenance Burden Beginning for a Remedy", the maintenance of existing software can account for over 60% of all effort expected by a development organization, and this percentage will continue to rise as more and more software is produced by the organization.

Software maintenance/support does not mean just fixing the faults because support includes the need for providing the changes identified by the customer due to market requirements, competition with other vendors of similar products, changes needed due to deployment of the software in the new environment and conditions, reengineering the application for future use, etc., New products may be forced to work in different environments. The real world contains uncertainties and concepts which cannot be understood easily. So, the more dependent a system is on the real world for its requirements, the more likely it is to change (Ref: Shari Pfleeger). In today's world in software development, only 20% of all maintenance work is spent in fixing faults whereas the remaining 80% is spent in implementing the changes identified. It is therefore essential to realize, right at the beginning of the Project Plan that, mechanisms must be planned for evaluating, controlling, and making modifications i.e., the ultimate software product developed must be easily maintainable. So, in contrast to the hardware systems, software systems are necessarily built to be amenable for changes.

The methods and the associated tools in software engineering, if adopted carefully, lead to making the changes with ease. Every book and the references illustrate four types of changes; they are corrective, adaptive, enhancement and preventive maintenance. Corrective maintenance takes care of the necessary effort to correct the defects identified by the customer/user. To accommodate the changes in external environmental conditions, adaptive maintenance deploys modifications to the software. As per the customer's request, enhancement or perfective maintenance extends the capability and characteristics of the software beyond its original functional requirements that have been approved upon in the SRS. Finally, preventive maintenance is conducted periodically to enable the software to serve the needs of the end user so that no faults occur in a given period of running periodical preventive maintenance, it is possible that the software product can be more easily corrected, adapted and enhanced. It should be borne in mind that, in order to establish a good maintenance activity, the software program must be easily understandable, because the one developed today by a team of people may have to be maintained by a completely different set of people in the future.

(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