<< 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

give me coding of these projects
Aman Reply
feasibility study&fact gathering techniques
Nachi Reply
write about software engineering
Mandala Reply
8.10.0.
BARBU
define iterative model. example of iterative model. advantages and disadvantages of iterative model. when to use iterative model
Okello Reply
i try out in netbeans this code:public class Profile { private Profile(int w) { // line 1 System.out.println(w); } public final Profile() { // line 5 System.out.println(10); } public static void main(String args[]) { Profile obj = new Profile(50); } } It is the question 5, and the answer is 50
Jacqueline Reply
how to join conversation
Bablu
i need help....Discuss the factors that influence the choice of the software development methodology to use when implementing software projects?(20)
tatenda Reply
The success rate of software development projects can be increased by using a methodology that is adequate for the specific characteristics of those projects.  then the focus on RAD,XP,RUP.
Hemant
hemant hie...it is a presentation i am working on...can you help me wth the introduction....please a powerful one hahahahha
tatenda
yes
Hemant
Define and show all Dipthongs and vowels used in english phonetics
Okendro Reply
what is the software engineering
Axmed Reply
please
Jennifer
hhahhaha
martin
software engineering is a organized process of activities for development a use full software . it may consist of : 1:spcecification 2:design 3: implementation 4: evolution:
hamayun
Please how can I create an application?
Eric Reply
please how can I create an application
Nchor
How do we create a software
Florence Reply
give a more direct question
Louis Reply
what is semantics?
amjad
what r the computer codes
Kawuba Reply
machine code, source code , object code, and byte code etc
Hemant
what is software
Manobendra Reply
a collection of program executable by code is called software
Hemant
how can I create a software
Mary Reply
use in any model . then after you create any software
Hemant
what is capability maturity model integration
Muctarr
what is maturity level
Muctarr
maturity level is organization's process improvement achievement in multiple process areas
Hemant
how to trubulshoot is configuration ?
priya Reply
hello
Julius
hello
abeer
hello
Sahil
hello
Natnael
Hello
Eric
Guy's put your answer only
Natnael
click start then click run then type msconfig then ok
Natnael

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