FSE Chap 8
FSE Chap 8
FSE Chap 8
Chapter Eight
Software Maintenance
2
Software maintenance
Software maintenance is the process of changing a system
system’s architecture.
Changes are implemented by modifying existing components
Sources of change
New business or market conditions which cause changes in product
structures
Budgetary or scheduling constraints that cause a redefinition of the system
Most changes are justified
5
nice little box at the end of the process and one which was
generally ignored in descriptions of the process
In more advanced lifecycles such as the Spiral Model,
SDLC
6
̶ Preliminary Design 3%
̶ Detailed Design 5%
̶ Implementation 7%
̶ Testing 15%
̶ Maintenance 67%
Another study found at least 50% of effort spent on maintenance
Another study found between 65% and 75% on maintenance
In embedded real-time systems, maintenance costs may be up to 4 times
development costs
7
application
Developers don’t like maintenance
Changes often cause new faults in the system
Changes tend to degrade the structure of a program
8
potential advantage of OO
Programming Language
the higher the level of the language, the cheaper the maintenance
Programming Style
the way in which a program is written
major cost of maintenance, therefore good CM tools and practices reduce this
cost
Application Domain
the less well-understood the domain, the greater the likelihood of the need for
needed
Hardware Stability
If the hardware platform will not change over the life of the system, maintenance
1
Types of Maintenance
̶So how and why do we spend so much time and effort on maintenance?
̶Maintenance is much more than fixing bugs
̶Commonly divided into four main categories
̶ Corrective Maintenance
̶ Adaptive Maintenance
̶ Perfective Maintenance
̶ Preventive maintenance
3
Corrective Maintenance(1)
Focused on fixing failures
Is a reactive process
failures and their associated faults generally need to be corrected
program components
5
Person who makes the repair is generally not the person who wrote the code or designed the
system
Two types of corrective maintenance
Emergency Repairs - short time frame, often a single program, failure needs to be repaired as
soon as possible
Scheduled Repairs - failure doesn’t need immediate attention, re-examination of all emergency
repairs
6
Adaptive Maintenance
The evolution of the system to meet the needs of the user and the business
Caused by
internal needs
external competition
Perfective Maintenance
Old proverb says “If it isn’t broken, don’t fix it”
Perfective maintenance ignores this ancient piece of wisdom
Is about improving the quality of a program that already works
Aim to achieve
reduced costs in using the system
maintenance outweigh
the costs of the maintenance
Preventative Maintenance
Can be seen as radical perfective maintenance or as an alternative to maintenance
More commonly known as Software Re- engineering
Taking a legacy system and converting its structure or converting to a new
language
Old system starts as a specification for the new system
Common method now is known as wrappers where an entire system is placed in
Alternatives to Maintenance
Sometimes, maintenance is not enough on its own
Don’t use when the design and function of a system are not known
use when the costs of maintaining the software and the hardware exceed the cost
of re-development
2
2
2
3
Coding
software
training
2
5
Maintenance Problems
Someone else's program.
Developer not available.
Proper documentation doesn't exist.
Not designed for change.
High staff turnover
Maintenance activity not highly regarded.
2
6
1.Quick-fix Model
This is basically an adhoc approach to maintaining software.
It is a fire fighting approach, waiting for the problem to occur and then trying to fix it as quickly as
possible.
2
8
Maintenance Models(4)
4. Boehm’s Model
Boehm proposed a model for the maintenance process based upon
the economic models and principles.
Boehm represent the maintenance process as a closed loop cycle
31
Maintenance Models(5)
5. Taute Maintenance Model
3
2
Maintenance Models(6)
6. Belady and Lehman Model
Where
M : Total effort expended
P : Productive effort that involves analysis, design, coding, testing and evaluation.
K : An empirically determined constant.
c : Complexity measure due to lack of good design and documentation.
d : Degree to which maintenance team i
3
3
software systems
1. Law of Continuing Change
A program used in a real-world environment necessarily must change or become
Conclusion
̶Maintenance is a major cost for software and must be planned for
during the entire life cycle.
̶Design workflow —use information-hiding techniques
̶Implementation workflow — good coding style
̶Documentation must be complete, correct, and current.
̶During maintenance, maintainability must not be compromised.
̶Maintenance is so critical and challenging that the best people should
be put on the task and rewarded accordingly.
3
7
Thank You!
Q?