Using IBM Rational Unified Process for software maintenance Mats Wessberg Consolidate AB mats.wessberg@consolidate.se
Objective To show how the IBM Rational Unified Process can be adapted to fascilitate maintainance of a continuously evolving software system.
Background Software maintenance costs from 40 to 80 percent of overall software lifecycle costs [Journal of software maintenance, June 1992] The tradtional view on maintenance is that it’s unplannable and out of control The potential for improvements in this area is great Cost can be reduced
Agenda The software lifecycle Adapting RUP for maintenance Setting up a maintenance organization Implementation roadmap Summary
Agenda The software lifecycle Adapting RUP for maintenance Development projects Types of maintenance Maintenance models Adapting RUP for maintenance Setting up a maintenance organization Implementation roadmap Summary
The lifecycle of a software system Pre- study Development project Transfer control Maintenance Phase- out
Software complexity over time Actual progression Complexity Modifications Wanted progression Time Source: IEEE Computer Society Press, 1996
Development project recommendations Use a RUP driven approach Explore the product vision Create a maintenance friendly architecture
What if you have an existing system? Develop a completely new maintenance friendly system Development cost 2nd system 10 years Accumulated lifecycle cost 3 years Breathe life into the existing system by e.g. establishing a RUP baseline 6 years Continue maintenance on the non-maintenance friendly existing system Development cost of the system
Types of maintenance Corrective Adaptive Complex Perfective Enhancements
Conducting traditional unplanned work Maintenance models Conducting traditional unplanned work Conducting traditional unplanned work Introducing maintenance projects Introducing maintenance projects
Conducting traditional unplanned work Maintenance models Conducting traditional unplanned work Conducting traditional unplanned work Introducing maintenance projects Introducing maintenance projects
Pros and cons with traditional unplanned work Suitable for corrective, adaptive and preventive maintenance Light organization Unstructured, not goal-orientated Depending on individuals No holistic view Tends to add complexity and regression
Improving traditional unplanned maintenance work The principles of RUP can still be used The best practices Risk driven approach Activities and guidelines Consider the work as transition iterations Update existing or add new RUP artifacts
Conducting traditional unplanned work Maintenance models Conducting traditional unplanned work Introducing maintenance projects Conducting traditional unplanned work Introducing maintenance projects
Pros and cons with maintenance projects Suitable for enhancements and other major maintenance tasks Structured, goal-oriented Requires a more complex organizational framework No holistic view
Introducing maintenance projects Conducting traditional unplanned work Maintenance models Introducing maintenance projects Conducting traditional unplanned work Best Choice Conducting traditional unplanned work Introducing maintenance projects
Agenda The software lifecycle Adapting RUP for maintenance Defining maintenance projects RUP’s change process Using the change process for maintenance projects Setting up a maintenance organization Implementation roadmap Summary
What is a maintenance project? A maintenance project is a planned undertaking that uses RUP to accomodate major and/or complex modifications to an existing software system.
Maintenance projects RUP is a process framework which can be tailored to fit all kinds of software development – including maintenance Enhancements and other complex modifications require the formalism of a process and structure of a project We should be able to adapt RUP for such changes as well!
Schedule and assign work RUP’s change process Submit Change Request Review Change Request Schedule and assign work Make changes Verify changes Approve and close case
The change process in development projects User release 1.0 Internal release Internal release Development project
Mapping the change process to maintenance projects Make critical changes Make other changes Elaboration Construction Review Change Request Schedule and assign work Approve and close case Make changes Verify changes Inception Transition
Mapping the change process to maintenance projects Make critical changes Make other changes Elaboration Construction Review Change Request Schedule and assign work Approve and close case Make changes Verify changes Inception Transition
Inception phase Inception Requirements Design Implementation Set up and plan project, identify scope and risks Build an architectural prototype Initiate a new maintenance project Business Case Requirements Design Implementation Risk List Project Plan Inception
Mapping the change process to maintenance projects Elaboration Construction Make critical changes Make other changes Make changes Review Change Request Schedule and assign work Approve and close case Verify changes Inception Transition
Elaboration and Construction phases Modify the architecture and build for some change request Rework Build for some more of a change request Rework Build for some more of a change request Elaboration Construction
Mapping the change process to maintenance projects Make critical changes Make other changes Elaboration Construction Verify changes Approve and close case Review Change Request Schedule and assign work Make changes Inception Transition
Transition phase Transition Requirements Design Implementation Minor updates and corrections due to user tests Release to customer Finalize and end the maintenance project Requirements Design Implementation User release Final build Transition
Characteristics of a maintenance project Change drives maintenance projects Inception and elaboration phases are typically shorter The project is typically shorter Architectural change is more complex Planning may be more difficult Depending on previous work
Agenda The software lifecycle Adapting RUP for maintenance Setting up a maintenance organization Integral parts and its purposes The work process Using RUP’s change process for maintenance control Implementation roadmap Summary
Integral parts of a maintenance organization Product Owner Maintenance Steering Group Maintenance Manager Maintenance CCB Maintenance Team Maintenance Organization
Operating the maintenance organization Maintenance Steering Group Change Requests Maintenance CCB Maintenance Manager Maintenance Manager Project Manager Project Manager Unplanned work Unplanned Work Project Team Project Team Maintenance Project Maintenance Project Maintenance Team
Categorizing and prioritizing change requests Enhancements CR Maintenance projects Complex CR CR CR CR CR CR CR CR CR CR CR CR CR CR CR CR CR CR Corrective Adaptive Perfective Unplanned work
Using RUP’s change management process Standard RUP Project Team Member Project CCB Project Manager Project Manager Developers Testers Submit Change Request Review Change Request Schedule and assign work Make changes Verify changes Approve and close case Maintenance Team Maintenance Project Team Maintenance CCB Maintenance Manager Maintenance Manager Stakeholder Testers Maintenance RUP
Characteristics of a maintenance organization Responsible for operations during the maintenance assignment Uses a set of clearly defined roles and responsibilities Oversees longterm goals and vision for the product
Agenda The software lifecycle Adapting RUP for maintenance Setting up a maintenance organization Implementation roadmap Summary
Implementation roadmap Define the maintenance process Setup the maintenance organization Determine tool support Prepare to modify Evaluate the effort Launch operation
Agenda The software lifecycle Adapting RUP for maintenance Setting up a maintenance organization Implementation roadmap Summary
Summary The best opportunity to affect maintenance is the development project If you have an existing system, consider your options Differentiate between unplanned maintenance and maintenance projects Maintenance projects are similar to development projects Setup your organization in the right order The CMM maturity level for software maintenance has a direct impact on the development quality and schedule accuracy [Software Engineering Institute, Carnegie-Mellon Univeristy; 2003]
Questions
Thank You