{"id":7,"date":"2026-03-13T22:42:52","date_gmt":"2026-03-13T22:42:52","guid":{"rendered":"https:\/\/harmonic-framework.com\/?page_id=7"},"modified":"2026-04-08T13:55:32","modified_gmt":"2026-04-08T18:55:32","slug":"volatility-based-decomposition","status":"publish","type":"page","link":"https:\/\/harmonic-framework.com\/es\/methodologies\/volatility-based-decomposition\/","title":{"rendered":"Volatility-Based Decomposition (VBD)"},"content":{"rendered":"<h1 class=\"wp-block-heading\">Volatility-Based Decomposition<\/h1>\n\n\n\n<p style=\"font-size:20px\">Modern software systems rarely fail because of poor initial design; they fail because change accumulates faster than the architecture can absorb it. VBD addresses this by treating change as the primary organizing force in system design.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The Core Idea<\/h2>\n\n\n\n<p>Rather than decomposing systems by domain concepts or technical layers, VBD organizes architectural boundaries around anticipated sources of volatility. Components that change for the same reason \u2014 and at the same rate \u2014 belong together. Components that change for different reasons belong apart, regardless of their current functional relationship.<\/p>\n\n\n\n<p>Business strategy evolves continuously. Markets shift. Regulations change. Organizations naturally structure themselves around functional responsibilities \u2014 Sales, Operations, Finance \u2014 and software frequently mirrors that structure. Early in a system&#8217;s life, this alignment works. Over time, tension emerges: most meaningful changes cut across functional boundaries rather than remaining contained within them. VBD addresses this mismatch by aligning architectural boundaries with change dynamics rather than organizational structure alone.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Four Axes of Volatility<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Axis<\/th><th>Description<\/th><th>Examples<\/th><\/tr><\/thead><tbody><tr><td><strong>Functional<\/strong><\/td><td>Changes in system behavior driven by evolving business needs<\/td><td>New features, modified workflows, regulatory changes<\/td><\/tr><tr><td><strong>Non-Functional<\/strong><\/td><td>Changes to system qualities<\/td><td>Performance, scalability, reliability, security<\/td><\/tr><tr><td><strong>Cross-Cutting<\/strong><\/td><td>Changes spanning multiple components<\/td><td>Logging, monitoring, authentication, error handling<\/td><\/tr><tr><td><strong>Environmental<\/strong><\/td><td>Changes to infrastructure and external systems<\/td><td>Database migrations, vendor APIs, hosting platforms<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Component Roles: What, How, Where, With What<\/h2>\n\n\n\n<p>VBD assigns each volatility axis to a dedicated component role. The mental model is four questions: <strong>what<\/strong> does the system do, <strong>how<\/strong> does it do it, <strong>where<\/strong> does data live, and <strong>with what<\/strong> shared capabilities. No single role contains all change. The four roles working together localize change across every axis.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Role<\/th><th>Question<\/th><th>Responsibility<\/th><\/tr><\/thead><tbody><tr><td><strong>Manager<\/strong><\/td><td>What does the system do?<\/td><td>Orchestration \u2014 workflow, sequencing, intent. Remains stable over time.<\/td><\/tr><tr><td><strong>Engine<\/strong><\/td><td>How does it do it?<\/td><td>Execution \u2014 business rules, calculations, policies. Changes most frequently.<\/td><\/tr><tr><td><strong>Resource Accessor<\/strong><\/td><td>Where does data live?<\/td><td>Integration \u2014 databases, vendors, external systems. Thin translation layer.<\/td><\/tr><tr><td><strong>Utility<\/strong><\/td><td>With what support?<\/td><td>Cross-cutting \u2014 logging, auth, monitoring, observability. No domain knowledge.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>If a unit of work decides <em>what<\/em> happens next, it belongs in a Manager. If it computes <em>how<\/em> to do it, it belongs in an Engine. If it reaches out to <em>where<\/em> data or services live, it belongs in a Resource Accessor. If it supports everything but belongs to no domain, it is a Utility.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Role Definitions<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Managers<\/h3>\n\n\n\n<p>Managers coordinate operation flow and encapsulate high-level business orchestration. They represent business intent and workflow coordination. A Manager sequences steps such as validation, pricing, fulfillment, and confirmation without embedding the business rules that perform those steps. Managers should not implement business rules, perform data aggregation, or contain persistence logic. Their responsibility is to express what the system is trying to accomplish, not how it is achieved.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Engines<\/h3>\n\n\n\n<p>Engines execute business rules, transformations, and computationally intensive operations. They encapsulate the logic most likely to change due to policy shifts, experimentation, or optimization. Engines may persist data when appropriate \u2014 they are not required to delegate all data access to Resource Accessors. They are invoked by Managers and remain unaware of the broader execution context.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Resource Accessors<\/h3>\n\n\n\n<p>Resource Accessors manage interaction with persistence layers, external systems, vendors, and infrastructure-facing resources. They isolate environmental and integration volatility from the rest of the system. Their job is translation: convert a domain request into an external call, convert the response back. They must not apply business rules or make policy decisions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Utilities<\/h3>\n\n\n\n<p>Utilities encapsulate cross-cutting concerns that apply broadly and evolve independently of business workflows. Logging, monitoring, error classification, feature flags, security primitives. They are orthogonal to core behavior and remain free of domain-specific knowledge.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Communication Rules<\/h2>\n\n\n\n<p>The communication rules enforce clean volatility boundaries. It is the coordination between roles that captures volatility, not individual roles in isolation. The principle: <strong>state flows downward, results propagate upward, horizontal coordination is prohibited.<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Managers invoke Engines and Resource Accessors directly<\/li>\n<li>Managers communicate with other Managers only through asynchronous, fire-and-forget mechanisms<\/li>\n<li>Engines must not call sibling Engines \u2014 the Manager composes instead<\/li>\n<li>Engines may call Resource Accessors for reference data or persistence<\/li>\n<li>Resource Accessors must not call Engines or other Accessors<\/li>\n<li>Utilities are consumed by any role but never coordinate<\/li>\n<li>Managers must not perform heavy computation<\/li>\n<li>Only Managers emit and consume events<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Separating Orchestration from Execution<\/h2>\n\n\n\n<p>One aspect of VBD that is often undervalued is the explicit separation of business logic into two distinct concerns: <strong>orchestration<\/strong> (what happens next) and <strong>execution<\/strong> (how to do it). When orchestration and execution are interwoven within the same unit, they become change-coupled. A modification to workflow sequencing forces changes in business rule implementation. By separating them into Managers and Engines respectively, architectures absorb these changes independently, allowing workflows and business rules to evolve at different rates.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Interface and Implementation<\/h2>\n\n\n\n<p>Interface and implementation do not have to live together from the start. Begin simple \u2014 a component can present its interface and contain its implementation in the same deployable unit. As deployment needs evolve, separate them. The architecture supports this progression because the communication rules already define the contracts. Premature physical separation adds complexity without benefit; the structural boundaries exist regardless of how the code is packaged.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Decomposition Process<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Identify core use cases<\/strong> \u2014 the high-level behaviors that define the system&#8217;s purpose (typically fewer than five)<\/li>\n<li><strong>Enumerate volatility axes<\/strong> \u2014 across functional, non-functional, cross-cutting, and environmental dimensions<\/li>\n<li><strong>Classify responsibilities<\/strong> \u2014 based on likelihood and drivers of change<\/li>\n<li><strong>Define boundaries<\/strong> \u2014 aligning with volatility classifications<\/li>\n<li><strong>Apply component roles and communication rules<\/strong> \u2014 to isolate volatile responsibilities from stable ones<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Validation<\/h2>\n\n\n\n<p>VBD validates structural decisions by tracing core use cases through the component hierarchy. If a scenario can be traced through Manager, Engine, and Accessor without bypassing communication rules, the boundaries are correct. If a scenario requires an Engine to call another Engine, or an Accessor to apply business logic, the boundaries need adjustment. If a core use case requires bypassing defined communication rules, the architecture should be reconsidered.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Continuous Evaluation<\/h2>\n\n\n\n<p>Volatility analysis is not a one-time activity. As systems evolve, new volatility axes emerge and existing assumptions may become invalid. Maintain architectural integrity by monitoring changes in requirements, infrastructure, and usage patterns; conducting periodic architectural reviews; updating volatility classifications and component boundaries; and communicating architectural changes to all stakeholders.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Where VBD Applies<\/h2>\n\n\n\n<p>VBD is most effective in long-lived systems, platform architectures, and integration-heavy environments where change is constant and unavoidable. It provides architects and senior engineers with a clear, practical reference for applying volatility-first architectural thinking at scale.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n\n<div class=\"wp-block-button is-style-outline is-style-outline--1\"><a class=\"wp-block-button__link\" href=\"\/es\/whitepapers\/volatility-based-decomposition\/\">Read the Full Whitepaper<\/a><\/div>\n\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Volatility-Based Decomposition Modern software systems rarely fail because of poor initial design; they fail because change accumulates faster than the architecture can absorb it. VBD addresses this by treating change as the primary organizing force in system design. The Core Idea Rather than decomposing systems by domain concepts or technical layers, VBD organizes architectural boundaries &#8230; <a title=\"Volatility-Based Decomposition (VBD)\" class=\"read-more\" href=\"https:\/\/harmonic-framework.com\/es\/methodologies\/volatility-based-decomposition\/\" aria-label=\"Read more about Volatility-Based Decomposition (VBD)\">Read more<\/a><\/p>","protected":false},"author":0,"featured_media":0,"parent":6,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","footnotes":""},"methodology":[],"class_list":["post-7","page","type-page","status-publish"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"trp-custom-language-flag":false,"post-thumbnail":false,"hf-card":false,"hf-hero":false},"uagb_author_info":{"display_name":"","author_link":"https:\/\/harmonic-framework.com\/es\/author\/"},"uagb_comment_info":0,"uagb_excerpt":"Volatility-Based Decomposition Modern software systems rarely fail because of poor initial design; they fail because change accumulates faster than the architecture can absorb it. VBD addresses this by treating change as the primary organizing force in system design. The Core Idea Rather than decomposing systems by domain concepts or technical layers, VBD organizes architectural boundaries&hellip;","_links":{"self":[{"href":"https:\/\/harmonic-framework.com\/es\/wp-json\/wp\/v2\/pages\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/harmonic-framework.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/harmonic-framework.com\/es\/wp-json\/wp\/v2\/types\/page"}],"replies":[{"embeddable":true,"href":"https:\/\/harmonic-framework.com\/es\/wp-json\/wp\/v2\/comments?post=7"}],"version-history":[{"count":6,"href":"https:\/\/harmonic-framework.com\/es\/wp-json\/wp\/v2\/pages\/7\/revisions"}],"predecessor-version":[{"id":654,"href":"https:\/\/harmonic-framework.com\/es\/wp-json\/wp\/v2\/pages\/7\/revisions\/654"}],"up":[{"embeddable":true,"href":"https:\/\/harmonic-framework.com\/es\/wp-json\/wp\/v2\/pages\/6"}],"wp:attachment":[{"href":"https:\/\/harmonic-framework.com\/es\/wp-json\/wp\/v2\/media?parent=7"}],"wp:term":[{"taxonomy":"methodology","embeddable":true,"href":"https:\/\/harmonic-framework.com\/es\/wp-json\/wp\/v2\/methodology?post=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}