430 likes | 722 Views
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.
E N D
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 • 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 Transfercontrol 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 Create a maintenancefriendly architecture Explore the product vision
Develop a completely new maintenance friendly system Breathe life into the existing system by e.g. establishing a RUP baseline Developmentcost 2nd system 3 years 10 years 6 years What if you have an existing system? Accumulated lifecycle cost Continue maintenance on the non-maintenance friendly existing system Developmentcost of the system
Types of maintenance Corrective Adaptive Complex Enhancements Perfective
Conducting traditionalunplanned work Introducingmaintenance projects Maintenance models Conducting traditionalunplanned work Introducingmaintenance projects
Conducting traditionalunplanned work Maintenance models Conducting traditionalunplanned work Introducingmaintenance projects Introducingmaintenance 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
Introducingmaintenance projects Maintenance models Conducting traditionalunplanned work Conducting traditionalunplanned work Introducingmaintenance 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
Conducting traditionalunplanned work Best Choice Introducingmaintenance projects Maintenance models Conducting traditionalunplanned work Introducingmaintenance 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!
Review Change Request Approveand closecase Schedule and assignwork Verifychanges Makechanges Submit ChangeRequest RUP’s change process
The change process in development projects User release1.0 Internal release Internal release Development project
Mapping the change process to maintenance projects Make criticalchanges Makeotherchanges Construction Elaboration Review Change Request Approveand closecase Schedule and assignwork Verifychanges Makechanges Transition Inception
Review Change Request Schedule and assignwork Mapping the change process to maintenance projects Make criticalchanges Makeotherchanges Construction Elaboration Approveand closecase Verifychanges Makechanges Transition Inception
Build an architectural prototype Requirements Set up and plan project, identify scope and risks Design Implementation Business Case Project Plan Risk List Inception Inception phase Initiate a new maintenance project
Make criticalchanges Makeotherchanges Construction Elaboration Makechanges Mapping the change process to maintenance projects Review Change Request Approveand closecase Schedule and assignwork Verifychanges Transition Inception
Modify the architecture and build for some change request Build for some more of a change request Build for some more of a change request Elaboration and Construction phases Rework Rework Construction Elaboration
Approveand closecase Verifychanges Mapping the change process to maintenance projects Make criticalchanges Makeotherchanges Construction Elaboration Review Change Request Schedule and assignwork Makechanges Transition Inception
Minor updates and corrections due to user tests Requirements Finalize and end the maintenance project Release to customer Design Implementation User release Final build Transition phase 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 SteeringGroup Maintenance Manager Maintenance CCB Maintenance Team Maintenance Organization
Change Requests Maintenance Manager Maintenance CCB Maintenance SteeringGroup Project Manager Project Manager Project Team Project Team Operating the maintenance organization Maintenance Manager Unplanned work UnplannedWork MaintenanceProject MaintenanceProject Maintenance Team
CR CR CR CR CR CR CR CR CR CR CR CR CR CR CR Enhancements Complex Maintenance projects Categorizing and prioritizing change requests CR CR CR CR CR CR CR CR CR CR CR CR CR CR CR CR CR Corrective Adaptive Perfective Unplanned work
MaintenanceProjectTeam MaintenanceTeam Review Change Request Approveand closecase Schedule and assignwork Verifychanges Makechanges Submit ChangeRequest Maintenance RUP Using RUP’s change management process Standard RUP Project Team Member ProjectManager ProjectManager ProjectCCB Developers Testers MaintenanceManager MaintenanceManager MaintenanceCCB Testers Stakeholder
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 themaintenance process Setup themaintenanceorganization Determinetool support Prepareto 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]