The process that deals with the technical and management issues of software development is called a software process. A software development project must have at least development activities and project management activities. The fundamental objectives of a process are the same as that of software engineering (after all, the process is the main vehicle of satisfying the software engineering objectives), viz. optimality and scalability.
Optimality means that the process should be able to produce high-quality software at low cost, and scalability means that it should also be applicable for large software projects. To achieve these objectives, a process should have some properties. Predictability of a process determines how accurately the outcome of following a process in a project can be predicted before the project is completed. Predictability can be considered a fundamental property of any process, In fact, if a process is not predictable, it is of limited use.
One of the important objectives of the development project should be to produce software that is easy to maintain. And the process should be such that it ensures this maintainability. Testing consumes the most resources during development. Underestimating the testing effort often causes the planners to allocate insufficient resources for testing, which, in turn, results in unreliable software or schedule slippage.
The goal of the process should not be to reduce the effort of design and coding, but to reduce the cost of maintenance. Both testing and maintenance depend heavily on the design and coding of software, and these costs can be considerably reduced if the software is designed and coded to make testing and maintenance easier. Hence, during the early phases of the development process the prime issues should be “can it be easily tested” and “can it be easily modified”. Errors can occur at any stage during development.
However error detection and correction should be a continuous process that is done throughout software development. Detecting errors soon after they have been introduced is clearly an objective that should be supported by the process. A process is also not a static entity.
As the productivity (and hence the cost of a project) and quality are determined largely by the process to satisfy the engineering objectives of quality improvement and cost reduction, the software process must be improved. Having process improvement as a basic goal of the software process implies that the software process used is such that is supports its improvement.