Software Maintenance
Software Maintenance
Software maintenance is recognized as an important part of the software development life cycle (SDLC). Software maintenance activities currently account for more than half of the typical software budget. In addition, more than 50 percent of global software developers are engaged in modifying existing applications. As the twenty-first century advances more than 50% of the global software population is engaged in modifying existing applications rather than writing new applications. At the end of the twentieth century software maintenance grew rapidly during 1997-2000 under the impact of two mass updates that between them are required modifications to about 85% of the worlds supply of existing software applications. The first of these mass updates was the set of changes needed to support the new unified European currency or Euro that rolled out in January of 1999. About 10% of the total volume of world software needed to be updated in support of the Euro. The second mass-update to software applications was the Y2K or year 2000 problem. This widely discussed problem was caused by the use of only two digits for storing calendar dates. When the century ended, the use of 00 for the year 2000 would violate normal sorting rules and hence cause many software applications to fail or to produce incorrect results unless updated. It may be necessary to add one or more digits to U.S. telephone numbers by about the year 2015. The UNIX calendar expires in the year 2038 and could troublesome like the year 2000 problem. Even larger, it may be necessary to add at least one digit to U.S. social security numbers by about the year 2050. The imbalance between software development and maintenance is opening up new business opportunities for software outsourcing groups. It is also generating a significant burst of research into tools and methods for improving software maintenance performance. The software maintenance phase of the software development life cycle begin safter delivery of the software product. Maintenance covers the life a software system from the time of installation until the software is no longer used. In addition, the ISO 11207 standard places emphasison aspects like planning for postdelivery operations, supportability, and logistics determination. The two most common meanings of the word maintenance include: 1) Defect repairs; 2) Enhancements or adding new features to existing software applications. Because the general topic of maintenance is so complicated and includes so many different kinds of work, some companies merely lump all forms of maintenance together and use gross metrics.
Notice that under the double impact of the Euro and the Year 2000 so many development projects were delayed or cancelled so that the population of software developers in the United States actually shrank below the peak year of 1995. The burst of mass update maintenance work is one of the main reasons why there is such a large shortage of software personnel. Major Kinds of Work Performed Under the Generic Term Maintenance 1. Major Enhancements (new features of > 20 function points) 2. Minor Enhancements (new features of < 5 function points) 3. Maintenance (repairing defects for good will) 4. Warranty repairs (repairing defects under formal contract) 5. Customer support (responding to client phone calls or problem reports) 6. Error-prone module removal (eliminating very troublesome code segments) 18. Year 2000 Repairs (date format expansion or masking) 19. Euro-currency conversion (adding the new unified currency to financial applications) Although the 21 maintenance topics are different in many respects, they all have one common feature that makes a group discussion possible: They all involve modifying an existing application rather than starting from scratch with a new application. Maintenance Types There are three different categories of software maintenance: corrective, adaptive, and perfective. Corrective: Corrective maintenance involves changing a software application to remove errors (Chapin, 2000b). The three main causes of corrective maintenance are design errors, logic errors, and coding errors. Adaptive: Adaptive software maintenance is any effort that is the result of changes in a software applications operating environment). These environmental modifications consist mainly of changes to the following: Rules, laws, and regulations that affect the application Hardware configurations (e.g. new printers) File structures and data formats System software (e.g. operating system or utilities) Adaptive maintenance accounts for approximately 20 percent of software maintenance activities. Perfective: Perfective maintenance is software maintenance implemented to improve the maintainability, performance, or other attributes of a computer application. Furthermore, perfective maintenance includes all changes, insertions, deletions, modifications, extensions, and enhancements made to a system to meet evolving and/or expanding user needs. There are several difficulties in exploring software maintenance costs with accuracy. One of these difficulties is the fact that maintenance tasks are often assigned to development personnel who interleave both development and maintenance as the need arises. This practice makes it difficult to
distinguish maintenance costs from development costs because the programmers are often rather careless in recording how time is spent. Another and very signficant problem is that fact that a great deal of software maintenance consists of making very small changes to software applications. The word entropy means the tendency of systems to detstabilize over time. The accumulation of small updates over time tends to gradually degrade the initial structure of applications and makes changes grow more difficult over time. The total cost of ownership of a software application is the sum of four major expense elements: 1) the initial cost of building an application; 2) the cost of enhancing the application with new features over its lifetime; 3) the cost of repairing defects and bugs over the applications lifetime; 4 The cost of customer support for fielding and responding to queries and customer-reported defects. Under the lagging scenario, the five-year maintenance costs for the application (which include defect repairs, support, and enhancements) are greater than the original development costs. For the software industry the number of personnel required to perform maintenance is unusually large and may soon top 75% of all technical software workers. The practice of software maintenance has improved significantly in past 15 years. As more and more of these systems go online, the pressure to continuously improve and adapt them in response to user requests will continue to burden software maintenance organizations. Recommended best practices include software that is designed with maintainability in mind. In addition, as systems become more complex and the technology they use becomes more obscure, software organizations must elevate the position of software maintainer and encourage the best programmers to become maintainers. Finally, as the best programmers become dedicated to software maintenance it is only reasonable to equip them with the best maintenance tools and procedures available.