Skip to main content

3 tips for enterprise architects to solve dependencies

Dependencies are inevitable in a complex system, but they are only a problem when you lose sight of them.
Image
Person writing ideas on yellow sticky notes

Photo by Brands&People on Unsplash

As an enterprise architect, you find that nearly every element in an IT architecture depends on something else. The better you are at managing those dependencies, the better you are at delivering and succeeding in your role.

[ Check out Red Hat's Portfolio Architecture Center for a wide variety of reference architectures you can use. ]

It's tricky to track dependencies as tasks become more granular for many reasons. It's hard for individual teams to trace the dependencies from top to bottom, as they may not have enough knowledge of the bigger picture. Therefore, the enterprise architect becomes the best choice to trace those dependencies.

Certain dependencies, like code or model dependencies, may be out of reach for an enterprise architect. In this article, I will discuss the top-down approach to address dependencies and focus on those relevant to enterprise architecture.

Dependency types

First, I'll explain the different dependency types you may encounter.

Business dependencies: A business needs different capabilities across various value streams to meet its strategic objectives. Without managing these dependencies, companies won't be able to achieve their objectives. For example, an order-to-cash value stream directly depends on the idea-to-production value stream (which includes the things involved in bringing a product from concept to launch). In this case, businesses must be able to manage offer portfolios to allow order management for the same portfolio. This indicates direct dependencies between capabilities.

Process dependencies: Think of each business capability as a set of sequential or concurrent business processes. You must capture the relationships and find dependencies across these processes and subprocesses. For example, to make a payment in a purchase scenario, the customer must choose products, add them to the cart, and confirm the order. This involves some processes owned by humans and some by IT. Customers must perform specific steps before placing the order. On the business side, some processes need to check product availability, provide the order summary, redirect to the payment gateway, and more. Failure to manage these dependencies will have a direct impact on business.

System dependencies: There are often multiple IT systems involved to support business processes, and these may have many dependencies. One system needs data from another to execute its operations. Failure to capture the data dependencies across multiple systems can result in serious downtime. More systems are involved in larger organizations. When data is passed across different systems, it may change its form, so it's crucial to track dependencies along with their altered forms.

[ Learn how IT modernization can help alleviate technical debt. ]

Standard dependencies: Systems and processes must operate on certain standards to be effective. These standards could vary based on the operation's type and scale. If your business process and systems deal with sensitive data, there could be a dependency on following particular security standards. If a business deals with thousands of transactions per minute, it must define the standard for the system's performance. Lack of standardization could result in wasted efforts, organizational efficiencies, and damage to rapport.

Project or program dependencies: A large-scale project or program has many implicit and explicit dependencies. Implicit dependencies could be budget approval before the project begins or hiring a skilled resource or vendor before starting the project. If concurrent projects or programs exist, calling out dependencies explicitly helps the organization plan effectively and ensure all objectives are met. Failure to manage these dependencies may put the program or project in jeopardy.

3 ways to solve dependencies

Identifying and accepting dependencies is essential; the best way to do that is to create a plan. Recognize and prepare for the dependencies that will surface as you formulate your architecture. Once you have a plan, you can deal with the dependencies you find and track them as you progress.

Here are my top three suggestions on how to solve dependencies.

1. Track dependencies

Trace the dependencies between a value stream and capabilities to help the business plan accordingly. Then drill down further to identify processes and system dependencies. The Archi modeling toolkit lets you visualize value streams, business capabilities, and business processes, along with which systems serve those business processes. This will help the business track dependencies from top to bottom for the process and its systems. You can use different views for the value stream, which has its own capabilities, business processes, and system dependencies.

Image
Architectural diagram of the value stream with its capabilities, business processes, and system dependencies
(Pranjal Bathia, CC BY-SA 4.0)

Once you have views for value streams, start identifying the dependencies across them.

If the dependency relationships are complex, use different views focused on directives like strategy, business process cooperation, development, deployment, and more.

Also, if value streams are not defined or well understood in your organization, begin with a customer journey map and then append capabilities, processes, and systems associated with various stages. Follow the dependency tracking similarly.

[ Read Hybrid cloud and Kubernetes: A guide to successful architecture. ] 

2. Recognize programs and projects may have their own objectives

Generally, an enterprise-wide project or program overlaps or has dependencies with another project or team. Strategic dependency planning helps deliver success for each of those. A program generally has a team associated with it. That team might not have details of other dependent projects or programs to understand the impact.

Involving enterprise architects, who have a broader view, could be beneficial to engage with program and project managers and help them understand the effect by prioritizing the dependencies.

Capturing project dependencies in the Dependency (or Design) Structure Matrix (DSM) format is an effective way to visualize bigger and more complex projects. Capturing relevant interlinked projects is the first step. Next, use mind maps to group, regroup, and link until you understand their relationships. You can do this exercise in collaboration with program managers or project managers.

3. Understand bigger initiatives have multiyear roadmaps

Over the years, larger initiatives will develop dependencies across different levels. Once the proposed architecture is approved and shared with the development team, enterprise architects are often allocated to other initiatives. Enterprise architects must have ongoing involvement to ensure organizational structure, value streams, business processes, data and information, and supporting technologies fit together and evolve with the initiative's multiyear roadmap.

Architecting solutions

Dependencies are a fact of life within a complex system. Once you accept that, you realize that dependencies aren't a problem until you've lost sight of them. Keep track of the dependencies that surface in your architecture, and you're empowered to build a robust and resilient system.

[ Take a Linux infrastructure planning assessment. ]

Author’s photo

Pranjal Bathia

Pranjal Bathia is a Principal Architect within the PnT Operations and Infrastructure team at Red Hat. She has 12+ years of experience in designing and developing solutions and products for challenging business problems. More about me

Navigate the shifting technology landscape. Read An architect's guide to multicloud infrastructure.

OUR BEST CONTENT, DELIVERED TO YOUR INBOX

Privacy Statement