<<

SOFTWARE ENGINEERING

SOFTWARE MAINTENANCE

Software maintenance is the process of modification or making changes in the system after delivery to overcome errors and faults in the system that were not uncovered during the early stages of the development cycle.

LEARNING OBJECTIVES

• To study on why maintenance is an issue. • To study on reverse engineering and limitations. • To organize data. • To check what the system does.

SOFTWARE MAINTENANCE

The IEEE Standard for Software Maintenance (IEEE 1219) gave the definition for software maintenance as “The process of modifying a software system or component after delivery to correct faults, improves performance or other attributes, or adapt to a changed environment.”

Maintenance Principles

100

Hardware Development 60

Software

20 Maintenance Percent of total cost total of Percent 1995 2000 2010

The IEEE/EIA 12207 Standard defines maintenance as modification to code and associated documentation due to a problem or the need for improvement.

Nature of Maintenance

Modification requests are logged and tracked, the impact of proposed changes are determined, code and other software artifacts are modified, testing is conducted, and a new version of the software product is released. Maintainers can learn from the developer´s knowledge of the software.

Need for Maintenance

Maintenance must be performed in order to:

• Correct faults. • Improve the design. • Implement enhancements. • Interface with other systems. • Adapt programs so that different hardware, software, system features, and telecommunications facilities can be used. • Migrate legacy software. • Retire software

Tasks of a maintainer

The maintainer does the following functions:

• Maintain control over the software´s day-to-day functions. • Maintain control over software modification. • Perfecting existing functions. • Preventing software performance from degrading to unacceptable levels.

Majority of Maintenance Costs

Maintenance consumes a major share of software life cycle financial resources. But studies and surveys have shown that “over 80% of the maintenance effort is used for non-corrective actions. Quality of , construction, documentation, and testing affects software maintenance costs.

Evolution of Software

Lehman has studied software maintenance and evolution for over 20 years, leading to ‘Lehman´s Laws’. E.g. increasing complexity — as a program is evolved, its complexity increases unless work is done to maintain or reduce it.

CATEGORIES OF MAINTENANCE

Maintenance can be categorized into the follwing:

o Corrective maintenance o Adaptive maintenance o Perfective maintenance o Preventive maintenance

Corrective maintenance: Reactive modification of a software product performed after delivery to correct discovered problems.

Adaptive maintenance: Modification of a software product performed after delivery to keep a software product usable in a changed or changing environment.

Perfective maintenance: Modification of a software product after delivery to improve performance or .

Preventive maintenance: Modification of a software product after delivery to detect and correct latent faults in the software product before they become effective faults.

KEY TO MAINTENANCE

The key to effective maintenance lies in development. Depending upon the development of the product the maintenance of the product is determined.

 Higher quality  less (corrective) maintenance  Anticipating changes  less (adaptive and perfective) maintenance  Better tuning to user needs  less (perfective) maintenance  Less code  less maintenance

The distribution of maintenance activities are shown in the figure below:

corrective 21%

perfective 50%

adaptive 25%

preventive 4%

Major causes of maintenance problems

Some of the major factors which causes problem in maintenance is as follows:

 Unstructured code  Insufficient domain knowledge  Insufficient documentation

The key issues in software maintenance include:  Limited Understanding  Shift in type of maintenance  Impact Analysis  Maintainability  Alignment with organizational objectives  Staffing  Process  Organizational aspects of maintenance  Outsourcing  Cost Estimation  Specific Measures

Limited Understanding

The maintainers make changes or corrections to software that they did not write, so they should quickly understand the software. 40%-60% of the maintenance effort is devoted to understanding the software. Comprehension is difficult in the absence of documentation and when the original developers are unavailable. The maintainers must quickly understand the software and should make modifications to overcome the issues in the system.

Shift in type of maintenance Shift in type of maintenance over time can be projected as follows:  Introductory stage: emphasis on user support.  Growth stage: emphasis on correcting faults.  Maturity: emphasis on enhancements.  Decline: emphasis on technology changes.

Impact Analysis

The objectives of impact analysis are: ◦ Determination of the scope of the change in order to plan and implement the work.

◦ Development of accurate estimates of resources needed to perform the work. ◦ Analysis of the cost/benefits of the requested change. ◦ Communication to others of the complexity of a given change”.

Maintainability IEEE [IEEE610.12-90] defines maintainabiliy as the ease with which software can be maintained, enhanced, adapted, or corrected to satisfy specified requirements and the presence of systematic and mature processes, techniques, and tools helps to enhance the maintainability of a system