Software Engineering Software Maintenance
Total Page:16
File Type:pdf, Size:1020Kb
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 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: 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 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: 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 .