12/08/2018, 16:06

Software Development Process Model - Part 1

Software Life Cycle Phases Requirements, analysis, and design phase. System design phase. Program design phase. Program implementation phase. Unit testing phase. Integration testing phase. System testing phase. System delivery. Maintenance. The software process A structured ...

Software Life Cycle Phases

  • Requirements, analysis, and design phase.
  • System design phase.
  • Program design phase.
  • Program implementation phase.
  • Unit testing phase.
  • Integration testing phase.
  • System testing phase.
  • System delivery.
  • Maintenance.

The software process

  • A structured set of activities required to develop a software system.
    • Specification
    • Design
    • Validation
    • Evolution
  • A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective.

Generic software process models

  • The waterfall or linear sequential model
    • Separate and distinct phases of specification and development
  • Prototype model
    • Requirements are not clear
  • Rapid Application Development (RAD) model
    • High speed adaptation of linear sequential model

Waterfall model

Phases:

  • Requirements analysis and definition
  • System and software design
  • Implementation and unit testing
  • Integration and system testing
  • Operation and maintenance
  • The drawback of the waterfall model is the difficulty of accommodating change after the process is underway

Problems

  • Inflexible partitioning of the project into distinct stages
  • This makes it difficult to respond to changing customer requirements
  • Therefore, this model is only appropriate when the requirements are well-understood

Prototyping Model

Prototyping Model:

  • Requirements are not clear
  • Iteration occurs as the prototype is tuned to satisfy the needs of the customer
  • Prototype serves as a mechanism for identifying software requirements

Evolutionary development

Evolutionary development:

  • Exploratory development
    • Objective is to work with customers and to evolve a final system from an initial outline specification. Should start with well-understood requirements
  • Throw-away prototyping
    • Objective is to understand the system requirements. Should start with poorly understood requirements

Problems:

  • Lack of process visibility
  • Systems are often poorly structured
  • Special skills (e.g. in languages for rapid prototyping) may be required

Applicability:

  • For small or medium-size interactive systems
  • For parts of large systems (e.g. the user interface)
  • For short-lifetime systems

Process iteration

  • System requirements ALWAYS evolve in the course of a project so process iteration where earlier stages are reworked is always part of the process for large systems.
  • Iteration can be applied to any of the generic process models.
  • Two (related) approaches
    • Incremental development
    • Spiral development

**Reference:** *Software Engineering A Practitioner's Approach (7th Ed.) ~ Roger S. Pressman*
0