Software Process Improvement Steps
This blogpost discusses steps for Software process improvement. Software process improvement is a set of activities that software development organizations apply in a systematic way on their development and organizational processes to yield several benefits, for example improved productivity, reduced development cycle time, higher returns on investment, reduced time to market, and increased market visibility etc. For software processes, usually the improvement tasks are performed as per the recommendations of standards, such as Capability Maturity Model Integration (CMMI) and ISO / IEC 15504, which is also called Software Processes Improvement and Capability dEtermination (SPICE) or a few other. It is important to mention that these models are the reference models and describe the practices that software development companies should follow to improve their development processes.
Organizations with sufficient financial resources definitely have the option to uplift their existing processes according to the guidelines of the abovementioned models. However, for smaller organizations with limited resources (financial, human, infrastructure), following the EXTENSIVELY prescribed activities in the Key Process Areas (KPA) of the heavyweight models is not possible practically. So, does it mean that such organizations cannot opt for process improvement or put it another way, the CMMI or other models are for the resourceful organizations only? Definitely, not. Lack of resources should not be considered as a barrier by these small-scale software organizations. The question is what they should do in that case. The simple answer is that these organizations should improve their existing processes as much as they can, for example by internally defining the work procedures that more than one person in the organization. In the limited resources, this could be the first step toward improvement and to the level of that organization, the processes are streamlined. This way the small organizations do not even need to worry about non-compliance with the reference models. In fact, improving the processes is important to achieve certain goals and objectives rather than getting recognized as CMM compliant organization, which definitely is good discriminator when performing the competitor analysis but should not be the ultimate goal.
Regardless of the scale and size of the software development organization, this is a universally accepted fact that to increase the productivity and achieve other goals, organizations need to invest continuous efforts. Remember, there is no quick fix for this. Instead, this is a continuous activity that may take years for the organizations to realize the benefits of improvement actions.
Steps for Software Process Improvement
Generally, you may see different terminologies for the activities for software process improvement; however, that really does not make any difference what we term that activity. Instead, what is important is to perform the activities. Below are the generic steps for software process improvement.
1. Gap analysis
The first step an organization needs to take is to perform the gap analysis. Gap analysis is an activity that highlights the differences between the practices adopted by an organization and the standard guidelines introduced by the reference models, for example CMMI. It is important to reiterate that it is not mandatory to perform the comparison with the CMMI or any widely accepted standard. Rather, any set of practices that has proven its effectiveness can be considered by the organizations for the comparisons. The outcome of the gap analysis activity is the limitations or weaknesses in the organizational practices and this activity actually serves as the catalyst for process improvement because now the organizations know where they lack and can head toward improvement.
2. Process definition
After the gap analysis has been performed and the organization knows how its processes differ from the standard, the next step is process definition. By process definition we mean that the existing processes need to be revised to overcome the limitations identified during the gap analysis. In other words, this activity requires organizations to define how a certain task or procedure is to be performed in the organization. For example, defining or improving the procedures to be followed in the organization for configuration management and change management would make it mandatory for all the employees to follow the revised or improved procedures in future for these tasks. Off course, arrangement or procurement of the resources and infrastructure for process improvement is a necessary step in process improvement that is not included here while discussing the improvement tasks because of its by default importance.
3. Process implementation or process deployment
Once the new processes are defined, it’s the time for process implementation. Process implementation is also termed as process deployment. In process deployment, the newly defined or improved process is deployed in the organization. The deployment strategies include: (i) incremental deployment and (ii) big bang deployment of the processes. In incremental deployment, the new process is not rolled out throughout the organization. Instead, the process is implemented at a small-scale, for example it can be applied at only one project initially and if the results are encouraging, then it can be deployed organization wide. In the big bang deployment, as the name implies, the new process is implemented throughout the organization. Which process deployment alternative to go for is a question that depends on the intricacy of the processes and certain other factors, for example the resources available to the organization and the complexity of the particular domain.
4.Process measurement or assessment
After the process is deployed, completely or partially, it is recommended to let it execute for a certain period of time and then measure its effectiveness. The process has to be measured in terms of its ability to achieve goals and for that, the evaluation metrices are defined. This evaluation also helps in providing the feedback about the process so that it can be revised and improved. Based on the feedback, the process is revised such that the vulnerabilities identified during the assessment phase exist no more. This activity continues until the organization achieves its defined objectives.
It is important to mention that once the software organizations have achieved their desired objectives, they need to continue the best practices that caused improvement. Moreover, continuous assessment of organizational processes even if the desired objectives have been achieved is also to be performed to ensure that the processes in the organizations are being performed in the appropriate and defined way.
Read about software process improvement blog.