|
Architecture Is Objective, Design Is Subjective – August 2009
Enterprise Domain Decomposition & Coherence Boundaries
Published: August 1, 2009 In designing any distributed enterprise data architecture, one of the most important activities is decomposing the domain to produce logical component data-sets (representing business areas) that
can, as far as possible, be deployed and managed in isolation to each other. This article discusses a number of the key issues that need to be addressed to achieve this.
In my previous article, I mentioned the four questions that data architecture is trying to address:
This essentially produces the domain view and the data-flow view and allows us to answer the what, who, when and (if it’s relevant) the why” aspects of the business and allows us to identify “owners” and “influencers” of each significant business activity. As part of that, we’ll go through the purpose a domain decomposition serves, the benefits it provides, the problems and the deliverables that should be produced. Hopefully, we’ll also establish a core set of objective principles that the resulting domain decomposition should conform to. Why We Need a Formal Domain DecompositionA domain is generally defined as any discrete subject area representing a field of action, thought or influence – an industrious or systematic activity undertaken to achieve a pre-defined objective.Even though it may not be apparent from the outside, all domains have an internal structure formed from a set of smaller interlocking domains (sub-domains) performing well-defined functions within the overall domain. Given that we are discussing enterprise data architecture, then the domain that we are focussing on is the enterprise (i.e., an organisation created to carry out a defined set of business objectives) but even then an enterprise domain can range from a single-task focussed organisation through to the most complex “supra-enterprise” domains covering business activities across multiple business sectors such as retail banking, investment banking and asset management. The more complex the domain, then the more likely that it will be necessary to decompose it into manageable sub-domains. Within the enterprise domain, there will be many functional business areas (sub-domains) performing well-defined activities that contribute to the enterprise achieving its objectives. This can be frequently seen from the organisation chart that an organisation may create to describe itself such as the following: ![]()
Figure 1 However, this is nearly always a “social structure” representation describing “reporting lines” and areas of responsibility. Unfortunately, at the operational level, it is much more complex and would probably look something like this: ![]()
Figure 2 In addition, each of the main functional business areas will also have numerous internal activities, invisible to other parts of the enterprise, which it needs to perform and will also involve information exchange between these sub-domain functional areas. ![]()
Figure 3 Plus, of course, each of these may in turn be further decomposed into other areas that are even more specialised. It gets incredibly recursive if we don’t have rules for when to stop! None of this will come as a revelation to anyone well versed in any of the structured analysis methodologies such as SSADM (Structured Systems Analysis & Design Methodology) or Jackson Functional Decomposition (if you’re an old-school software engineer). In many smaller organisations, much of this cross-functional activity is unstructured with much of the information flow being informal and often producing a formal domain decomposition may be desirable but is usually unnecessary. However, for large global organisations that have dedicated and, in many cases, replicated business activities operating across multiple locations, it’s not unheard of for the organisation to implement multiple systems to support business activities at the local level (e.g., regional accounting) and then consolidate the generated business information in another location (the data warehouse usually) for reporting, analysis and decision making. In this situation having a decomposition of the enterprise domain to explicitly describe these data flows in a single integrated model and having a formal policy on how the sub-domains will interact with each other should be a critical part of the basic distributed data architecture. As well as a rationale for the domain decomposition activity, we should also attach some concrete objectives to producing a well structured domain. Some benefits are:
Architectural Principles for a Domain DecompositionGiven the above benefits and objectives, the resulting deliverables from the domain decomposition would be:
It is the decisions that we make as a result of the characteristics of the interdependencies that we need to define for the architectural principles. Identifying Functional Business AreasTraditionally the identification of functional business areas and information flows or business activities would be an output from the business analysis carried out separately, as a precursor, to the production of the enterprise data architecture. However, analysis of business activities tends to take place at a highly granular level with specifications being produced for individual processes, and the enterprise data architecture might well be the first place that the integrated holistic view is considered.In some cases, the functional business areas are identifiable vertical business areas such as finance, sales & marketing, human resources or product manufacturing; and in other cases, they are cross-functional “horizontal” areas such as customer service or business intelligence. Both perspectives may be present in an organisation, and an initial candidate list can be discovered by examining the company structure if the business is already operating (a “brownfield” enterprise); or if it is a start-up company (a “greenfield” enterprise), then there will be similar organisations in the same business sector that we can use as a template. This will give us the initial candidate list that we can rationalise into a definitive list by assigning ownership of business activities to potential functional business areas. The functional business areas on the final list will all have the following characteristics:
Identifying Information Flows between Functional Business AreasIdentifying the business activities is again an output from the business analysis activity and would normally be a pre-defined input to producing the data architecture. Frequently though when we ask the business stakeholders for a list of business activity information flows, we usually get a list of use cases such as the following:![]()
Figure 4 In many cases, no more information is available because the process specifications haven’t yet been produced. This unfortunately isn't really that useful from an architectural perspective because it doesn't tell us (1) what information is being used or produced by each activity; (2) how the separate activities link together; and (3) who owns each defined activity because the actors are roles that use a service not those that provide it. Instead we need a good old-fashioned data-flow model that shows the data that is being consumed or produced by each business activity, so instead of the above we have something like the following:
Figure 5 (mouse over image to enlarge)
I’m not going to discuss the detailed process for producing this data-flow model because it’s not really the subject of this article; but, as with the business information model, the data-flow model doesn't have to be fully defined in order to be useful. We only need to know what business entities are being manipulated by each activity but don’t necessarily need to know exactly what attributes of those entities are required as input to a particular activity or need to define the exact internal structure of each business entity. This can all be defined in detail as part of the process specifications, which may be produced beforehand or afterwards. What the data-flow model does give us are all the high-level details necessary to establish the ownership of each information flow. Establishing "Ownership" of an Information Flow“Ownership” of any asset is an important responsibility, and this area is fraught with corporate politics for the obvious reason that the more responsibility someone has, then the greater their political influence over the activities of other business areas.Data assets are no different than any other assets in this respect; consequently, it is almost inevitable that multiple business areas will try to claim “ownership” of any business processes and associated data assets that sit on or close to their sub-domain boundary so as to (1) be able to control the rate of change of that data asset, (2) be able to control the business processes related to that asset and (3) be able to strongly influence any other business area that is dependent on that asset. This, in a business context, is what ownership should mean:
Figure 6 (mouse over image to enlarge)
The business activity and business information are then “owned” by the “swim-lane” in which they reside. From this, we can then extract the business entities and group them together to form the business concept map described in the previous article. ![]()
Figure 7 Note: As mentioned previously, this isn’t a fully detailed model because it doesn’t need to be at this stage. There are, for example, relationships between the business entities that haven’t yet been described (the three shown are just examples) and some of those business entities will have complex internal structure (e.g., customer order will probably be composed of order header and multiple order lines). This detail can be added separately. That is essentially our domain decomposition showing which functional business area owns what information. Of course, we’ll have a multitude of business activities to analyse, but that’s just a repeated application of the same rules to generate more detail. Establishing the “Influencers” of an Information FlowThe “influencers” of a business activity are the functional business areas that will be affected if the business activity changes so would need to be “consulted” when any changes are proposed to ensure that they can comply with the change.Having established owners of an information flow, establishing the Influencers is really straightforward. Influencers are simply the functional business areas that either provide input data into a business activity or are the consumers of the information produced by a business activity or provide “reference data” used to validate the correctness of the business information that is produced. In the above cross-functional data-flow model, the influencer of the customer order is product management because that is the only functional business area that has any dependency, through the fulfil order activity, on the definition or existence of a customer order. Identifying Coherence BoundariesAs previously mentioned, the coherence boundaries are the points at which different functional business areas have to communicate with the outside world in a consistent and grammatically structured language.From our data-flow model, a coherence boundary occurs at every point that an information flow crosses from one functional business area into another functional business area. At these points, it is essential for the owner to:
ConclusionIn this article, we have looked at the process and principles of producing a domain decomposition in order to sub-divide an enterprise into its functional business areas and tried to establish a rules-driven approach to doing it.I should come clean and say that this is presented in a highly simplified form. In reality, the domain decomposition is likely to be formed of more than one layer because of the recursive nature of domains, and it will almost certainly evolve over time as previously undocumented business activities are discovered and need to be integrated into what’s already defined. But that’s pretty much expected I hope. In the next article of this series, we’ll look at the coherence boundaries in more detail because, believe it or not, there’s a lot of interesting architectural behaviour that takes place at the boundaries that needs to be taken into consideration. Go to Current Issue | Go to Issue Archive Recent articles by Adrian Miley
Adrian Miley - Adrian Miley is a Director at Miley Watts & Associates Ltd, a UK Consultancy specialising in Distributed Data Architecture, and a Director at Taxosys Ltd, a publisher of Taxonomy Management
software. He has 20+ years of experience across a wide range of business sectors in the architecture, design and build of large scale data processing environments with an emphasis on innovative
solutions extracting the most benefit for the least amount of effort. He can be contacted by email at adrian.miley@mileywatts.com or via his LinkedIn
profile at http://www.linkedin.com/in/adrianmiley.
|