This approach is based on the
idea of rapidly developing an initial software implementation from
very abstract specifications and
modifying this according to your appraisal. Each program version inherits the
best features from earlier versions. Each
version is refined based upon feedback from yourself to produce a system which
satisfies your needs. At this point the system may be delivered or it may be
re-implemented using a more structured approach to enhance robustness and maintainability.
and validation activities are concurrent with strong feedback between each.
There are two types
of evolutionary development :
Here the objective of the process is to work with you to explore their requirements
and deliver a final system. The development starts with the better understood
components of the system. The software evolves by adding new features as
they are proposed.
Here the purpose of the evolutionary development process is to understand
your requirements and thus develop a better requirements definition for the
system. The prototype concentrates on experimenting with those components
of the requirements which are poorly understood.
This is the only method appropriate for situations where a detailed system specification
is unavailable. Effective in rapidly producing small systems, software with
short life spans, and developing sub-components of larger systems.
It is difficult to measure progress and produce documentation reflecting every
version of the system as it evolves. This paradigm usually results in badly
structured programs due to continual code modification. Production of good quality
software using this method requires highly skilled and motivated programmers.