Featured

Evolutionary Development Process Model

Evolutionary Development Process 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. Evolutionary development is based on the idea of developing an initial implementation, exposing this to user comment and refining it through many versions until an adequate system has been developed (Figure ev.01). Specification, development and validation activities are interleaved rather than separate, with rapid feedback across activities.

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:
  1. 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.
  2. 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.
An evolutionary approach to software development is often more effective than the waterfall approach in producing systems that meet the immediate needs of customers. The advantage of a software process that is based on an evolutionary approach is that the specification can be developed incrementally. As users develop a better understanding of their problem, this can be reflected in the software system. However, from an engineering and management perspective, the evolutionary approach has two problems:
  1. 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.
  2. 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.
For large systems, recommend a mixed process that incorporates the best features of the waterfall and the evolutionary development models. This may involve developing a throwaway prototype using an evolutionary approach to resolve uncertainties in the system specification. You can then reimplement the system using a more structured approach.
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.




www.CodeNirvana.in

Copyright © Computer Science | Blogger Templates | Designed By Code Nirvana