Software Processes in Software Engineering

Software Process Overview

  • Definition: A structured set of activities required to develop a software system.
  • Key Activities in Software Processes:
  • Specification: Define what the system should do.
  • Design and Implementation: Define how the system will be built and subsequently develop it.
  • Validation: Ensure the software meets customer expectations and requirements.
  • Evolution: Adapt and improve the software in response to new requirements.

Types of Software Processes

  • Plan-driven Process:

  • Structured and systematic approach.

  • All activities planned in advance; progress measured against a predefined plan.

  • Agile Process:

  • Flexible and adaptive, allowing teams to respond to changing requirements.

  • Planning is incremental.

  • Combination of Approaches:

  • Most practical processes include elements of both plan-driven and agile approaches.

Software Process Models

  1. Waterfall Model
  • Plan-driven model.
  • Separate and distinct phases for specification, development, and validation.
  1. Incremental Development
  • Specification, development, and validation are interleaved.
  • May be either plan-driven or agile.
  1. Reuse-oriented Software Engineering
  • Assembles systems from existing components (COTS).
  • Can be plan-driven or agile.

Waterfall Model Details

  • Benefits:

  • Clear documentation.

  • Structured approach, better for defined requirements.

  • Well-suited for critical projects.

  • Drawbacks:

  • Inflexible to changes, late testing stage.

  • Difficult to adapt as each phase must be completed sequentially.

  • Problems:

  • Inflexibility to changing customer requirements.

  • Appropriateness for well-understood and stable requirements only.

  • Often used in large systems engineering projects.

Incremental Development

  • Benefits:
  • Lower cost for changes, faster feedback from customers, earlier delivery of functionality.
  • Easier analysis and documentation management.
  • Drawbacks:
  • Process visibility may suffer; system structure can degrade.
  • Regular documentation may not reflect rapid development changes.

Reuse-oriented Software Engineering

  • Process Stages:
  • Component analysis, requirements modification, system design with reuse, development, and integration.
  • Benefits:
  • Reduces development time, cost efficiency, improves quality, faster time to market.
  • Drawbacks:
  • Dependency on existing components, integration challenges, limited flexibility, quality variability.

The Role of Software Process Models

  • Structure: They offer a predefined approach organizing development activities.
  • Planning and Control: Helps in scheduling and controlling project progress.
  • Communication: Establishing common language among stakeholders.
  • Quality Enhancement: Ensuring adherence to standards and improving software quality.

Software Specification

  • Definition: Establish service requirements and operational constraints.
  • Processes:
  • Requirements engineering process: Feasibility studies, elicitation, specification, validation.

Software Design and Implementation

  • Activities:
  • Architectural design, interface design, component design, database design.

Software Validation and Testing

  • Verification and Validation (V&V):
  • Crucial for ensuring that the system meets specifications and customer needs.
  • Testing Stages:
  • Development testing, system testing, acceptance testing.

Software Evolution

  • Need for Evolution: Software must adapt to changing business and technology environments.
  • Coping with Change:
  • Change avoidance and change tolerance strategies.
  • Prototyping:
  • Initial versions of systems used to demonstrate concepts, validate requirements, and design UI.

Incremental Delivery

  • Benefits include earlier customer value delivery and lower project risk.
  • Issues such as identifying common requirements across increments can arise.

Boehm’s Spiral Model

  • Iterative model focusing on continuous risk assessment and resolution.

Rational Unified Process (RUP)

  • A modern generic process integrating various models: inception, elaboration, construction, and transition phases.
  • Emphasizes iterative development and managing requirements efficiently.