Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

sdlc

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?

like image 710
Ahmed Avatar asked Oct 09 '10 18:10

Ahmed


People also ask

What is the difference between incremental process model and Evolutionary process model?

In the Evolutionary model, the complete cycle of activities is repeated for each version, whereas in the Incremental model, the User Requirements Definition, System Requirements Definition, and System Design/Architecture activities are factored out of the sequence of incremental deliveries and occur only once, at the ...

What are the differences between an iterative and an incremental process model for software development?

Incremental Incremental development is a development approach that slices the product into fully working slices that are called increments. Iterative development is when teams gradually build up the features and functions but don't wait until each of these is complete before releasing.

Is spiral model an Evolutionary process model?

The spiral model, initially proposed by Boehm, is an evolutionary software process model that couples the iterative feature of prototyping with the controlled and systematic aspects of the linear sequential model. It implements the potential for rapid development of new versions of the software.

What is the difference between spiral model and prototyping model?

A prototype model is a software development model in which a prototype is built, tested, and then refined as per customer needs. The spiral model is a risk-driven software development model and is made with features of incremental, waterfall, or evolutionary prototyping models.


2 Answers

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

  • Iterative and Incremental Development: A Brief History - Craig Larman, Victor R. Basili (June 2003)
  • Software Development: Iterative & Evolutionary - Craig Larman
  • Incremental versus iterative development - Alistair Cockburn
  • Iterative and incremental development
  • Software development process
  • T. Gilb, Software Metrics, Little, Brown, and Co., 1976 (out of print).
  • B. Boehm, “A Spiral Model of Software Development and Enhancement,” Proc. Int’l Workshop Software Process and Software Environments, ACM Press, 1985; also in ACM Software Eng. Notes, Aug. 1986, pp. 22-42.
like image 76
Pascal Thivent Avatar answered Sep 22 '22 06:09

Pascal Thivent


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.

like image 39
CesarGon Avatar answered Sep 20 '22 06:09

CesarGon