Software Development Process Models

Steven J Zeil:

Last modified: Mar 11, 2014

1. Software Development Process Models

The process by which an organization develops software.

1.1 Common Activities

  1. Recognition of problem / need / opportunity
  2. Feasibility study
  3. Analysis of requirements
  4. Design of system
  5. Implementation
  6. Testing
  7. Deployment
  8. Maintenance

SDPMs will divide these activities among phases in different ways

Analysis of Requirements

Common Documents from Requirements Analysis

We’ll look at requirements in more detail in a later section.

Design

Derive a solution which satisfies the software requirements.

Commonly recognized subproblems include


A possible breakdown of design activities

Maintenance

2. The Waterfall Model

The waterfall model gets its name from the fact that the first diagrams of this process illustrated it as a series of terraces over which a stream flowed, cascading down from one level to another. The point of this portrayal was that water always flows downhill -{} it can’t reverse itself. Similarly, the defining characteristic of the waterfall model is the irreversible forward progress from phase to phase.

2.1 Verification & Validation

Verification & Validation: assuring that a software system meets the users’ needs.

The principle objectives are:


What’s the Difference?


Testing

Industry figures of 1–3 faults per 100 statements are quite common.

2.2 Testing throughout the Waterfall

Testing stages

Not just in one phase

Although the waterfall model shows V&V as a separate phase near the end, we know that some forms of V&V occur much earlier.

So this phase of the waterfall model really describes system and acceptance testing.


A Still-broader View

Even the “V&V V” does not capture the full context of V&V:

2.3 Advantages of Waterfall

2.4 Disadvantages of Waterfall

3. Iterative/Incremental Development

As a counter-reaction to what many believe to be an overly rigid waterfall model, there are a variety of incremental approaches that emphasize quick cycles of development, usually with earlier and more user-oriented validation.

There is a greater emphasis on producing intermediate versions, each adding a small amount of additional functionality. Some of these are releases, either external (released outside the team) or internal (seen only by the team), which may have been planned earlier.


Variations

3.1 Advantages

3.2 Disadvantages

4. The Spiral Model

1986, Boehm

An iterative approach with a focus on risk management


Spiral Phases

  1. Determine objectives, alternatives and constraints:
    • Define requirements
    • Alternatives (including, e.g., 3rd-party code) identified
    • Constraints defined
  2. Identify and resolve risks, evaluate alternatives:
    • Evaluate identified alternatives
    • Identify risks
    • Resolve risks
    • Produce prototype
  3. Develop and test
    • Analyze performance of prototype
    • Create & review design, code, test
  4. Plan next iteration
    • Often includes customer evaluation of prototype or current project iteration

4.1 Advantages of Spiral Model

4.2 Disadvantages of Spiral Model

5. Rational Unified Process

1997, Jacobsen, Booch, and Rumbaugh,

These three were already some of the biggest names in OOA&D before they decided to collaborate on a unified version of their previously distinctive approaches.

5.1 Unified Model Phases


Releases

One task during Elaboration is to plan releases:

5.2 Key Concepts of the RUP

Common Workflows

For example, deep in the implementation phase of a Waterfall project, a programmer is assigned a function to implement.

That programmer will

But we aren’t in the analysis, design, or validation phases.


ADIV

In the RUP, all progress is made as continual ADIV cycles

An Evolution of Models

RUP supports development via a series of models.

The most important of these are


Models Evolved

RUP embraces the

Object-Oriented philosophy

5.3 Advantages of RUP

5.4 Disadvantages of RUP

6. Agile Methods

A modern variant of incremental development.

Emphasis on

6.1 Agile Development is

6.2 Variations

We’ll look at these in more detail after covering some of the “best practices” assumed in both.