Implementing a new process in a software development organization can be described in six steps (see Figure 17-1). [2]
Figure 17-1. The steps to implement a new software development process
Step 1: Assess the Current State.You need to understand the current state of the software development organization in terms of its people, process, and supporting tools. You should also identify problems and potential areas for improvement as well as collect information about outside issues such as competitors and market trends. When this step is complete, you should know the following:
Why should you assess the current state? Consider the following reasons:
It is important to understand the project's level of management complexity and level of technical complexity. The more stakeholders the project has and the bigger the project, the higher the level of ceremony that is needed. More artifacts must be produced, communicated, explained, reviewed, and approved. The higher the level of technical complexity, the more effort that must be put into maintaining the artifacts and tracking the status of the project (see Figure 17-2). Figure 17-2. Systems classified according to technical and managerial complexity
Step 2: Set (or Revise) Goals.The second step is to set goals for the process, people, and tools, noting where you want to be when the process implementation project is complete. You set up goals for the following reasons:
The result should be a list of measurable goals that are expressed so that they can be understood by project members . The goals can serve as a vision of the future state of the organization. Step 3: Identify Risks.To succeed in implementing a new process, you must control the many risks involved. We recommend that you perform a risk analysis in which you identify possible risks, try to understand their impact, and then rank them. You should also plan how you will mitigate the risks and in what order (as described in Chapter 7). Switching from a linear process to an iterative process is not a risk-free undertaking. Software development organizations using an iterative approach for the first time may fall into several traps, including the following:
Step 4: Plan the Process Implementation.You should develop a plan for implementing the process and the tools in the organization. This plan should describe how to move efficiently from the current state of the organization to the goal state. Do not try to do everything at once. Instead, divide the implementation into a number of increments, and for each one, implement a portion of the new process with the supporting tools. Typically, you should focus on one of the areas where you believe the change will have the most impact. If the software development organization is weak in testing, you might start by introducing the test discipline of the Rational Unified Process with tools to automate testing. If, on the other hand, the organization is weak in capturing or managing requirements, you might start by introducing the Requirements discipline with its supporting tools. There are different approaches to implementing a process. The one you choose depends on two things:
We give examples of two approaches:
In the typical approach ( illustrated in Figure 17-3), you first implement the process in a Pilot Project. In an initial step you configure the process and describe it in a Development Case. You use the process on the Pilot Project. Experience from the Pilot Project is fed back into the Development Case. Figure 17-3. The "typical" approach to implementing a process and tools
The process is then considered tested , or verified , and can be rolled out to a broader audience. As a Pilot Project you might use one of the following:
This approach is the most effective way to introduce the process and tools. The fast approach (illustrated in Figure 17-4) is to use the process and tools directly in actual projects without first verifying that they work in a Pilot Project. This approach introduces a greater risk of failure, but there can be good reasons for taking these risks. For example, if the current process is very similar to the Rational Unified Process and if the tools are already used in the organization, it may be relatively easy and low-risk to implement the new process and tools. Figure 17-4. The "fast" approach to implementing a process and tools
Make sure that you have chosen the right people to participate in the Pilot Project because they will pass the message on to the rest of the organization. Some of them will play important roles as mentors when the process is implemented in the rest of the organization. Step 5: Execute the Process Implementation.The most time-consuming step in implementing a process is to execute it according to the plan defined in step 4. Step 5 includes the following tasks:
Step 6: Evaluate the Process Implementation.When you have implemented the process and tools in a software development project, actual or pilot, you must evaluate the effort. Did you achieve the goals you established? Evaluate the people, the process, and the tools to understand which areas to focus on when you start again from step 1. |