Skip to main content
Our Methods

Volatility-Based Decomposition & SOLID

Encapsulate what is bound to change, and change stops breaking the system.

Home > Our Methods > Volatility-Based Decomposition & SOLID

What is a volatility?

Every software system contains areas that are certain to change during its life: a pricing rule, a regulatory constraint, a communication protocol, a data format, a third-party service. We call each such area a volatility: a software area bound to be broken when modifications are performed.

Volatilities are not exotic. They are the ordinary consequence of a business that lives in a moving market. The question is never whether these areas will change. The question is what the change will cost when it arrives, and that cost is decided by the system's decomposition, years before the change is requested.

The Shortcomings of Functional Decomposition

Nearly all software written today is decomposed by function: the requirements list is broken into features, and each feature becomes a component. It feels natural, and it is the root cause of the industry's chronic failures.

Requirements are volatile by nature

Business requirements are constantly altered by market dynamics, competitors and regulatory updates. A decomposition built on them inherits their instability: the structure of the system is coupled to the least stable thing the business owns.

Every change becomes a domino effect

When components mirror functions, one changed requirement cuts across many components at once. Each modification erodes the system's resilience, breeds regression bugs, and makes the next change harder than the last.

Cost grows until rewrite

Maintenance costs and response times follow an exponential curve as the functional structure decays, until the only remaining option is a full rewrite that writes off the entire accumulated investment.

How Volatility-Based Decomposition Works

  1. 01

    Analyze the business domain, not the requirements list

    The business domain is stable in a way the requirements list never is. From it we identify the system's Core Use Cases and extract the volatilities list.

  2. 02

    Encapsulate each volatility in a building block

    Each building block hides its allocated volatilities behind a stable interface, and together the blocks cover all aspects of the business domain. A thin Abstraction Layer enforces total separation between stable Business Logic Components and volatile external behavior.

  3. 03

    Compose features by orchestration

    A feature is an integration of existing blocks. When a requirement changes, the impact is confined to the Orchestration Layer; the core components remain insulated and untouched. New capabilities arrive in days, and the architecture itself never changes.

And What is SOLID?

SOLID is the set of five design principles that keeps each building block clean on the inside, the way Volatility-Based Decomposition keeps the system clean on the outside. We apply them strictly, as structure rather than guidelines:

  • S - Single Responsibility: a component has exactly one reason to change.
  • O - Open/Closed: components are open for extension but closed for modification; new behavior is added, existing code is never edited.
  • L - Liskov Substitution: any implementation can replace another behind the same interface without the system noticing.
  • I - Interface Segregation: interfaces stay small and specific, so no component depends on methods it does not use.
  • D - Dependency Inversion: components depend on abstractions, never on each other's concrete details. This is what lets the Orchestration Layer re-wire blocks freely.

Parnas supplies the criterion for where to draw the boundaries; SOLID supplies the discipline that keeps those boundaries intact through decades of change.

See the method applied.

Volatility-Based Decomposition is the first step of every architecture we deliver: from the volatilities list to a validated framework, a Critical Path project design, and detailed design that runs hand in hand with coding.

How We Design Software Architecture

Providing simple solutions to complex problems.

Contact Us