On the Improvement of Cost-Effectiveness: A Case of Regression Testing

On the Improvement of Cost-Effectiveness: A Case of Regression Testing

Seifedine Kadry (American University of the Middle East, Kuwait)
DOI: 10.4018/978-1-4666-0089-8.ch004
OnDemand PDF Download:
No Current Special Offers


System maintenance is a general term required to keep a system running properly. The system could be a computer system, mechanical system, or other system. The maintenance in this sense is related to the deterioration of the system due to its usage and age. This context of maintenance does not apply to software, where the deterioration due to the usage and age don’t make sense. Conventionally, the maintenance of software is concerned with modifications related to software system. These modifications come from the user needs, error correction, improvement of performance, adapt to a changed environment, and optimization.
Chapter Preview


Software development companies spend more time on maintenance of existing software than on development of new software, and according to earlier studies software maintenance accounts for 40-70% (Figure 1) of its total life-cycle costs.

Figure 1.

Costs of software development stages (Bell, 2005)


Due to the testing process of software, the maintenance phase is undoubtedly the most costly and crucial phase in the software development life cycle. In this chapter we study in detail two well known testing techniques: Regression Test Selection and Automation test, in addition to the development of a new technique to ameliorate the cost-effectiveness of the regression testing. The proposed technique is applied to an insurance system in the SNA-Soft Company, the evaluation and a comparison with other techniques is given.


Need For Maintenance And Cost

As software systems age, it becomes more and more difficult to satisfy user requirements and to keep them ‘up and running’ without maintenance.

Maintenance is applicable to software developed using any software life cycle model (waterfall, spiral, etc). Maintenance must be performed in order to:

  • Interface with other systems

  • Correct faults

  • Migrate legacy software

  • Implement enhancements

  • Adapt programs so that different hardware, software, system features, and telecommunications facilities can be used

  • Improve the design

  • Retire software

Some of the technical and non-technical factors affecting software maintenance costs, as follows:

  • Team stability

  • Application type

  • Program age and structure

  • Software novelty

  • Stressful nature of work

  • Software maintenance staff availability

  • Software life span

  • Staff skills

  • Hardware characteristics

For instance, in the United States, 2% of the GNP (Gross National Product) is spent on software maintenance and in UK; about $1.5 million annually are spent on software maintenance.


Types Of Software Maintenance

E.B. Swanson initially identified three categories of maintenance: corrective, adaptive, and perfective. Later on, one additional category is added by Lientz and Swanson (1981): Preventive maintenance. The distribution of maintenance activities is shown in Figure 2.

Figure 2.

Maintenance type’s percentage (Jain, 2005)


Corrective maintenance is any maintenance activity to fix the bugs that has occurred or after delivery (Takang and Grubb, 1996), while adaptive maintenance keeps the software program working in a changed or changing environment such as the hardware or the operating system (Coenen and Bench-Capon, 1993). Perfective maintenance is every change to software to increase its performance or to enhance its user interface and its maintainability (van Vliet, 2000). The goal of preventive maintenance is to keep the software functioning correctly at any time.

Complete Chapter List

Search this Book: