Saturday, October 31, 2009

What are Evolutionary Models?

Evolutionary Model - Companies first would release a low-functionality version of a product to selected customers at a very early stage of development. Thereafter work would proceed in an iterative fashion, with the design allowed to evolve in response to the customers' feedback. The approach contrasts with traditional models of software development and their more sequential processes. [Source]

In the evolutionary model, each iteration follows the waterfall model in that there are requirements, software design and testing phases. After the final evolutionary step, the system enters the maintenance phase, although it can evolve again through the conventional flow, if necessary.

Difference between Evolutionary Model & Iterative Model?

Evolutionary Model differs from the iterative enhancement model in the sense that
evolutionary model does not require a usable product at the end of each cycle. In
Evolutionary development, requirements are implemented by category rather than by priority. [Source: Software Engineering & Testing: An Introduction by B. B. Agarwal, S. P. Tayal, M. Gupta]

Uses of Evolutionary Model

This model is useful for projects using new technology that is not well understood. This is also used for complex projects where all functionality must be delivered at one time, but the requirements are unstable or not well understood at the beginning. [Source: Software Engineering & Testing: An Introduction by B. B. Agarwal, S. P. Tayal, M. Gupta]

Disadvantages of using Evolutionary Models:

There may be difficulties in estimating costs and schedule when the scope and requirements are ill-defined. In addition, the overall project completion time may be greater than if the scope and requirements are established completely before design. Unfortunately, time apparently gained on the front end of a project because of early releases may be lost later because of the need for rework resulting from evolving requirements. Indeed, care must be taken to ensure that the evolving system architecture is both efficient and maintainable so that the completed system does not resemble a patchwork of afterthought add-ons.[Source]

More on Evolutionary Models

The Evolutionary Development Model for Software, its benefits, Evolutionary Development in Practice etc.
The Evolutionary Development Model for Software

Software Development: Iterative & Evolutionary - Iterative Development, Risk-Driven and Client-Driven Iterative Planning, Timeboxed Iterative Development, Evolutionary and Adaptive Development, Evolutionary Requirements Analysis, Evolutionary and Adaptive Planning etc.
Iterative & Evolutionary

Choosing Between Evolutionary, Incremental, and High-Risk Software Process Models - Summary Table for Choosing Between Evolutionary, Incremental, and High-Risk Process Models.
Summary Table for Choosing Between Models

Life Cycle and Process Models - in below PDF you will also get to know the difference between EVOLUTIONARY and INCREMENTAL MODELS of software developement.
Life Cycle and Process Models

Lifecycle Models - Kinds of Models, Choosing a Model
Lifecycle Models

Evolutionary Software Life Cycle for Self-Adapting Software Systems
Evolutionary Software Life Cycle

A Project Planning Plan, Life-cycle Models, Choosing a Life-cycle Approach
Choosing a Life-cycle Approach

The software production process
The software production process

Also See:
Comparison of Software Development Models