Figure ev.01 Evolutionary Development Process Model
In the Evolutionary Model, development engineering effort is made first to establish correct, precise requirement definitions and system scope, as agreed by all the users across the organization. This is achieved through application of iterative processes to evolve a system most suited to the given circumstances. The process is iterative as the software engineer goes through a repetitive process of requirement called Analysis-Design-Testing through Prototype-Implementation-Assessment-Evaluation until all users and stakeholders are satisfied. There are two fundamental types of evolutionary development:
- Exploratory development where the objective of the process is to work with the customer to explore their requirements and deliver a final system. The development starts with the parts of the system that are understood. The system evolves by adding new features proposed by the customer.
- Throwaway prototyping where the objective of the evolutionary development process is to understand the customer’s requirements and hence develop a better requirements definition for the system. The prototype concentrates on experimenting with the customer requirements that are poorly understood.
- The process is not visible Managers need regular deliverables to measure progress. If systems are developed quickly, it is not cost-effective to produce documents that reflect every version of the system.
- Systems are often poorly structured Continual change tends to corrupt the software structure. Incorporating software changes becomes increasingly difficult and costly.
For small and medium-sized systems (up to 500,000 lines of code), that the evolutionary approach is the best approach to development. The problems of evolutionary development become particularly acute for large, complex, long-lifetime systems, where different teams develop different parts of the system. It is difficult to establish a stable system architecture using this approach, which makes it hard to integrate contributions from the teams.
This approach interleaves the activities of specification, development and validation. An initial system is rapidly developed from abstract specifications. This is then refined with customer input to produce a system that satisfies the customer’s needs . The various reasons why there exists a need for an evolutionary model include:
- Business and product requirements often change as development proceeds.
- Tight market deadlines make completion of a comprehensive software product impossible but a limited version must be introduced to meet competitive and business pressures.
- A set of core product or system requirements is well understood, but the details of product or system extensions have yet to be defined.
Parts of the system that are well understood can be specified and developed using a waterfall-based process. Other parts of the system, such as the user interface, which are difficult to specify in advance, should always be developed using an exploratory programming approach.
Related Posts :
Software Development Life Cycle
Software Development Process
Waterfall Model
Agile Model
Prototyping Model
Iterative Model
Spiral Model
Software Development Life Cycle
Software Development Process
Waterfall Model
Agile Model
Prototyping Model
Iterative Model
Spiral Model