Coursify

SOFTWARE ENGINEERING

Classes of User Requirements: Enduring and Volatile

This section covers the classification of user requirements into enduring and volatile categories and shows how each type affects system design, maintenance, and change management.

Learning Goals

  • Define enduring requirements and volatile requirements with appropriate examples.
  • Classify a list of requirements into enduring and volatile categories.
  • Explain how volatile requirements influence project planning, change control, and iteration.
  • Analyze the impact of enduring requirements on long-term system architecture and stability.
  • Recommend documentation or review strategies suitable for managing volatile requirements.

In Requirements Engineering, managing change is one of the most critical challenges facing software developers. Requirements are rarely static; instead, they evolve as the system is designed, developed, and deployed . To manage this evolution, software engineers classify requirements based on their stability over time.

Requirements are broadly categorized into two main classes:

  1. Enduring Requirements: Core requirements that are relatively stable and derive from the principal domain of the customer organization .
  2. Volatile Requirements: Dynamic requirements that are likely to change during the system development process or after the system has become operational .

Understanding the distinction between these two classes is fundamental to designing a resilient Software Architecture that can accommodate change without costly redesigns.

Footnotes

  1. Requirements volatility is the core problem of software engineering - Stack Overflow - Discusses the impact of requirements changes on project management, agile iterations, and system stability.

  2. Software Engineering Requirements Management Study (SE 27) - Covers the core concepts of enduring vs volatile requirements.

  3. Enduring and volatile requirements - Software Engineering book - Outlines mutable, emergent, consequential, and compatibility subclasses.

Requirements Engineering - Georgia Tech

Deep Dive: Enduring vs. Volatile Requirements

1. Enduring Requirements

Enduring Requirements are directly related to the core activity of the organization . Because they represent the fundamental business model, they remain stable throughout the software lifecycle.

  • Example: In a hospital billing system, the requirement that "a patient record must exist before generating an invoice" is enduring. The core activity of treating and billing patients does not change, regardless of the technology used.
  • Architectural Impact: Enduring requirements dictate the core entity model and database schema. Because they are highly stable, developers can build the foundational architecture around them with minimal risk of redesign.

2. Volatile Requirements

Volatile Requirements are temporary, evolving, or subject to external forces. Software engineers subdivide volatile requirements into four distinct types :

  • Mutable Requirements: Requirements that change because of changes to the environment in which the organization is operating . For example, a change in national tax laws requires an update to the system's tax calculation modules.
  • Emergent Requirements: Requirements that emerge as the customer's understanding of the system develops during development . Stakeholders often cannot fully visualize system behaviors until they interact with prototypes.
  • Consequential Requirements: Requirements that result from the introduction of the computer system . Installing a new system changes user workflows, which in turn generates new requirements to support the updated business processes.
  • Compatibility Requirements: Requirements that depend on the physical or logical environment of the system . For instance, compatibility requirements change when an external database engine or a third-party payment gateway API updates its version interface.

Calculating Requirements Volatility

To quantify project risk, project managers calculate the Requirements Volatility Index (ViV_i) over a specific time window :

Vi=Na+Nm+NdNtotalV_i = \frac{N_a + N_m + N_d}{N_{total}}

where:

  • NaN_a is the number of requirements added.
  • NmN_m is the number of requirements modified.
  • NdN_d is the number of requirements deleted.
  • NtotalN_{total} is the total number of requirements in the baseline.

A high value of ViV_i (e.g., Vi>0.30V_i > 0.30) indicates that a module is unstable and requires flexible, modular software patterns to isolate changes.

Footnotes

  1. Software Engineering Requirements Management Study (SE 27) - Covers the core concepts of enduring vs volatile requirements.

  2. Enduring and volatile requirements - Software Engineering book - Outlines mutable, emergent, consequential, and compatibility subclasses. 2 3 4 5

  3. Software Change Management - INFLIBNET - Explains change control boards, baselines, and requirements metrics.

The Danger of Architectural Drift

If volatile requirements are tightly coupled with the core architecture, the system will experience 'architectural drift'. Over time, random patches and quick fixes degrade the structural integrity of the codebase, turning a clean architecture into a spaghetti-code monolith.

Volatility Rates Across Software Engineering Modules

Comparison of average requirements volatility (ViV_i expressed as a percentage) during a typical software development lifecycle.

The Requirements Change Control Process

  1. 1
    Step 1

    The stakeholder identifies a new need or modification and submits a formal Change Request. The request must specify the affected requirement ID and the business justification.

  2. 2
    Step 2

    The engineering team evaluates the proposal's effect on architecture, schedule, cost, and existing test cases. This includes calculating the change propagation using dependencies where the total cost is modeled as Ctotal=Cdev+CtestC_{total} = C_{dev} + C_{test}.

  3. 3
    Step 3

    The Change Control Board reviews the impact analysis and decides whether to approve, reject, or defer the change request based on budget, project timeline, and risk tolerance .

    Footnotes

    1. Software Change Management - INFLIBNET - Explains change control boards, baselines, and requirements metrics.

  4. 4
    Step 4

    If approved, the software design is updated, developers implement the change, and QA verifies it against updated test suites. The project baseline is updated to reflect the new system state.

Managing Requirements Volatility in Iterative Development

Initial Requirements Gathering

Phase 1: Elicitation

Identify stakeholder needs. Core domain requirements are captured, which form the bedrock of the enduring requirements list ."

Footnotes

  1. Software Engineering Requirements Management Study (SE 27) - Covers the core concepts of enduring vs volatile requirements.

Enduring vs Volatile Categorization

Phase 2: Classification

Analyze requirements to separate enduring cores from volatile elements. Stable core components are mapped directly to architectural components."

Initial Architecture and Baseline Set

Phase 3: Baselining

Establish the requirement baseline. Architectural patterns (e.g., Microservices, Hexagonal) are chosen to buffer the core code from volatile dependencies."

Volatile Requirement Adjustments

Phase 4: Iterative Refinement

As emergent and consequential requirements surface during sprints, they go through the CCB process to iteratively update the baseline ."

Footnotes

  1. Requirements volatility is the core problem of software engineering - Stack Overflow - Discusses the impact of requirements changes on project management, agile iterations, and system stability.

Review Strategy: Prototyping to Mitigate Emergence

To combat Emergent Requirements, build high-fidelity interactive mockups early in the lifecycle. Visualizing workflows reduces stakeholder misconceptions and anchors volatile needs before development begins.

Deep Architectural & Planning Strategies for Volatile Requirements

Knowledge Check

Question 1 of 4
Q1Single choice

A medical software product requires that 'patient histories must never be modified once signed by a doctor.' How should this requirement be classified?