Changes inevitable in all large software projects. The system requirement changes as the business procuring the system responds to external pressure and management Prerequisites changes. As a new technology becomes available New design and implementation priorities emerge Therefore, whatever software process model is used, it is essential that it can accommodate changes to the software being developed
Change adds to the cost of software development, because it is usually means the work that has been completed to be redone. This is called rework
To deal with coping with change There are mainly two related approaches that may be used to reduce the cost of rework These approaches are
Change avoidance:- Hearing change Avoidance the software process includes activities that can anticipate possible changes before significant rework is done. Several comprehensive analysis and statistical work is put together to anticipate the future possible changes that would be required in the software .for example A demo or an prototype is developed before deploying the entire software to experiment and refine the requirements specified by the client.
Change tolerance:- change tolerance involves the process where software is design so that changes can be accommodated at relatively low cost. This normally involves some form of incremental development full stock proposed changes may be implemented in an increment that have not been developed.
Now, to deal with these changes there are. Two ways to deal with coping with change and changing requirements.
These changes are
System prototyping
Incremental delivery
Now let us understand about each of these processes in detail
System prototyping:- where a version of system, or a part of system, is developed quickly to cheque the customer’s requirement and feasibility of some design decisions. This supports change avoidance as it allows users to experience with the system before delivery And so refine their requirements. The number of requirements change proposals made after delivery is therefore likely to be reduced.
A prototype is an initial version of a system used to demonstrate concepts and dry out decision options
There are several benefits of system prototyping. Some of them are:-
1. Improved system usability
2. A closer match to users real needs
3. Improved maintainability of software and design quality
4. Reduce development efforts.
Incremental delivery:- where system increments are delivered to the customer for comment and experimentation. These support both change avoidance and change tolerance. It avoids the premature commitment to requirements for the whole system and allow changes to be incorporated into later increment at relatively low cost.
There are several advantages of incremental delivery Some of them are:
Customer can use the early increment as prototypes and gain experience that informs the requirement for later system increments
Unlike prototypes, these are part of real systems, so there is no re-learning when complete system is available
Customer do not have to wait until the entire system is delivered before they can gain value from it.