What's the difference between incremental software process model, evolutionary model, and the spiral model?
Asked Answered
R

3

18

I am studying Software Engineering this year and I am little confused about the question in the title.

Both of my professor and the reference ("Software Engineering A Practitioner Approach") differentiates the three titles as different models. However, I can't see obvious difference as their methodologies look the same to me but using different statements to define them. I feel that practically they all represent the same process model.

Can anybody explain the different models better?

Rodie answered 9/10, 2010 at 18:26 Comment(0)
B
16

Craig Larman wrote extensively on this topic and I suggest his famous paper Iterative and Incremental Development: A Brief History (PDF) and his book Agile and Iterative Development: A Manager's Guide.

Here is how I would summarize things:

Incremental Development

Incremental Development is a practice where the system functionalities are sliced into increments (small portions). In each increment, a vertical slice of functionality is delivered by going through all the activities of the software development process, from the requirements to the deployment.

Incremental Development (adding) is often used together with Iterative Development (redo) in software development. This is referred to as Iterative and Incremental Development (IID).

Evolutionary method

The terms evolution and evolutionary have been introduced by Tom Gilb in his book Software Metrics published in 1976 where he wrote about EVO, his practice of IID (perhaps the oldest). Evolutionary development focuses on early delivery of high value to stakeholders and on obtaining and utilizing feedback from stakeholders.

In Software Development: Iterative & Evolutionary, Craig Larman puts it like this:

Evolutionary iterative development implies that the requirements, plan, estimates, and solution evolve or are refined over the course of the iterations, rather than fully defined and “frozen” in a major up-front specification effort before the development iterations begin. Evolutionary methods are consistent with the pattern of unpredictable discovery and change in new product development.

And then discusses further evolutionary requirements, evolutionary and adaptive planning, evolutionary delivery. Check the link.

Spiral model

The Spiral Model is another IID approach that has been formalized by Barry Boehm in the mid-1980s as an extension of the Waterfall to better support iterative development and puts a special emphasis on risk management (through iterative risk analysis).

Quoting Iterative and Incremental Development: A Brief History:

A 1985 landmark in IID publications was Barry Boehm’s “A Spiral Model of Software Development and Enhancement” (although the more frequent citation date is 1986). The spiral model was arguably not the first case in which a team prioritized development cycles by risk: Gilb and IBM FSD had previously applied or advocated variations of this idea, for example. However, the spiral model did formalize and make prominent the risk-driven-iterations concept and the need to use a discrete step of risk assessment in each iteration.

What now?

Agile Methods are a subset of IID and evolutionary methods and are preferred nowadays.

References

Bemused answered 9/10, 2010 at 21:57 Comment(2)
And the InformIt article by Craig Larman is very informative and easy to understand .Rodie
@Rodie I'm glad you liked it too.Bemused
P
7

These concepts are usually poorly explained.

Incremental is a property of the work products (documents, models, source code, etc.), and it means that they are created little by little rather than in a single go. For example, you create a first version of your class model during requirements analysis, then augment it after UI modelling, and then you even extend it more during detailed design.

Evolutionary is a property of deliverables, i.e. work products that are delivered to the users, and in this regard it is a particular kind of "incremental". It means that whatever is delivered it is delivered as early as possible in a initial form, not fully functional, and then re-delivered every so often, each time with more and more functionality. This often implies an iterative lifecycle.

[An iterative lifecycle, but the way, refers to the tasks that you carry out (as opposed to "incremental", which refers to the products; this is the view adopted by SEMAT), and it means that you perform tasks of the same type over and over. For example, in an iterative lifecycle you would find yourself doing design, then coding, then unit testing, then release, and then again the same things, over and over. Please note that iterative and incremental do not imply each other; any combination of both is possible.]

The spiral model for lifecycles is a model proposed by Barry Boehm that combines aspects of waterfall with innovative advances such as an iterative approach and built-in quality control.

For the concepts of "work product", "task", "lifecycle", etc. please see ISO/IEC 24744.

Hope this helps.

Purine answered 9/10, 2010 at 18:32 Comment(7)
I understand incremental as a model not a property that looks like that 1.bp.blogspot.com/__1WQBOnqoI8/S4S5Jn-kvzI/AAAAAAAAAgU/… Where you do the same steps again and again, So I am more confused now .Rodie
Well, "incremental" is an adjective that you may apply to many things. In the context of software engineering, it is usually applied to methodologies, and it means that (as I said in my answer) the work products being generated are so in little increments, rather than in a big-bang fashion. Is this clearer now? The "incremental model" that you mention simply means "a way to design methods so that they are incremental".Purine
By work products you mean the whole Software ? What is the difference between work products and deliverables ?Rodie
I explain that in my answer: a deliverable is a work product that is delivered to the users. Many other work products are never delivered; think of intermediate models, documents, diagrams, notes, unit tests, etc.Purine
And work product means an artefact that is used or generated by the process being carried out. Usually this means documents, models, code, etc. I suggest you have a look at ISO/IEC 24744 for definitions of these terms.Purine
It's clearer now and I see what you mean but I still don't see a difference between incremental mode and evolutionary model as they both have an iterative life cycle and are designed to be incremental .Rodie
Incremental and evolutionary are different because evolutionary only refers to deliverables, whereas incremental refers to any work product, including non-deliverables. In my example above, you construct a class model incrementall, and most likely a class model is not going to be delivered to the users. In addition, neither evolutionary nor incremental need an iterative lifecycle, although it is common that they have it. Strictly speaking, you can develop products incrementally without iterating; see my example about the class model above.Purine
B
0

This is the ipsis litteris definition from ISO 24748-1:2016 (Systems and Software Engineering Life Cycle Management):

There are many different development strategies that can be applied to system and software projects. Three of these strategies are summarized below:

a) Once-through. The “once-through” strategy, also called “waterfall,” consists of performing the development process a single time. Simplistically: determine user needs, define requirements, design the system, implement the system, test, fix and deliver.

b) Incremental. The “incremental” strategy determines user needs and defines the system requirements, then performs the rest of the development in a sequence of builds. The first build incorporates part of the planned capabilities, the next build adds more capabilities, and so on, until the system is complete.

c) Evolutionary. The “evolutionary” strategy also develops a system in builds but differs from the incremental strategy in acknowledging that the user need is not fully understood and all requirements cannot be defined up front. In this strategy, user needs and system requirements are partially defined up front, and then are refined in each succeeding build.

Hope this helps. Tati

Beneficial answered 28/2, 2017 at 18:53 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.