Essential Software Process Models and Methodologies

Software Development Processes

  • A structured set of activities required to develop a software system.
  • Many different software processes, but all involve:
    • Specification: Defining what the system should do;
    • Design and Implementation: Defining the system’s organization and implementing it;
    • Validation: Checking that it meets customer requirements;
    • Evolution: Adapting the system to changing customer needs.
  • A software process model is an abstract representation of a process, presenting a description from a particular perspective.

Software Process Descriptions

  • When describing and discussing processes, we typically focus on the activities involved, such as specifying a data model or designing a user interface, and their ordering.
  • Process descriptions may also include:
    • Products: The outcomes of a process activity;
    • Roles: The responsibilities of individuals involved in the process;
    • Pre- and Post-conditions: Statements that are true before and after a process activity is enacted or a product is produced.

Plan-Driven vs. Agile Processes

  • Plan-driven processes are those where all activities are planned in advance, and progress is measured against this predefined plan.
  • In agile processes, planning is incremental, allowing for easier adaptation to changing customer requirements.
  • In practice, most real-world processes incorporate elements of both plan-driven and agile approaches.
  • There are no inherently ‘right’ or ‘wrong’ software processes.

Key Software Process Models

  • The Waterfall Model

    • A plan-driven model with separate and distinct phases of specification and development.
  • Incremental Development

    • Specification, development, and validation are interleaved. This model can be plan-driven or agile.
  • Reuse-Oriented Software Engineering

    • The system is assembled from existing components. This approach can be plan-driven or agile.
    • Reuse Process Stages

      • Component analysis;
      • Requirements modification;
      • System design with reuse;
      • Development and integration.
  • In practice, most large systems are developed using a process that incorporates elements from all of these models.

Waterfall Model Challenges

  • The inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements.
    • Therefore, this model is only appropriate when requirements are well-understood and changes are expected to be limited during the design process.
    • Few business systems have truly stable requirements.
  • The Waterfall model is primarily used for large systems engineering projects where a system is developed across multiple sites.
    • In such circumstances, the plan-driven nature of the Waterfall model helps coordinate the work.

Incremental Development Challenges

  • The process visibility can be low.
  • The system structure tends to degrade as new increments are added.

Requirements Engineering Process

  • Feasibility Study

    • Assessing if it is technically and financially feasible to build the system.
  • Requirements Elicitation and Analysis

    • Determining what system stakeholders require or expect from the system.
  • Requirements Specification

    • Defining the requirements in detail.
  • Requirements Validation

    • Checking the validity of the requirements.

Software Design Activities

  • Architectural Design: Identifying the overall system structure, principal components (sub-systems or modules), their relationships, and distribution.
  • Interface Design: Defining the interfaces between system components.
  • Component Design: Designing the operation of each system component.
  • Database Design: Designing system data structures and their representation in a database.