







Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
The concept of software maintenance and evolution, discussing why software needs maintenance, defining software maintenance, and examining the dynamics of program evolution. It also introduces lehman's system types and the different types and costs of maintenance. Essential for students and professionals interested in software engineering, computer science, and it.
Typology: Study notes
1 / 13
This page cannot be seen from the preview
Don't miss anything!








cmsc435 - 1
All successful software gets changed. Two processes are at work. First, as a software product is found to be useful, people try it in new cases at the edge of or beyond the original domain. The pressures for extended function come chiefly from users who like the basic function and invent new uses for it.
Second, successful software survives beyond the normal life of the machine vehicle for which it is first written. If not new computers, than at least new disks, new displays, new printers come along; and the software must be conformed to its new vehicles of opportunity. —Fred Brooks, No Silver Bullet
cmsc435 - 3
l Software maintenance is defined as the process of modifying a software system or component after delivery to correct faults, improve performance or other attributes, or adapt to a changed environment. Software maintenance can consume as much as 90 percent of all the total effort expended on a system in its lifetime. Some computer scientists prefer to use the term evolution rather than maintenance to indicate that a product normally and naturally evolves over time.
l Software is the only technology where the equivalent of adding a new wing to a building is called “maintenance.”
cmsc435 - 7
cmsc435 - 9
l The system requirements are likely to change while the system is being developed because the environment is changing. Therefore a delivered system won't meet its requirements! l Systems are tightly coupled with their environment. When a system is installed in an environment it changes that environment and therefore changes the system requirements. l Systems MUST be maintained therefore if they are to remain useful in an environment.
Examples of change during software development
Activity from which initial change results Artifacts requiring consequent change Requirements analysis Requirements specification System design Architectural design specification Technical design specification Program design Program design specification Program implementation Program code Program documentation Unit testing Test plans Test scripts System testing Test plans Test scripts System delivery User documentation Training aids Operator documentation System guide Programmer guide Training classes
cmsc435 - 13
l Is the cost of maintenance too high?
l Is the system reliability unacceptable?
l Can the system no longer adapt to further change, and within a reasonable amount of time?
l Is system performance still beyond prescribed constraints?
l Are system functions of limited usefulness?
l Can other systems do the same job better, faster or cheaper?
l Is the cost of maintaining the hardware great enough to justify replacing it with cheaper, newer hardware?
cmsc435 - 15
cmsc435 - 19
l Application type l System novelty l Turnover and maintenance staff ability l System life span l Dependence on a changing environment l Hardware characteristics l Design quality l Code quality l Documentation quality l Testing quality
time at which problem is reported time lost due to administrative delay time required to analyze problem time required to specify which changes are to be made time needed to make the change time needed to test the change
time needed to document the change
ratio of total change implementation time to total number of changes implemented number of unresolved problems time spent on unresolved problems percentage of changes that introduce new faults number of components modified to implement a change
cmsc435 - 21
F = 0 4. × (^) number of sentencesnumber of words +percentage of words of 3 or more syllables
cmsc435 - 25
l Use a mini-development iterative enhancement cycle (analysis, design, code, test) when making and verifying any code changes. Maintenance is an error-prone process which can cause the injection of new faults – new faults which might cause more problems than the original problem – if the maintenance engineer is not careful and thorough. l Avoid the quick-fix process for software maintenance to avoid the introduction of increased program complexity and unforeseen ripple effects. If you cannot avoid it, reanalyze the fix via a more systematic process once the crisis is over. l In organizations that have change control boards, complete a software change request form and submit to this board for approval of proposed adaptive, perfective, and preventative maintenance. l Complete a fault report for all needed corrective maintenance to describe a reported problem. Update this form with a detailed description of what was changed and why l Use maintainability metrics to signal when maintenance costs are becoming excessive and when it is time for some preventative maintenance.