The next model that we will discuss is the spiral
model, which was first described by Barry Boehm, which is
the professor that we interviewed at the beginning of this
lesson. In his paper from 1986 that was entitled A Spiral
Model of Software Development and Enhancement. And one of the
main characteristics of that paper is that it was describing the
spiral model using a diagram, which is the one that
I'm showing you here, and this diagram has become very very
popular, and you probably saw it either in this
form or one of the many variations of the
diagram. So I'm not going to discuss all of
the details of the spiral model, but I just want to
give you an idea of its main characteristics. The
spiral model is an incremental risk-oriented lifecycle model that has
four main phases listed here: determine objectives, identify and
resolve risks, development and tests, and plan the next iteration.
A software project will go through these four phases in
an iterative way. In the first phase, the requirements will
be gathered. In the second phase, the risks and the
alternate solutions will be identified, and a prototype will be produced.
Software and tests for the software are produced in the
development and test phase, which is the third step of the
process. Finally, in the fourth phase, the output of the
project, so far, is evaluated, and the next iteration is planned.
So basically, what the spiral process prescribes is a
way of developing software by going through these phases in
an iterative way, in which we learn more and more
of the software, we identify more and more, and account
for, more and more risks and we go more
and more towards our final solution, our final release. There
are several advantages of using a spiral model. The first
one is that the extensive risk analysis does reduce the
chances of the project to fail. So there is a
risk reduction advantage. The second advantage is that functionality can be
added at a later phase because of the iterative nature of
the process. And finally, software is produced early in the software
lifecycle. So, at any iteration, we have something to show
for our development. We don't wait until the end before producing
something. And then of course there's also the advantage that we
can get early feedback from the customer about what we produced.
The main disadvantages on the other hand of
the spiral model, are that the risk analysis requires
a highly specific expertise. And unfortunately, the whole success
of the process is highly dependent on risk analysis.
So risk analysis has to be done right.
And finally the spiral model is way more complex
than other models, like for example, the water fall
model. And therefore it can be costly to implement.