Table of contents


1. Software Development Methodology

2. Structured Systems Development

2.1. Waterfall Development Methodology

2.1.1. Advantages

2.1.2. Disadvantages

2.2. Parallel Development Methodology

2.2.1. Advantages

2.2.2. Disadvantages

3. Rapid Application Development

3.1. Iterative Development Methodology

3.1.1. Advantage

3.1.2. Disadvantage

3.2. System Prototyping Development Methodology

3.2.1. Advantages

3.2.2. Disadvantages

3.3. Throwaway Prototyping Development Methodology

3.3.1. Advantages

3.3.2. Disadvantages

4. Spiral development methodology

4.1. Quadrant 1: Planning

4.2. Quadrant 2: Risk Analysis

4.3. Quadrant 3: Development & Test

4.4. Quadrant 4: Evaluation

4.5. Advantages

4.6. Disadvantages

4.7. When spiral is good to use

5. Summary


Ability to develop systems

Waterfall

Parallel

Iterative

System

Prototyping

Throwaway

Prototyping

Spiral

With unclear user requirements

Poor

Poor

Good

Excellent

Excellent

Excellent

With unfamiliar technology

Poor

Poor

Good

Poor

Excellent

Excellent

That are complex

Good

Good

Good

Poor

Excellent

Excellent

That are reliable

Good

Good

Good

Poor

Excellent

Excellent

With a short time schedule

Poor

Good

Excellent

Excellent

Good

Poor

With schedule visibility

Poor

Poor

Excellent

Excellent

Good

Poor

1. Software Development Methodology

  1. Methodology: A formalized approach to implementing the SDLC

-> A series of steps to perform and deliverables to produce

  1. Methodology Sources
  1. 1.Internally developed by organizations
  2. 2.Consulting firms
  3. 3.Software vendors
  4. 4.Government agencies

2. Structured Systems Development

  1. Based upon SDLC
  2. Assumes a project phase is complete before moving to the next phase

1.  Waterfall Development

2.  Parallel Development

3.V-model

  1. Goal – doing each phase thoroughly before moving forward ensures correct and high-quality outcomes

2.1. Waterfall Development Methodology

  1. Move from phase to phase
  2. Emphasis on deliverables from one phase flowing into the next phase
  3. Originates in the manufacturing and construction industries
  4. Is a systematic and sequential approach towards software development.
  5. Follows the phases of SDLC in a Sequence.
  6. Each phase begins or originates only after the previous phase has finished.
  7. Highly structured physical environments in which after-the-fact changes are prohibitively costly, if not impossible.

2.1.1. Advantages

  1. System requirements identified long before construction begins
  2. Requirements are “frozen” as project proceeds – no moving targets allowed

2.1.2. Disadvantages

  1. Must wait a long time before there is “visible” evidence of the new system
  2. Takes a long time from start to finish

2.2. Parallel Development Methodology

  1. Subdivide the project into subprojects that can be worked on at the same time.
  2. Reduce the overall project length

2.2.1. Advantages

  1. Reduces overall project time (compared to Waterfall)
  2. Reduces the need for rework; with shorter time frame, less chance of requirements changing

2.2.2. Disadvantages

  1. Creating sub projects requires careful design decisions
  2. Integrating subprojects at the end can be complex and difficult

3. Rapid Application Development

  1. Incorporate special techniques and tools:

1)  JAD sessions

2) Visual programming languages

3) Code generators

  1. Goal – get some portion of system developed quickly and in the users’ hands
  2. Three RAD Approaches

1. Iterative development

2. System Prototyping

3. Throw-away prototyping

3.1. Iterative Development Methodology

  1. A series of versions developed sequentially

3.1.1. Advantage

  1. Users get a system to use quickly
  2. Users identify additional needs for later versions based on real experiences with current version

3.1.2. Disadvantage

  1. Users faced with using an incomplete system for a time
  2. Users must be patient and wait for fully-functional system

3.2. System Prototyping Development Methodology

  1. Create prototype (model) of system and “grow” it into the final system

3.2.1. Advantages

  1. Users get to work with prototype very quickly
  2. Feedback cycles let users identify changes and refine real requirements

3.2.2. Disadvantages

  1. Superficial analysis may cause problems
  2. Initial design decisions may be poor
  3. Overlooked features may be hard to add later

3.3. Throwaway Prototyping Development Methodology

  1. Adds  emphasis on experimenting with design options before design is finalized
  2. Design options are thrown-away, but learning from them is factored into final design

3.3.1. Advantages

  1. Uncertainty is minimized
  2. Important issues are understood before building the final system

3.3.2. Disadvantages

  1. May take longer (compared to system prototyping)

4. Spiral development methodology

  1. Is a model introduced by Barry Boehm in 1986.
  2. Combines iterative and prototype development with the systematic, controlled aspects of the waterfall model.
  3. A very high emphasis on risk analysis

4.1. Quadrant 1: Planning

  1. Determine objectives, alternatives, and constraints.

4.2. Quadrant 2: Risk Analysis

  1.  Evaluate alternatives, identify, resolve risks.

4.3. Quadrant 3: Development & Test

  1. Develop, verify, next-level product.

4.4. Quadrant 4: Evaluation

  1. Analyze feedback and plan next phases.

4.5. Advantages

  1. Focus on risk analysis.
  2. Good for large and mission critical projects
  3. A working software is produced early
  4. The design does not have to be perfect
  5. Early and frequent feedback from users
  6. Cumulative costs assessed frequently

4.6. Disadvantages

  1. Can be a costly model to use.
  2. Risk analysis requires expertise.
  3. Success is highly dependent on the risk analysis phase.
  4. Doesn’t work well for smaller projects.

4.7. When spiral is good to use

  1. For medium to high-risk projects
  2. New technology to be used
  3. Complex, constantly changing and continuous Requirements
  4. Significant changes are expected (research and exploration)
  5. Users are unsure of their need

5. Summary

  1. There are many different Software Development Methodologies
  2. It is important to select the methodology before starting the project
  3. Select the best methodology based on the project characteristics