Spiral Model


The spiral model is a software development approach that can be considered as a response to the drawbacks of the waterfall model. The spiral model describes the life cycle of a software by means of spirals, which are repeated until the finished product can be delivered. The spiral model is also referred to as an incremental model. The product is continually worked on and improvements often take place in very small steps.

A key feature of the spiral model is the minimization of risks in software development, which could result in an increase in overall costs, more effort, and a delayed release. These risks are countered by the incremental approach by first making prototypes, which then go through the phases of software development at least once. The spiral model is generic and can be combined with other classical and agile development methods, which is why it is also referred to as a second-order model.

General information

The spiral model was proposed by Barry W. Boehm in his essay “A Spiral Model of Software Development and Enhancement.” At this time, the prevailing waterfall model and associated drawbacks were discussed frequently. In contrast to other models such as “code and fix” or the “waterfall model,” it is risk-driven. The identification and resolution of risks plays an important role in different project spirals after the objectives and conditions have been defined. The focus is on possible factors that can cause uncertainties for the software or the entire project. If the risks can be controlled in a cost-effective way, there is nothing which prevents the successful completion of the project, according to the assumption. Approaches to minimizing these risks are, for example, prototypes, simulations, benchmark tests or interviews with users. For certain types of risks, the entire procedure can even be revised and structured differently. Management intervention is possible in every project phase and other development approaches can be adapted.

How it works

The spiral model is characterized by the following cycles (also quadrants:[1]

  • Goal and alternate determination: The objectives are determined jointly with the customer. At the same time, possible alternatives are discussed and the framework conditions get specified (for example, operating systems, environments, and programming languages).
  • Risk analysis and evaluation: Potential risks are identified and evaluated. The alternatives in question are also evaluated. The risks are recorded, assessed, and then reduced using prototypes, simulations, and analysis software. In this cycle, several prototypes exist as design templates or functional components.
  • '"Development and testing'": The prototypes are further expanded and functionalities are added. The actual code is written, tested, and migrated to a test environment several times until the software can be implemented in a productive environment.
  • Planning of the next cycle: The next cycle is planned at the end of each cycle. If errors occur, solutions are looked for, and if an alternative is a better solution, it is preferred in the next cycle.

The most important driving force of the spiral model is the risk analysis and assessment. Any risk that threatens the project should be identified from the beginning. The progress of the project is decisively dependent on how risks can be eliminated. The project is considered successful only once there are no risks. The purpose of the cycle is to produce a continuously improving product. The software or application is constantly refined. The spiral model is incremental, but not necessarily iterative. Iterations occur only when risks, errors or conflicts threaten the project. Then the product has to go through one cycle again, called an iteration.

Benefits / Disadvantages

  • The spiral model is often used for larger projects that are subject to risks. As these risks have a direct monetary impact, control of the budgets for clients and developer companies is central. The spiral model is used especially in new technical environments since these pose a risk.[2]
  • Conflicts between the requirements for a software and its design are effectively avoided by the cyclic approach, since the requirements can be constantly checked and, if necessary, changed.[3]
  • Feedback can be obtained from users, developers, and clients at early project phases. However, this structure also necessitates management, which has the cycles of the product in view and can respond promptly to risks. The control of such projects is therefore relatively complex and also requires a good documentation so that all changes are recorded.
  • Although the software is tested under various aspects during the development and testing cycle (unit, acceptance and integration test), it often happens that prototypes get transferred to the production system. There is therefore a risk that other errors and conceptual inconsistencies will be entered into the later end product.
  • In places where decisions are made about the following cycles, there is a risk that loops will form and the project will take longer if wrong decisions are made. For this reason, the alternatives and their evaluation are important.

Relevance to programming

In contrast to a sequential model (for example, the waterfall model) arranged in successive phases, the spiral model sketches the life cycle of a software by means of spirals that have to be run through. Thus, this approach resembles prototyping more than is the case with classical approaches. The spiral model is supposed to avoid the disadvantages of other models and emphasize the advantages. By focusing on minimizing risk, this model has a financial component that can be relevant to decision-makers. By means of customer discussions, analyses, and feasibility studies, large-scale projects can be implemented and their economic impact can be monitored. To what extent agile methods like scrum, extreme programming or DevOps are better choices depend on many different factors such as project scope, budget or the required level of support and maintenance. The more flexibility is required, the more agile methods will be considered.

References

  1. A Spiral Model of Software Development and Enhancement csse.usc.edu. Accessed on 07/28/2016
  2. SDLC - Spiral Model tutorialspoint.com. Accessed on 07/28/2016
  3. What is Spiral model- advantages, disadvantages and when to use it? istqbexamcertification.com. Accessed on 07/28/2016

Web Links