This is a post in 3 parts:
Part 3: Practical applications (this post)
Practical ApplicationsIn the previous post I introduced a technique based on cyclomatic complexity to measure the relative costs of systems integration. In this post I will summarise some of the possible practical applications of this technique.
Establishing a BaselineIn part 1 I compared a system of systems with an enterprise IT architecture estate. In the contest of an enterprise architecture, complexity equates to cost; be that the cost of keeping the lights on or the cost of change to the status quo. The more complex an estate and the more connections between systems increases the costs to change.
Most, if not all, CIOs are on a continuous mission to reduce costs within their estate. It is often the case that when wanting to manage something then it is important to establish a baseline. I propose that the cyclomatic complexity cost introduced in the last post is a quick way of establishing a complexity cost baseline using common enterprise architecture design artefacts.
Reducing ComplexityOnce a baseline state of the level of complexity has been established then it will be possible to create a roadmap for an ongoing strategy of simplification.
There are a number of ways that a reduction of complexity could be achieved:
- Automation: Automation brings many benefits to the speed and consistency of delivery. In business terms, automation can reduce the "time to value". Automation can also bring a cost reduction benefit to many aspects of the IT life cycle. The individual BOA (build, operate, alter) scores for each integration could be used to prioritise where automation would add most benefit to a complex enterprise;
- Node consolidation: Identify a small collection of nodes that could be consolidated into a single node. This will reduce the overall number of nodes and edges at the expense of making the consolidated nodes and edges (initially) more complex. Consolidation is not possible if the consolidation increases the new consolidated node’s cyclomatic complexity to a value greater than ten (the widely recognised maximum acceptable level of complexity). The business impact of such a change would be a reorganisation of application to business owners to collate similar applications together under the same business owner;
- Edge simplification: Review the high complexity edges and look to simplify. Options to simplify could be technical (change of technology or standard) or structural (move the node ownership to that of the majority of its interactions). It is important to recognise the complexity of both sides of the edge interface. Edges with a large imbalance of complexity for each party are worthy of review to understand how one party can make changes quicker than the other. Simplifying the integration and balancing the integration costs will reduce complexity costs overall;
- Integration Re-routing: It may seem counter intuitive to add new connections, especially when involving additional hops but consider the example below. Connecting Node C via Node B rather than going directly reduces the overall complexity cost. Clearly it is not possible to determine at this level of abstraction if there is a business case but it indicates an area of investigation.
|Integration Re-routing Example|
ConclusionMeasuring the relative complexity of an enterprise IT estate is hard. Using the cyclomatic complexity cost method allows for a structured viewpoint to be created on where the major costs exist in the integration points of an architecture.
The calculation of an objective overall complexity cost index provides benefit inside a single organisation but also across an industry.
Organisation benefitsThe complexity cost can be used in “what-if” planning for future changes by comparing the relative complexity costs of the as-is and proposed to-be architectures.
Once the baseline is established, then it is possible to create and actionable roadmap to reduce operational costs by way of simplification. The process to create the cyclomatic complexity cost generates a useful list of the relative costs of interfaces between systems. This interface cost list can be used to prioritise simplification activities.