In this article, you will learn what is a spiral model and what are the advantages and disadvantages of this model.
So, let’s start with the spiral model definition:
The spiral model is an evolutionary software process model which is a combination of iterative nature of prototyping and controlled and systematic aspects of the traditional waterfall model.
This model was originally proposed by Boehm. It provides the potential for rapid development of incremental versions of the software.
In this model, software development takes place in a series of developed releases. In the initial stage iterations, the release or model might be a paper model or a prototype. In the later stages, a complete version of the software is produced.
A spiral model is made up of set different framework activities made by the software engineering team. Look at the following spiral model diagram:
The model is divided into some framework activities, also called task regions. Every framework activity represents one section of the spiral path. As the development process starts, the software team performs activities that are indirect by a path around the spiral model in a clockwise direction. It begins at the center of the spiral model.
Typically, there are between three and six task regions. The above figure depicts a spiral model that contains 6 task regions.
Phases of Spiral Model (Tasks Regions)
- Customer communication tasks required establishing effective communication between developer and customer.
- Planning-tasks required defining resources, timelines, and other project related information.
- Risk analysis tasks required to assess both technical and management risks.
- Engineering tasks required building one or more representations of the application.
- Construction and release tasks required to construct, test, install, and provide user support.
- Customer evaluation-tasks required to obtain customer feedback based on an evaluation of the software representations created during the engineering stage and implemented during the installation stage.
Each of the regions is populated by a set of work tasks, called a function set, which is adapted to the characteristics of the project to be undertaken. For small projects, the number of work tasks and their formality is low. For larger, more critical projects, each job region contains more work tasks that are defined to achieve a higher level of formality. In all cases, the umbrella activities, e.g. – software configuration management and software quality assurance are applied.
Advantages of the Spiral Model
A spiral model is a realistic approach to the development of large-scale systems and software. Check out some of its advantages:
1. Estimates (i.e. budget, schedule, etc.) become more realistic as work progresses because more critical issues are discovered earlier.
2. It is more able to cope with the changes that software development entails.
3. Software engineers can get their hands in and start working on a project earlier.
Disadvantages of Spiral Model
With advantages, there are also some disadvantages of the spiral model. Here are some of its disadvantages:
1. Highly customized limiting re-usability.
2. Applied differently for each application.
3. Risk of not meeting, budget or schedule.
The spiral model is mostly used in large projects. The military had adopted the spiral model for its Future Combat Systems program.
The model thus may suit small software applications and not a complicated distributed, interoperable, system of systems.
It is also reasonable to use the spiral model in projects where business goals are unstable but the architecture must be realized well enough to provide high loading and stress ability.
For example, the Spiral Architecture Driven Development is the spiral based Software Development Life Cycle (SDLC) which shows one possible way how to reduce the risk of non-effective architecture with the help of an in conjunction with the best practices from other models.
Spiral Model PPT
Hope you found the information on the spiral model helpful. Contact us for any doubts.
Learn more about different models in software engineering: