What motivates organizations to spend time and resources on enabling the enterprise architectural process? Sometimes it's a well-defined problem that needs to be solved. But often it's a vague notion that some set of problems needs to be explained, organized and then solved. That’s where cartography comes in: It explains a set of concepts dealing with notions (logical objects), their behavior and interaction, and the resulting physical objects derived from the notions.
In other words, it's a plan for an architecture, and it's something that shouldn't be lost in the process of actually creating the architecture. Instead, it should be well documented and revisited over time as your problem domain changes.
With cartography, the overall intent is to define a measurable and repeatable process, from requirements to design, but your initial goals are to:
- Reduce complexity through generalization (Note: Avoiding complexity at this stage is fine, but don’t avoid it during the architecture phase, which comes next. Doing so can come back to bite you later.)
- Separate the logical from the physical
- Eliminate issues that are not relevant to the architecture
- Consistently describe what needs to be architected, and then implemented
As with any form of cartography, the architecture cartography I propose here defines the attributes used, including definitions for:
- Symbology – Standard objects, pictures, or even words that are used to describe something by association;
- Naming – A common approach to naming, including abbreviations, numbering, and compound words;
- Generalization and abstraction – Wikipedia describes abstraction as a process by which higher concepts are derived from usage and classification of literal concepts. In general, it’s a way to represent something complex using a simpler concept (i.e. representing the Internet as a cloud on a whiteboard).
Naming conventions are a matter of personal taste, so I won't attempt to suggest one. However, I will suggest that you be consistent throughout with whatever convention you use. Let's take a closer look at the remaining goals, and how the attributes of the proposed cartography can help you achieve them.
Charting Your Course
To be successful as an architect, you must be able to deal with the abstract and then generalize real and sometimes complex things as simple boxes, lines or dots on a page. It's important to be clear when presenting your architecture and ideas. A standard symbology is often the key here, with an architectural taxonomy, which forms a “road map” to design, if you will.
For instance, aim to create a high-level view of the components in your proposed system (which may be entire systems and subsystems themselves), with clickable items that open new pages. At this point, the relationships between the components should be very simple, such as is a, has a, uses and so on. The diagram below is a simplified example of how this would work:

Taxonomy in the Architecture Cartography. Source: Eric Bruno
I chose Unified Modeling Language (UML) for my symbology, although entity relationship (ER) diagrams, flow charts or other meta-modeling language such as the Object Management Group’s (OMG) Meta-Object Facility work as well. In fact, they may each be used together. Level One systems typically are the enterprise applications that you're architecting, while Level Two systems are the strategic systems or services that your applications use (i.e., authentication, billing and so on). You can have as many levels as your architecture dictates, with the end level being external systems not owned by your enterprise. As a general guideline, components at each level have relationships with components within their own level, or either adjacent level (back one level, or over to the next level).
At this point, while you're dealing with abstract, logical concepts, you're beginning to get a feel for what may become physical entities within your enterprise. For instance, while the billing system uses a single box for its Web service and a cylinder to represent a database, each of these will most likely turn into multiple physical servers with network equipment, security facilities and other administrative systems in the end. Your diagrams should save this level of detail for the architecture documents, which will be developed as part of the architecture process following the cartography stage.
What Not to Do
In the spirit of eliminating irrelevant issues, you should avoid adding design-specific or implementation-specific items to your cartography, such as load-balancing equipment, platform and OS choices, programming languages, data center distribution and so on. The intent of your cartographic taxonomy is to determine what systems will exist in your architecture, as well as which ones won't (i.e., existing or external systems). When complete, you'll have scoped out the architecture work that needs to be done, where each page in the cartography typically maps to a separate document in your architecture.
Always remember to keep the cartography up to date as you make overarching changes to the architecture. Such changes can be anything from deciding there's a need for an LDAP server (which plays into the authentication system) to the decision to use an external ERP or CRM system instead of deploying your own (such as Salesforce.com). That’s important, because the information within the cartography is a good starting point for those who need an overview and a road map to your business’s enterprise architecture vision. It can also serve as a business guide, quickly communicating the core areas of business on which your enterprise should focus, as opposed to those for which you should find partners.
Let me address the question I’m sure you have, which is about what tools can facilitate your cartography construction. Some tools I’ve used for this include Unified Modeling Language (UML) diagramming tools, such as IBM Rational Rose, Microsoft Visio or OmniGroup’s OmniGraffle, and entity relationship diagramming tools such as CA ERwin. That said, this really is a more personal approach and I know of no all-inclusive package that supports it. One interesting idea some folks have expressed to me is the possibility of using a tool such as Second Life to create a 3D space to visualize the cartography, and explore it by walking around it. That’s an intriguing idea, but not one that I’ve tackled yet. I’d like to hear other people’s opinions on this approach, so feel free to share if you’d like.
In the meantime, to explore and learn more about meta-modeling, cartography and system taxonomies, see the OMG's website, or information on UML modeling tools, as well as data modeling and entity relationship tools such as CA Technologies’ Erwin.