Software Testing - Software Process

Objectives

After completion of this chapter you will be able to:

Understand what is process and its importance
Explain the purpose of software process
Understand different software process models

o    Waterfall model
o    Prototype model
o    Iterative enhancement model
o    Spiral model
 

The software process is a becoming a big issue for companies that produce software. As a consequence, the software process is becoming more and more important for permanent employees, long-term practitioners, and short-term consultant in the software industry.
A process may be defined as a method of doing or producing something. Extending this to the specific case of software, we can say that a software process is a method of developing or producing software

The Importance of Process

So it is important for each organization to define the process for a project. At its most basic, this means simply to write it down. Writing it down specifies the various items that must be produced and the order in which they should be produced: from plans to requirements to documentation to the finished source code. It says where they should be kept, and how they should be checked, and what to do with them when the project is over. It may not be much of a process. However, once you have written it down, it is a defined process.

Effectiveness
Not to be confused with efficiency. An effective process must help us produce the right product. It doesn't matter how elegant and well-written the software, nor how quickly we have produced it.
Maintainability
However good the programmer, things will still go wrong with the software. Requirements often change between versions. In any case, we may want to reuse elements of the software in other products.

Predictability
Any new product development needs to be planned, and those plans are used as the basis for allocating resources: both time and people. It is important to predict accurately how long it will take to develop the product
 

Repeatability
If a process is discovered to work, it should be replicated in future projects. Ad-hoc processes are rarely replicable unless the same team is working on the new project.
 

Quality
Quality in this case may be defined as the product's fitness for its purpose. One goal of a defined process is to enable software engineers to ensure a high quality product.
 

Uses of Development Process Models
A development process is a set of activities, which are performed according to specified order to get the desired output. It is an abstract representation of a development process.
 

Following are the important uses of these models:
As a means to organize, plan, staff, budget & schedule and manage software projects.
As a perspective outline of the required set of documents to be produced.
As a basis for determining which software engineering tools and methodologies will be most appropriate.