Evolutionary, prototyping and spiral models

The evolutionary model

The evolutionary model is a combination of the Iterative and Incremental models of the software development life cycle. Delivering your system in a big bang release, delivering it in incremental process over time is the action done in this model. Some initial requirements and architecture envisioning need to be done. It is better for software products that have their feature sets redefined during development because of user feedback and other factors.

Application of evolutionary model

  1. It is used in large projects where you can easily find modules for incremental implementation. Evolutionary model is commonly used when the customer wants to start using the core features instead of waiting for the full software.

  2. Evolutionary model is also used in object oriented software development because the system can be easily portioned into units in terms of objects.

Necessary conditions for implementing this model

  1. Customer needs are clear and been explained in deep to the developer team.

  2. There might be small changes required in separate parts but not a major change.

  3. As it requires time, so there must be some time left for the market constraints.

  4. Risk is high and continuous targets to achieve and report to customer repeatedly.

  5. It is used when working on a technology is new and requires time to learn.

Advantages evolutionary model

  1. Adaptability to changing requirements: Evolutionary models work effectively in projects when the requirements are ambiguous or change often. They support adjustments and flexibility along the course of development.

  2. Early and gradual distribution: Functional components or prototypes can be delivered early thanks to incremental development. Faster user satisfaction and feedback may result from this.

  3. User commentary and involvement: Evolutionary models place a strong emphasis on ongoing user input and participation. This guarantees that the software offered closely matches the needs and expectations of the user.

  4. Improved handling of difficult projects: Big, complex tasks can be effectively managed with the help of evolutionary models. The development process is made simpler by segmenting the project into smaller, easier-to-manage portions.

Disadvantages evolutionary model

  1. Communication difficulties: Evolutionary models require constant cooperation and communication. The strategy may be less effective if there are gaps in communication or if team members are spread out geographically.

  2. Dependence on an expert group: A knowledgeable and experienced group that can quickly adjust to changes is needed for evolutionary models. Teams lacking experience may find it difficult to handle these model’s dynamic nature.

  3. Increasing management complexity: Complexity can be introduced by organizing and managing several increments or iterations, particularly in large projects. In order to guarantee integration and synchronization, good project management is needed.

  4. Greater initial expenditure: As evolutionary models necessitate continual testing, user feedback and prototyping, they may come with a greater starting cost. This may be a problem for projects that have limited funding.

Prototype

In prototyping model initially the requirement gathering is done Developer and customer defines: overall objectives, identity areas needing, more requirement gathering then a quick design is prepared this design represents what will be visible to user -in input and output format → when working prototype is built, developer use existing program fragments or program generators, to throw away the prototype, and rebuild the system to high quality.A detailed software development flowchart starting from Requirements to Operation and Maintenance. It includes phases like Quick Design, Implementation, Customer Evaluation with satisfaction feedback loop, Design, Unit Testing, System Testing, and final deployment.

Steps of prototyping model

Step 1: Requirement gathering
This is the initial step in designing a prototype model. In this phase, users are asked about what they expect or what they want from the system.

Step 2: Quick design
This is the second step in the Prototyping Model. This model covers the basic design of the requirement through which a quick overview can be easily described.

Step 3: Implement
This step helps in building an actual prototype from the knowledge gained from prototype design.

Step 4: Customer evaluation
This step describes the preliminary testing where the investigation of the performance model occurs, as the customer will tell the strengths and weaknesses of the design, which was sent to the developer.

Step 5: Refining prototype
If any feedback is given by the user, then improving the client’s response to feedback and suggestions, the final system is approved.

Step 6: Implement product and maintain
This is the final step in the phase of the Prototyping Model where the final system is tested and distributed to production, here the program is run regularly to prevent failures.

Advantages of prototyping model

  • The customers get to see the partial product early in the life cycle. This ensures a greater level of customer satisfaction and comfort.

  • New requirements can be easily accommodated as there is scope for refinement.

  • Missing functionalities can be easily figured out.

  • Errors can be detected much earlier thereby saving a lot of effort and cost, besides enhancing the quality of the software.

  • The developed prototype can be reused by the developer for more complicated projects in the future.

  • Flexibility in design.

  • Early feedback from customers and stakeholders can help guide the development process and ensure that the final product meets their needs and expectations.

Disadvantages of the prototyping model

  • Costly concerning time as well as money.

  • There may be too much variation in requirements each time the prototype is evaluated by the customer.

  • Poor documentation due to continuously changing customer requirements.

  • It is very difficult for developers to accommodate all the changes demanded by the customer.

  • There is uncertainty in determining the number of iterations that would be required before the prototype is finally accepted by the customer.

  • After seeing an early prototype, the customers sometimes demand the actual product to be delivered soon.

  • Developers in a hurry to build prototypes may end up with sub-optimal solutions.

The spiral model

The Spiral Model is one of the most important Software Development Life Cycle models. The Spiral Model is a combination of the waterfall model and the iterative model. It provides support for risk handling. The Spiral Model was first proposed by Barry Boehm.Spiral Model diagram illustrating iterative software development. The spiral is divided into four color-coded quadrants: Planning with a calendar icon, Risk Analysis with a warning icon, Engineering (Design & Development) with a wrench icon, and Evaluation with a checklist icon. Arrows indicate the clockwise flow from project start at the center to final product at the outer edge.

Each phase of the spiral model is divided into four quadrants

1. Objectives determination and identify alternative solutions
Requirements are gathered from the customers and the objectives are identified, elaborated, and analyzed at the start of every phase. Then alternative solutions possible for the phase are proposed in this quadrant.

2. Identify and resolve risks
During the second quadrant, all the possible solutions are evaluated to select the best possible solution. Then the risks associated with that solution are identified and the risks are resolved using the best possible strategy. At the end of this quadrant, the prototype is built for the best possible solution.

3. Develop the next version of the product
During the third quadrant, the identified features are developed and verified through testing. At the end of the third quadrant, the next version of the software is available.

4. Review and plan for the next phase
In the fourth quadrant, the customers evaluate the so-far developed version of the software. In the end, planning for the next phase is started.

Advantages of the spiral model

  1. Risk handling: The projects with many unknown risks that occur as the development proceeds, in that case, Spiral Model is the best development model to follow due to the risk analysis and risk handling at every phase.

  2. Good for large projects: It is recommended to use the Spiral Model in large and complex projects.

  3. Flexibility in requirements: Change requests in the requirements at a later phase can be incorporated accurately by using this model.

  4. Customer satisfaction: Customers can see the development of the product at the early phase of the software development and thus, they habituated with the system by using it before completion of the total product.

  5. Iterative and incremental approach: The Spiral Model provides an iterative and incremental approach to software development, allowing for flexibility and adaptability in response to changing requirements or unexpected events.

Disadvantages of the spiral model

  1. Complex: The Spiral Model is much more complex than other SDLC models.

  2. Expensive: Spiral Model is not suitable for small projects as it is expensive.

  3. Too much dependability on risk analysis: The successful completion of the project is very much dependent on risk analysis. Without very highly experienced experts, it is going to be a failure to develop a project using this model.

  4. Difficulty in time management: As the number of phases is unknown at the start of the project, time estimation is very difficult.

  5. Complexity: The Spiral Model can be complex, as it involves multiple iterations of the software development process.