-1

I need to check my understanding regarding the spiral process model as it is confusing me.

According to my understanding, the spiral model is similar to the waterfall model with the activities as follows:

  1. Requirements analysis
  2. design
  3. implementation
  4. testing

But in each phase we do the following: Firstly we just do a risk analysis in which we discover and solve risks, then we implement this phase (whether it is a requirement analysis phase or design phase and so on) then we plan for the next phase.

Is my understanding right?

1
  • I'd say no, your understanding isn't right. Read en.wikipedia.org/wiki/Spiral_model. Spiral is a risk-driven meta-process where "choices based on a project's risks generate an appropriate process model for the project. Thus, the incremental, waterfall, prototyping, and other process models are special cases of the spiral model that fit the risk patterns of certain projects." Feb 15, 2020 at 21:46

1 Answer 1

3

Instead of wikipedia and the original article from Boehm, I propose to you a quote from an article about a NASA case study in using the spiral model of software development:

The spiral model of software development offers a flexible, risk-driven approach to developing software that can often match the reality of a project better than document-driven models such as the classic waterfall. Rather than prescribing a specific set of activities and development stages through which to progress, the spiral empowers a development team to select the most appropriate path given the current goals, constraints, and risks. Thus, a lifecycle based on the spiral will naturally support incremental development as well as other paradigms.

First of all, the spiral shows an iterative process, in which each cycle produces a new "prototype" that refines the knowledge about the requirements and the product design. This iterative process is not necessarily incremental. Originally, Boehm advocated for the principle of "build twice" introduced by Royce in his paper about improving the waterfall model. In practice, a "prototype" could however lead to an increment rather than a throw-away prototype, especially in later iterations.

Risk-driven means that the goal is to reduce the biggest uncertainty early. The spiral has not a clear end, so the iterations continue until the product is mature and robust.

Each iteration goes through four stages:

  1. Determine objectives: What is to be done in the current iteration and in which timeframe. This is not so much different from a waterfall in which you would start with a SOW and a plan.
  2. Identify and resolve risks: Here it is very different from waterfall because it's not necessarily about requirements, but about uncertainty. So you may of course start with some initial requirements, but in a subsequent iteration, it could be about the architecture's capability to support high volumes, or the way to check the completeness of the functionality to meet the expectations, or any other risk that is identified. Depending on the objectives, you'll conduct some studies, analyses or designs to address the risks.
  3. Development and test: Obvious.
  4. Plan the next iteration: First the results of the current iteration need to be evaluated: One should assess if they meet the objectives, and understand what needs to be done next.

The spiral model thus allows for progressive elaboration: You do not need to know the product in detail at the start, but you may progressively discover the needed details. It is not document oriented, and so is very different from traditional "write requirement", "specify design", "implement design". And it allows for a certain flexibility in what is to be developed and how.

The degree of flexibility explains why the spiral is called by Boehm a "process generator": The spiral is used to tailor the process to the needs of the project.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.