Summary -
In this topic, we described about the below sections -
What is Spiral Model?
The Spiral model was initially developed by Barry Boehm in 1986. A Spiral model is software development and enhancement as risk-driven and an iterative model of SDLC. Spiral model integrates the iterative model approach with waterfall model.
Spiral model is preferred for large and high-risk projects. This is the evolutionary development development model as primary and important features are defined and developed first and remaining features are added in spirals (iterations) of the project. However the the project success is depends on the risk analysis as it is highly risk-driven model. And it is not avoided because of the special risk analysis at every iteration.
The spiral model looks as a coil that has a starting point which call it as a "center" and the line that spirals shows the progress of the project development. The line that spirals outwards indicates the increase of time expenditure and effort by the developers and the project progress.
Spiral model verifies the risk periodically and identifies the solutions to minimize the risk.
When to use Spiral Model?
Spiral model uses when -
- Risk evolution and cost of the project is important.
- Risk is medium to high.
- Possible to develop the prototype of the project.
- Medium and high-risk projects.
- Long-term project commitment required.
- End-users do not have much idea about their needs.
- Requirements are not clear and complex.
- New product line.
- Significant changes are expected.
Where Spiral Model used?
Spiral model used by -
- Microsoft for start developing newer versions of windows.
- projects where software gantt chart development required.
- Game development projects.
Phases -
Entire development process is divided into four stages that are keep on repeating until the final product is developed. The phases of the spiral model are -
- Planning or Determining objectives.
- Risk analysis.
- Developing product.
- Evolution Phase.
It also provides the flexibility of adding enhancements with each iteration of the project. The evolutionary product released after completion of each cycle. This evolutionary product used as a base product for the next cycle and the features can be added in further cycles to develop the complete product.
Let us discuss about each phase in detail.
Planning or Determining Objectives –
Requirement Gathering, Cost Estimation, Resource Allocation. Requirements are collected in BRS (Business Requirements Specifications) and SRS (System Requirement Specifications) documents. Feasibility study completed, reviews and walkthroughs are conducted inorder to streamline the requirements further. Then, System requirements are understood by having a good communication between the client and system analyst. Doing so helps in estimating the cost, schedule and resource planning.
Outcome -
- Understanding and finalizes requirements.
- Estimating the cost, schedule and resource planning.
Risk Analysis Phase –
Strengths and weaknesses of the project. Identifies the risk and find alternate solutions or work to minimizes the risk. The project manager plans and finalizes the risk mitigation strategy. In the initial iteration, a prototype would be delivered to the customer. Customer executes the deployed prototype and provides feedback on the same. Based on the feedback the software development process moves to the next iteration and implements the points suggested by the customer. This process continues in the form of iterations like a spiral through out the lifecycle.
Outcome -
- A document with all the risks and its mitigation plans.
Engineering Phase –
Coding, Internal Testing and deployment. The programs are developed and integrated to form a software or a prototype. The product also tested to find any error in coding.
Outcome -
- Fully tested defect free product.
- Test cases and Test Results.
- Test Summary Report and Defect Report.
Evaluation Phase –
Client Evaluation (Client-side Testing) to get the feedback. Client evaluates the software on the first go. Client provides feedback and approval.
Advantages –
- Easy cost estimation using prototype.
- Helps in managing the risk.
- Fast development.
- Customer feedback.
- Strong approval and documentation control.
- Felxible.
- Risk handling.
- Customer satisfaction.
- Feature requests have accurate definitions.
Disadvantages –
- High cost.
- Dependant on risk analysis.
- Managing the project is a complex thing.
- Complex and huge process.
- Expensive one for small projects.
- End date of the project might not be known in the early stages.
- Suitable only for large projects.
- Complexity.
- Hard to manage.
- Time Management is complex.
- Less clarity on the final stage of the product.
- Spiral may outrun the expected no of iterations.
- Have to hire more number of resources for risk analysis.