Title: Maintenance Phase
1Maintenance Phase
2The Maintenance Phase
- Changes to the software product after the
product has been accepted by the client,
installed and used for its intended purpose - Maintenance is sometimes referred to as the
Evolution of the product over time
3Types of Maintenance
- Maintenance performed during product development
- Maintenance performed during the maintenance phase
4Maintenance performed during product development
- Changes in client requirements before the product
is delivered - Fixing of faults detected before the product is
delivered - Modification of components to be reused in the
product.
5Maintenance performed during the maintenance
phase (1)
- Corrective
- Correct faults in specification, design, coding,
documents, etc. - Uses up 17.5 percent of maintenance time
- Perfective
- Changes made to improve the effectiveness of the
product. - Uses up 60.5 percent of maintenance time
6Maintenance performed during the maintenance
phase (2)
- Adaptive
- Changes made to response to changes in the
environment in which the product operates. - Uses up 18 percent of maintenance time
- Others
- Uses up 4 percent of maintenance time
7Steps in changing a product
- Determine the cause of the product failure
- In case of adaptive or corrective, determine the
new requirements - Repair the fault
- Test the repair
- Perform regression testing
- Update the documentation
- Describe what was changed, by whom, and when
8Required Skills of a Maintenance Programmer (1)
- For corrective maintenance
- Exceptional debugging skills
- Ability to determine cause of failure
- Ability to function effectively without adequate
documentation
9Required Skills of a Maintenance Programmer (2)
- For perfective and adaptive maintenance
- Highly skilled in all areas software development
- Skilled in developing software specifications,
design, implementation, integration and testing
10Perception of Maintenance
- In the software development industry, maintenance
is viewed as - drudge work
- Thankless task
- Frustrating
- Have to deal with frustrated users
- Relegated to junior programmers
- Unglamorous
- This is why no one wants to be a maintainer
11Management Responsibilities
- Excellent maintenance is crucial to making
clients happy - Managers must ensure that highly qualified
programmers perform maintenance by - Giving maintainer the status and salary
commensurate with maintenance effort - This will improve the attitude towards maintenance
12Management of Maintenance (1)
- Initiate maintenance through
- Fault reports
- Corrective maintenance
- User report to re-create the fault
- Provides for a mechanism to changing the product
- Prioritization
- Workarounds
- Change in requirements
- adaptive and perfective maintenance
13Management of Maintenance (2)
- Authorizing changes to the product
- Authorize maintainers to change the product
- Require maintenance SQA to test the product and
release a new version - Distribute the new version to users
- Ensuring maintainability
- Maintainers should plan for maintainability of
the changes being made to the software
14Management of Maintenance (3)
- Problem of repeated maintenance
- If the person requesting the changes a sufficient
clout ( i.e., money and authority), changes to
software is unavoidable - Constant changes to the product results in
- Deviation from original design making future
changes more difficult - Documentations become less reliable
- Regression testing files may become outdated
- The whole product may have to be re-written
15Reverse Engineering (1)
- If the source code is the only available
documentation - Use it to attempt to recreate the design and
specification documents - Reverse engineering
- CASE tools pretty printer or tools to construct
flowcharts or UML diagram
16Reverse Engineering (2)
- If the executable is the only available artifact
- Use it as a black box to reverse engineer the
specifications, then use the reconstructed
specification create a new version of the product
using forward engineering
17Reverse Engineering versus Forward Engineering
- Reverse engineering
- Takes the product from a lower level of
abstraction to a higher level of abstraction - From code to design to specification
- Forward engineering
- Takes the product from a higher level of
abstraction to a lower level of abstraction - From secification to design to code
18Restructuring
- Takes place on the same level of abstraction
- Restructuring code
- Restructuring specifications
- Restructuring design
- Improving the product without changing its
functionality - Typically performed to increase maintainability
19Testing
- Test the repairs made
- Perform regression testing
- Regression test cases may need to be modified as
a result of the changes made
20CASE Tools
- Version control
- Configuration tool
- MS Source Safe
- ClearCase
- sccs, rcs, cvs (UNIX)
- CCC
- Fault tracking
- DevTrack
21Metrics
- For adaptive and perfective maintenance
- All the metrics previously discussed the other SW
phases - Total number of faults
- By type
- By severity
- Status of current fault reports
- How many fixed
- How many pending