0:00

[MUSIC]

In the last lesson, I outlined some of the earliest software development processes,

linear models.

I gave you an example of two construction workers,

each trying to build a railroad with different tools.

Then compared that to choosing between different software processes.

Keep that example in mind,

as we go through this material, to remind yourself why this content is important.

1:25

In this lesson, I'm going to talk about the Spiral process model.

When the Spiral model was introduced by Barry Boehm in 1986,

it outlined a basic process for designing and implementing a software system,

by revisiting phases of the process, after they've been completed.

1:44

Before you move on, I want to warn you that some of this stuff can get technical.

If you find yourself needing clarification on a concept,

please look at the course resources for this lesson.

There, you will find references to all the content, which I will talk about here.

1:59

All right.

So this is a simplified explanation of the Spiral process model.

You can see right away why it's called Spiral model.

On a basic level, the model consists of four quadrants.

As you move through this process,

the idea is that you move from one quadrant to another.

Consider each of these four quadrants, as a phase of an iteration.

Where an iteration is, the duration of one full spiral or

all four quadrant phases, being completed one time.

Each of these phases contain activities, like Morgan defined in the first module.

In Spiral, you begin by coming up with the objectives and needs, and

generating solutions for the current iteration.

Then, you identify and assess risks, and evaluate those solutions.

You then move on to developing and testing the product in the current iteration.

Once you have a product that satisfies the objectives,

you move on to planning the next iteration.

If each quadrant is a phase of an iteration,

then once you complete an iteration, you move onto the next.

That's the basic flow associated with the Spiral model.

You gradually build up a product, by repeating the phase cycle.

For example, you might start a project in the Spiral model,

by determining the client and user requirements.

You'll then come up with potential solutions to fit those needs.

After that, you might choose to evaluate the solutions you came up with,

then you might build an initial prototype of the product, and

review what needs to be done for the next iteration, that will be one iteration.

In the next iteration,

you might start again by defining the objectives of the iteration.

Perhaps, features to be added to the prototype that you just built.

Then, you'd evaluate these features, and

move onto building the features you deem appropriate.

3:39

You then review what needs to be done for the next iteration, and

continue from there.

Until the project has been completed to your client's satisfaction.

So unlike linear models, which we described in the last lesson,

iterative models, like Spiral, tend to repeat elements of the process throughout.

4:10

Johnatan is using the Spiral model to build his software.

He has extensive experience with programming with punch cards, and

using the Waterfall model.

So Spiral iterations are a big step for him.

He just finished developing and testing his product, but

can't remember what stage of the model comes next.

4:49

Since Spiral is iterative, you loop back around and

begin determining your objectives, and refining your design again, but you

only do that after you've first planned your design, at the end of the iteration.

5:10

These are called the invariants of a Spiral model.

They were first described by Boehm, in his follow up paper,

published in the year 2000.

What's interesting about this, is that for the most part,

the invariants actually also apply to a lot of other process models, as well.

5:44

The first invariant of the Spiral model states that all work products,

of a software project, should be created concurrently, at the same time.

This may seem strange, but the basic idea is that

without defining things at the same time, you put your project at risk.

This is because with the usual method of Waterfall, doing things sequentially

means making decisions based on only a limited amount of information.

6:36

The last four invariants are pretty technical, so

I won't get into much detail.

Essentially they say this, every project implementing the Spiral model

should base the amount of time they spend on any particular activity,

on the amount of risk involved in carrying that activity out.

8:03

If you find yourself in an organization which uses the Spiral model,

it's likely that you're working on large projects,

with years of experience, data, and technical expertise, at your disposal.

8:15

So there you have it.

The Spiral model is a great example of an iterative process.

Things get done in a way that allows for

the revision of the product in certain intervals.

Like other process models, it has its disadvantages.

But it's clearly different from what we saw before, right?