Software Development Life Cycle Models

1.  WaterFall   (presumes perfect foresight)      2.  Incremental  (delayed prototypes)      3.  Rapid Prototyping  (elicit user feedback)      4.  Operational Specification  (executable)      5.  Transformational Implementation (lab only) increasingly  operational  views
Ref.: William Agresti          New Paradigms of Software                      Development  (IEEE tutorial)  Software Development Life Cycle Models           Paul C. Jorgensen

The Waterfall Model
Requirements  Specification Preliminary  Design Detailed  Design Coding Unit  Testing Integration  Testing System  Testing

Output of a phase is the  input to the next phase

Software Development Life Cycle Models

          Paul C. Jorgensen

The Waterfall Model
Requirements  Specification what

how

Preliminary  Design

Feedback Cycles
what Detailed  Design

how

what

how

Coding Unit  Testing Integration  Testing System  Testing

Software Development Life Cycle Models

          Paul C. Jorgensen

The Waterfall Model
Levels of Abstraction and Testing

Requirements  Specification Preliminary  Design Detailed  Design Coding Unit  Testing Integration  Testing

System  Testing

Software Development Life Cycle Models

          Paul C. Jorgensen

The Waterfall Model
Advantages    1.  Framework fits well with                ­ levels of abstraction                ­ levels of management                ­ programming language packaging    2.  Phases have clearly defined end products    3.  Convenient for project management    4.  Works well with Functional Decomposition    5.  Massive parallel development

Software Development Life Cycle Models

          Paul C. Jorgensen

The Waterfall Model
Disadvantages    1.  "Requires perfect foresight"  ­­ William Agresti         any errors,  omissions in early phases will propagate    2.  Long customer feedback cycle               resolving faults found during system testing is        extremely expensive    3.   "Exists for the convenience of management"  ­­ M. Jackson          stifles creativity and unnecessarily constraints designer's       thought processes    4.   Stresses analysis to the exclusion of synthesis    5.   High peak in manpower loading profile

Software Development Life Cycle Models

          Paul C. Jorgensen

Error Avalanche
Errors are introduced at each phase, and are propagated to the successor  phase.  Inherited  errors are amplified, and new errors are introduced. Requirements Correct Erroneous Design Correct Code Correct Requirements  Erroneous Faults Design  Requirements  Faults Erroneous Faults

The end result is… Correct  Behavior Corrected   Faults Known  Uncorrected Unknown  Faults

Software Development Life Cycle Models

          Paul C. Jorgensen

Defect Amplification
Development Step Defects Defects from  previous stage Defects Passed Through Amplified defects 1:x Newly generated defects Detection Percent  efficiency for   fault  detection

Defects propagated   to next stage

IBM Corporation  "Implementing Software Inspections"  IBM system Sciences Institute, 1981

Software Development Life Cycle Models

          Paul C. Jorgensen

Preliminary  Design 0 0 10 0% 10 Preliminary  Design 0 0 10 3 70% Detailed  Design 6 6 25 0% 37 Coding &  Unit Test 10 81 20% 25 x = 3

6 4

Effect of Reviews on  Defect Amplification
10 27

x = 1.5

Detailed  Design 2 2 1.5 50% 1 25 5 x = 1.5 15

94

10

Coding &  Unit Test 5 30 60% 25 x = 3 24

Integration  Test 0 0 50% 0 47 Integration  Test 0 0 50% 0 12

Validation  Test 0 0 0 50% System  Test 0 0 0 50% 12

24 Validation  Test 0 0 0 50%

Hypothetical example from  Roger S. Pressman  Software Engineering: A Practitioner's Approach   McGraw­Hill  3rd Edition 1992

System  Test 6 0 0 0 50% 3

Software Development Life Cycle Models

          Paul C. Jorgensen

Relative  Cost 100 50 20 10 5 2 1.0 0.5 0.2 0.1 Requirements

Fault Resolution Costs
Median, TRW Survey IBM (SDD) GTE (AEL) *

Barry Boehm  Software Engineering Economics

Design

Code

Dev. Test

Acceptance

Operation
          Paul C. Jorgensen

Software Development Life Cycle Models

Waterfall Model Variations
1.  Incremental Development         Preliminary Design divides project into a series of "loads"        or "builds"          Massive manpower build­up is reduced          Early loads provide early feedback    2.  Evolutionary Development (Spiral Model)         Similar to Incremental Development, except build contents       are chosen  based on user's evaluation and cost margins    3.  Reuse         Increment contents are determined by reusable components

Software Development Life Cycle Models

          Paul C. Jorgensen

Incremental Software Development
Requirements  Specification Detailed  Design Coding Unit  Testing Integration  Testing Regression  Testing Progression  Testing Preliminary  Design Series of  Builds

Software Development Life Cycle Models

          Paul C. Jorgensen

Rapid Prototyping Software Development
Series of  Prototypes Preliminary  Design Detailed  Design Coding Unit  Testing Integration  Testing System  Testing
Software Development Life Cycle Models           Paul C. Jorgensen

Define  Prototype  Objectives

Build  Prototype

Customer  Feedback

Rapid Prototyping
Why  prototype?             1.   To determine feasibility             2.   To obtain early customer feedback    Keep or dispose?              To be rapid, many compromises are made.            If a prototype is kept, it will be extremely            difficult to modify and maintain.              Best practice:  dispose once purpose has            been served.

Software Development Life Cycle Models

          Paul C. Jorgensen

 Software Development with an Executable Specification
Requirements  Specification Preliminary  Design Detailed  Design Coding Unit  Testing Integration  Testing System  Testing Customer  Feedback Develop  executable  specification execute  spec

Software Development Life Cycle Models

          Paul C. Jorgensen

Operational Specification
Why  use an executable specification?             1.   To determine behavior             2.   To obtain early customer feedback    Other uses?              1.  Automatic generation of system test cases.              2.   Develop order of test case execution              3.  Training              4.   Early analysis

Software Development Life Cycle Models

          Paul C. Jorgensen

Transformational Implementation
Formal  Requirements  Specification Series of  Transformations Working   System Customer  Testing

Requirements  Specification

System  Testing

Software Development Life Cycle Models

          Paul C. Jorgensen

Transformational Specification Pros and Cons
Advantages:    1.  Intermediate Waterfall phases (design, code, test) are       eliminated.    2.  Customer tests delivered system.    3.  All maintenance is done on specification    Disadvantages:    1.  Specification must be very formal (predicate calculus)    2.  Series of transformations is not well understood; tends       to be specific to application domains.    3.  Very limited success so far.    4.  Doesn't scale up well.    5.  Knowing what to change in the formal specification is difficult.

Software Development Life Cycle Models

          Paul C. Jorgensen

Fountain Model of Object­Oriented  Software Development
System  Testing

Integration  Testing Generalization Unit Testing Object­oriented  Programming Object­oriented  Design Aggregation

Object­oriented  Analysis

Real World Requirements
Software Development Life Cycle Models           Paul C. Jorgensen

7 Principles of Project Management •    •    •    •    •    •    •  No Secrets  No Surprises  No Politics  No Distractions  No Confusion  No Waste  No Illusions
T. J. Rodgers, William Taylor, and Rick Foreman  No Excuses Management:  Proven Systems for Starting  Fast, Growing Quickly, and Surviving Hard Times   New York, Doubleday, 1992

Software Development Life Cycle Models

          Paul C. Jorgensen

Sign up to vote on this title
UsefulNot useful