This article discusses the definition and objectives of software process improvement. Often, we hear that a certain software development organization was not able to complete its project within the allocated budget, missed the delivery deadline, or the product quality is compromised. The apparent candidate reasons for the aforementioned issues are the technical capabilities of an organization in successfully implementing the desired software functions as well as the managerial aspects that deal with effectively executing the planned activities to complete the development tasks. The literature analysis and examination of software development practices in software companies reveals that the causes due to which organizations fail to meet the project schedules, exceed the budgets, or poor quality are managerial instead of technical. To clarify, it is not being portrayed here that the technical capabilities of the software development teams are insignificant during the development process. Yes, they are important, and it is assumed by default that a software organization working for its clients possesses sufficient technical capabilities and is well versed with the recent development technologies. Therefore, there is no question on the technical skills of the organizations but it’s the processes or approaches that are followed to perform their day-to-day activities. Hence, the organizations need to improve their software development processes to enhance the productivity and quality of the products. In fact, there is a strong relationship between the quality of the product and the quality of the process being followed for its development. A high-quality process always yields a high-quality product. Therefore, the processes for the development of software need to be improved and strengthened to enhance the quality of the software products.
Software Process Improvement Definition
Software Process Improvement is a concept that urges software organizations to: (i) analyze their development processes for identifying the weaknesses, (ii) define and implement the processes to overcome the limitations, and (iii) monitor and measure the process to achieve certain goals and objectives. In other words, application of systematic approaches to identify the limitations and redefine the existing software development processes to achieve certain objectives is called software process improvement. The improvement process is a medium to long-term activity where a process is expected to execute for a certain period of time before it actually establishes its effectiveness.
Software Process Improvement Objectives
Process improvement helps software organizations achieve the following objectives.
- Quality Improvement—process improvement helps organizations improve the quality of the software products. If the organizational processes are well-defined and applied rigorously, the quality of the resulting products is also expected to be high.
- Increased Productivity—well-defined processes help software organizations increase their productivity. For example, if an organization performs appropriate planning and tracking of its development activities, it automatically gains a better control over the processes and can make adjustments accordingly to meet the specific objectives, for example meeting the project delivery deadlines, completing the projects within the allocated budgets, and avoiding budget supplements. Consequently, the productivity in terms of getting or moving to the new projects timely and reduced prospects of budget overruns is increased.
- Competitive Advantage—organizations with defined and systematic processes have better prospects for gaining competitive advantages over their competitors. For example, in a particular call for proposals by the client, if it is specified that only Capability Maturity Model (CMM) Level 3 compliant organizations are eligible to submit a bid for a certain project, then definitely the organizations with CMM Level 3 compliant processes will have better prospects of winning the tender because the other organizations will be automatically filtered out due to the requirement imposed by the client organization.
- Gaining High Return on Investment (ROI)—investing the efforts and resources in process improvement brings high ROI for the software organizations because defining the systematic approaches to perform a task enhances organizational productivity.
Software Process Improvement Example
Here we try to understand the process improvement paradigm with the help of an example. We assume that the requirement engineering processes of an organization are not streamlined and consequently, the related activities, such as requirements elicitation, specification, analysis, and validation are performed in an ad hoc and non-standardized way. Hence, there is a high likelihood that the organization will face certain issues, for example changes in the software requirements, unclear, inconsistent, unfeasible, ambiguous, and incomplete requirements. Actually, such types of work practices are strictly against the guidelines of standards like CMM.
The CMM has a complete Key Process Area (KPA) for Requirement Management which suggests following a systematic approach for each activity related to requirements. For example, according to CMM there should be a dedicated resource who is responsible for documenting and managing the requirements. Also, the supporting tools for example, templates are recommended to be used by the CMM to effectively obtain the details from the clients and to document the requirements. Moreover, another important activity that CMM recommends is regarding finalizing the requirements. During the finalizing process of requirements, all the stakeholders, such as the representatives of the client side and the development side, for example requirement engineers, architects, programmers, testers, and project managers engage in a meeting to analyse, validate, and finalize the requirements through consensus. Once everyone agrees, the requirements are finalized, and these finalized requirements are also called the baselined requirements.
A benefit of baselining the requirements is that now the requirements cannot be changed without following an appropriate procedure where the impact of that requirement on the project’s schedule and cost, resources, and architecture is analysed before accepting the requirement or changing the scope. Therefore, putting a standard procedure in place for requirements change management hinders the unnecessary change requests; consequently, saving lots of resources and efforts required for rework. Similarly, during requirement verification and validation it is also verified that the requirements contain their basic attributes, such as completeness, consistency, testability, unambiguity, correctness. This activity also results in significant time saving because if it is determined at a later stage, for example during the testing phase that a certain requirement is not complete or the users during the acceptance testing phase point out that the functionalities implemented are not a true representation of their requirements, then off course this is the most undesirable situation for the software team because now they will have to rework in order to fix the issues. Ultimately, this will affect not only the schedule and budget of the current project but the other projects that the team is working on or is going to work as fixing the issues again demands significant efforts from the team.
The steps and activities to be performed in the software process improvement will be discussed in another article. In conclusion, investing the efforts and financial resources in software process improvement activities not only brings high returns on investments for the software organizations but also improves the quality of the products.