<< Chapter < Page Chapter >> Page >

Majority of maintenance costs

Maintenance consumes a major share of software life cycle financial resources. A common perception of software maintenance is that it merely fixes faults. However, studies and surveys over the years have indicated that the majority, over 80%, of the software maintenance effort is used for non-corrective actions. Jones describes the way in which software maintenance managers often group enhancements and corrections together in their management reports. This inclusion of enhancement requests with problem reports contributes to some of the misconceptions regarding the high cost of corrections. Understanding the categories of software maintenance helps to understand the structure of software maintenance costs. Also, understanding the factors that influence the maintainability of a system can help to contain costs. Pfleeger presents some of the technical and non-technical factors affecting software maintenance costs, as follows:

  • Application type
  • Software novelty
  • Software maintenance staff availability
  • Software life span
  • Hardware characteristics
  • Quality of software design, construction, documentation and testing

Evolution of software

Lehman first addressed software maintenance and evolution of systems in 1969. Over a period of twenty years, his research led to the formulation of eight “Laws of Evolution”. Key findings include the fact that maintenance is evolutionary developments, and that maintenance decisions are aided by understanding what happens to systems (and software) over time. Others state that maintenance is continued development, except that there is an extra input (or constraint)–existing large software is never complete and continues to evolve. As it evolves, it grows more complex unless some action is taken to reduce this complexity.

Since software demonstrates regular behavior and trends, these can be measured. Attempts to develop predictive models to estimate maintenance effort have been made, and, as a result, useful management tools have been developed.

Categories of maintenance

Maintenance consists of four parts:

  • Corrective maintenance: Reactive modification of a software product performed after delivery to correct discovered problems. It deals with fixing bugs in the code.
  • Adaptive maintenance: Modification of a software product performed after delivery to keep a software product usable in a changed or changing environment. It deals with adapting the software to new environments.
  • Perfective maintenance: Modification of a software product after delivery to improve performance or maintainability. It deals with updating the software according to changes in user requirements.
  • Preventive maintenance: Modification of a software product after delivery to detect and correct latent faults in the software product before they become effective faults. It deals with updating documentation and making the software more maintainable.

All changes to the system can be characterized by these four types of maintenance. Corrective maintenance is ‘traditional maintenance’ while the other types are considered as ‘software evolution’.

Questions & Answers

define system ,concepts of system and types of system?
Gurmeet Reply
iom
ADNAN
is very important software engineer or not.
Riyanshu Reply
what is software engineering
Ravindra Reply
what is salary of software engineer
Akash Reply
it depend on organization's and quality
josephat
what are naturs of software Engineering
BANDARU Reply
what is the nature of saftware
BANDARU Reply
what is nature of sotfware
BANDARU
hi
khushboo
can anyone help me I need to learn
khushboo
code debug
khushboo
in eclipse java
khushboo
@janak can u suggest
khushboo
what is the salary of software engineer
Akash
per month
Akash
please tell me what is the salary of software engineer per monthe
Akash
which sdlc mode l is suitable for atm banking system
Rakesh Reply
how can I create my own software?
David
HUAWEI.ABBULLAG.45720891
Abdula Reply
how to build apps
Andreas Reply
what is memory?
Hausa Reply
memory is billions of consecutive data storage cell where each of the cell has its own particular address of identification.
Shariful
is software engineering important or not.
Riyanshu
what are the major difference in the external environment of an office automation system and that of an embedded systems
juma Reply
What is software engineering
Zohaib Reply
what is salary of a software engineer
Akash Reply
tell me what is salary of a software engineer.
Riyanshu
understand wllhi 😭am language somali bro 😇😣😣😣
what is agile
Qais Reply

Get the best Software engineering course in your pocket!





Source:  OpenStax, Software engineering. OpenStax CNX. Jul 29, 2009 Download for free at http://cnx.org/content/col10790/1.1
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Software engineering' conversation and receive update notifications?

Ask