Introduction
Software products are built using software engineering practices, which are applied within the context of a defined software process. The quality of the software process influences the quality of the product. A better process is more likely to result in high-quality products.Each software project is different; therefore, it is important to have a good software process to produce a high-quality product. In order to continually improve the quality of its products, an organization must continuously improve its processes.
In this section, you will get an overview of the importance of software process improvement.
The software process
In every software project, a process is used to develop software. The process represents the approach to software work and is the framework that the project team uses for planning, managing, and executing the project. The process used for a project may be a mature and effective process or it may be ad hoc, haphazard, ill-defined, and/or inappropriate. The existence of a process is not in itself sufficient. To be effective for building quality products, the process must be:
- Appropriate for the work to be performed
- Adopted by the people doing the work and applied consistently by all the members of a project team
If the process used is inappropriate, poorly defined, or not followed by those who do the software work, the resultant product may be of low quality.
Defining a software process
A software process is based on a software process model that defines the overall flow and the philosophy of the process.Some organizations develop a common process framework (CPF) that defines the framework activities and umbrella activities applicable to all the software projects regardless of project type or size. Each framework and umbrella activity is further detailed into 'task sets' that define the work tasks, the work products produced, the quality assurance (QA) checkpoints and the project milestones achieved throughout the process. The CPF establishes a foundation for the creation of high-quality software and acts as a generic framework that is adapted by each project team for defining its software process.
Whether the definition of the software process for a project is arrived at by adapting a CPF, or is developed afresh, it should be suitable for the project and should aim at building a high-quality product by following good software engineering practices.
Introducing processes
Once the software processes are defined, they need to be implemented successfully in an organization.It is important to start with the implementation of simple processes that are practical and easy to understand because people take time to adjust to the use of processes. Complex and elaborate processes could be burdensome and discourage people from using processes.
After ensuring basic process discipline, the processes should be improved to produce better-quality products. Process improvement means making processes more effective. It is not synonymous with increased complexity and volume. Instead, it simplifies a process that is too cumbersome or impractical.
Need for process improvement
Now that you have some idea about processes, let us discuss the need to improve processes.Processes should be assessed to find out how effective they are in producing high-quality software. They need to be improved continuously so that the quality of the products also keeps improving.
Organizations also need to improve processes to cater to the changing business environment, the technology, and customer expectations and needs. This enables them to continue building products that meet customer requirements. If processes remain static, they will not suffice in the face of the changes happening all around.
Making processes mature
Process improvement aims at making processes more 'mature'. If software engineering is to be adopted by an organization, a mature software process must be developed and implemented throughout all the software projects.
In a qualitative sense, the term, mature means that the process:
- Is appropriate for the work to be performed
- Addresses the best practices in software engineering
- Results in a high-quality product
- Is documented so that all the staff members have access to it
- Is understood and accepted by all people doing software work
- Makes projects easier to manage and control
Objectives of process improvement
Virtually every process can be improved. Each process element can be 'tuned' to cope with the changing requirements to help produce better-quality products. The objective of process improvement is to:
- Eliminate problem areas
- Improve efficiency and flow
- Eliminate redundancy and unnecessary work
- Increase the level of acceptance and usage
- Improve the elements that make up the process
Process improvement requires a cultural change, which is never easy in any organization. Therefore, process improvement is often resisted when it is introduced and also when it is in-progress.
Let us look at some of the approaches that organizations follow for process improvement.
Process improvement approaches
Organizations vary in the way they perceive the need for process improvement and in the way they address this need. The approaches used can be broadly categorized as given below.
- The denial approach
- The dictatorship approach
- The chaos approach
- The common sense approach
Let us now discuss each of the above-mentioned approaches.
The denial approach
In the denial approach, the organization simply denies the fact that any improvement is needed!In such an organization, the management feels that everything is going fine and nothing really needs to change. This ostrich-like behavior of burying the head in the ground ensures that there is status quo in the organization.
An organization that follows the denial approach is unable to adapt to the changing business environment and customer requirements. Therefore, it starts facing severe problems.
The dictatorship approach
In this approach, a senior manager decides that things will change and specifies them by using authority. The software engineers are expected to do whatever the senior manager specifies because of the authority wielded by the manager.This approach is usually unsuccessful because ultimately, the changes have to be made by the software engineers. They often resist imposed changes, which results in the failure of the approach.
The chaos approach
In some organizations, the best way to affect change is to allow the software engineers to decide and implement the changes themselves.While this approach may work at times, it can also lead to chaos. For example, the engineers may assume that all the problems being faced can be solved by the use of new technologies. Based on this belief, they take a 'ready-fire-aim' approach to the acquisition and implementation of new technologies. However, new technologies are not always the best solution to process-related problems.
In the chaos approach, once a new technology is acquired and implemented, it is usually difficult to revert or re-orient the process as once you 'pull the trigger', it is difficult to redirect the bullet.
The common sense approach
This is a practical and systematic approach that involves all the people within the organization and results in effective process improvement. A common sense approach to process improvement does not rock the boat or cause trouble.The software engineers are often overworked and under-appreciated. Introducing changes in the existing processes requires a cultural shift. This means that any improvement of the software engineering processes must be introduced in a manner that provides immediate benefit and does not appear as additional work
Identifying process improvement areas
Process improvement is driven by past experience. Here are some questions that help to understand the effectiveness of existing processes and identify the process improvements that are required.
- What quality problems have been encountered in recent projects?
- What kind of feedback is being received from customers?
- What do software engineers and managers have to say about the current processes? What do they like? What do they dislike?
- What cost and schedule issues have been encountered in recent projects?
- What metrics have been collected and what do they indicate about the processes?
- Which of the software engineering activities and tasks have worked well, and which of them have been problematic?
- Which work products provide short-term or long-term benefits? Which don't?
- Are the existing processes being followed uniformly across all projects?
- Can project managers control projects well using the existing process?
Cyclical Model for Software Process Improvement
Introduction
In order to build high-quality software products, it is necessary to use processes that are mature and capable. It is, therefore, important to know how to improve software processes so that the quality of the products can be improved.Software process improvement is an on-going iterative process, because improvement is always possible.
Successful process improvement requires organizational commitment, resources, and a planned and systematic approach.
In this section, we will discuss a generic model for process improvement, which is cyclical in nature and has six steps.
Process improvement
Process improvement is cyclical because it is a continuous and ongoing process. For example, we check the current state of a process based on what we require. Then, we make some improvement in the process and evaluate whether the new process is effective. This set of activities can be repeated on an ongoing basis, resulting in continuous improvement. Typically, each improvement cycle aims at a small chunk of improvement that will be accepted by the people within the organization comfortably and will take the organization a step forward. For a major improvement or change, many such incremental improvement steps are required.
There are various models available for process improvement, all addressing the same set of activities. However, the models may have different steps.
Let us look at the steps involved in the generic model for process improvement.
The six-step generic cyclical model for process improvement
There are six steps in the generic model for process improvement. These are as listed below.
1. Process assessment: Understanding where we are
2. Education: Educating people to sell the idea and imparting the required skills
3. Selection: Selecting suitable processes, methods, and tools
4. Justification: Justifying the cost and effort required for process improvement
5. Installation: Performing the process improvement activities
6. Evaluation: Evaluating the effectiveness of the improved process
Let us understand each of these steps in detail.
Process assessment
The first step in the generic model for process improvement is process assessment. Process assessment is necessary because it helps us understand where the organization stands with regard to its processes and helps us assess which areas in its processes need improvement. Process assessment focuses on both strengths and weaknesses in the existing processes. While deciding on the improvements, areas of weakness are prioritized. Improvement efforts are focused on areas with the highest immediate priority. In many cases, improvement efforts build on existing strengths.
Assessment can be likened to taking a 'look in the mirror'— to do an objective examination of a process and to understand its strengths and weaknesses. The assessment gives an indication of the process maturity of the organization and provides the basis for developing the process improvement plan.
Process maturity gives an indication of how good or mature a process is. Software Engineering Institute (SEI) defines software process maturity as 'the extent to which a specific process is explicitly defined, managed, measured, controlled, and effective'. Let us listen to an explanation and understand what this statement implies.
Our intent is to examine the existing software process, to determine where strengths and weaknesses lie, and from them, to develop an effective process improvement plan. First stage, process assessment, should be an objective examination of the current state of software development or software engineering practices. It should, unquestionably, be an indication of where you are strong and where you are weak, both in process issues and in technology issues. It will, if properly conducted, give you an indication of your software engineering process maturity, and finally, it is, in effect, a start towards developing an effective process improvement plan. It is not a goal in and of itself. Software process assessment is an effective start, and when done properly, it often leads to a definition of what is called software process maturity.
Process assessment models
Process assessment is done using a model. The choice of the model depends on what the organization wants to achieve internally as well as what it needs to show to its customers in terms of process capability. Process capability gives an indication of what to expect from the process.The model selected should be one that gives the organization sufficient input for future actions. It should be relevant and understandable. If the demonstration of process capability to customers is important, the model chosen should be one that the customers understand and value.
A useful model for performing process assessment is Software Engineering Institute's Software Capability Maturity Model® (Software CMM®). The model has five maturity levels that represent different stages of process maturity. Another model that can be used for process assessment is, ISO 9001:2000.
Process assessment report
The outcome of process assessment is the preparation of an 'assessment report', containing the following items.
- Findings: These are the direct factual findings associated with the existing process and are derived using means such as questionnaires, meeting with software engineering teams, and assessment of software work products.
- Impact: This is the impact of the findings on project work, product quality, and overall team activities. Impact is assessed for each finding and the person assessing it must have significant experience in software engineering.
- Recommendations: These are actions suggested to address the findings, and thereby, improve the process. They are often stated in a form that later translates into a process improvement plan.
Levels of process assessment report
The assessment report is valuable because it is very useful for planning the future actions for process improvement. The report is often presented at two levels as given below.
- Summary findings: The summary findings rate the overall process maturity of the organization. Depending on the model used, this rating could be a simple pass or fail as used in ISO 9001:2000 or it could be a grading such as the five grades of the maturity levels in Software Engineering Institute's CMM®.
0 comments:
Post a Comment