31 Software Maintenance
R. Baskaran
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.”
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 software design, 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:
- Corrective maintenance
- Adaptive maintenance
- Perfective maintenance
- 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 maintainability.
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:
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.
Web Links
- swebokwiki.org/Chapter_5:_Software_Maintenance
- agile.csc.ncsu.edu/SEMaterials/MaintenanceRefactoring.pdf
- https://www.tutorialspoint.com/software…/software_maintenance_overview.htm
Supporting & Reference Materials
- Roger S. Pressman, “Software Engineering: A Practitioner’s Approach”, Fifth Edition, McGraw Hill, 2001.
- Pankaj Jalote, “An Integrated Approach to Software Engineering”, Second Edition, Narosa Publications, 2005.
- Ian Sommerville, “Software Engineering”, Tenth Edition, Pearson Education, 2017.