Columns
Architecture, planning and design
''Time is what keeps everything from happening all at once.
Space is what keeps everything from happening to you.'' -- Neill D. Hicks,
Writing the Action-Adventure Film: The Moment of Truth
Often, a developer's time is spent scattered across a hodgepodge of
activities. One moment you are writing code, the next moment you are gathering
requirements. At the same time, you need to create plans for completing your
projects. You are driven by deadlines and yet you strive to add value to the
company beyond your immediate project. You live in a world where time and space
collapse into a single focal point. Everything is needed now, and you are the
only one who can deliver.
This is a problem -- in more ways than one. One way to manage the pressure
that comes from being a focal point is to understand the purpose of different
activities and to appreciate what activities add what value and in what fashion.
I raise this issue because recently I've seen developers confuse the activities
they are doing with those that are needed. This leads to frustration,
unsuccessful projects and an inability to help IT add value to the business.
Most of the confusion seems to come from a fuzzy understanding of the
differences between architecture, planning and design. In particular, developers
may confuse architecture with design.
I know the words sound different but, in practice, people confuse the three.
I've seen developers who are deep into an implementation design, who believe
they are doing architecture. Others think planning is just stuff that happens
while doing architecture and design. These distinct activities require different
skill sets and bring a particular value to the business. They are used at
different times to accomplish specific purposes. Under pressure to get many
things accomplished, it's easy for developers to blur the distinctions between
these activities. As a result, developers may spend their time doing one thing,
while thinking they are actually accomplishing something else. Let's explore
these three activities and see if we can shed some light on their purpose, value
and differences.
Architecture is an overloaded word. We have many different types of
architecture. There are enterprise architectures, target architectures and
system architectures. Other architects might add even more types. No wonder
developers are not clear about what architecture is. It's easiest to understand
the distinctions if we start at a high level and work our way down to greater
levels of detail.
Enterprise architecture is the practice of using models to represent various
stages of transformation to assist in the assessment of opportunities, the
development of plans and the governance of change programs. What does this mean?
In enterprise architecture, we develop an understanding of the business, its
operational functions, the systems that support the operations and the
technology that supports the systems. This understanding becomes the basis for
other activities. Enterprise architecture is not about implementing a system or
finding the best projects. It is about understanding the various aspects of the
business and the relationships between these aspects. It is the groundwork we
build from in our other activities.
Target architecture plays a similar role. Target architecture is the
representation, through the use of architecture models, of a desired end state
or an interim state in a migration strategy. Don't confuse target architecture
with its implementation. Its role is to show a desired end state, not to specify
how you get there. Target architecture has a role similar to that of enterprise
architecture -- it provides a basis for further work. In a similar fashion,
system architectures show how various systems and families of systems support a
business's operational capability. They show the information flows that support
operational functions and denote which system serves as the system of record for
a given piece of information. This is not the same as the design of the system.
System architectures provide no details of how a system manages a piece of
information. What they do provide is a map to a particular automated subset of
the enterprise, its various components and their relationships.
In many ways, architecture is like a framework or context in which we can
accomplish other activities. You could build a house without a blueprint, but
would you want to live in the result? A blueprint is not the finished house.
Depending on the purpose of the blueprint, it may not show many of the details
that must be addressed to implement the house. That's OK. It still provides the
guidance appropriate to its purpose. This is true for architecture as well. An
architecture's value comes from its ability to help us make informed decisions
and build upon the foundation it provides. It helps us make good decisions
through its alignment with the business and helps us to understand the various
factors impacted by our decisions.
Planning, for many developers, is a haphazard activity that may or may not
happen with any formality. Merriam Webster's Collegiate Dictionary
defines planning as ''the act or process of making or carrying out plans.''
Planning also means to devise or project the realization of achievement of a
program. In the context provided by an enterprise architecture, planning is
typically focused on some type of opportunity assessment. An opportunity
assessment uses the architecture as a basis for analyzing various types of
opportunity improvements, prioritizing the ones identified and selecting
projects for implementation. Opportunity assessments come in many flavors. These
include assessments for operational effectiveness, new system opportunities,
infrastructure consolidations, resource rationalization, organizational design,
business process reengineering and product portfolio strategy development.
Because the enterprise architecture covers the entire business, we can use it to
assess many different aspects of the business, not just IT issues. The value of
combining architecture and planning is that we come up with prioritized programs
that are aligned with the needs and priorities of the business.
Design is focused on the implementation of the projects we selected through
planning, guided by architecture. Merriam Webster's defines design as,
''to create, fashion, execute, or construct according to plan.'' Notice that
design is not the same as creating the plan, gathering information and/or
providing a context for a plan. Design is where we take our architectures and
plans and turn them into something concrete. Design is not the same as writing
code to implement a system. However, for purposes of this discussion, it is
useful to group it with implementation to help us distinguish between
architecture, planning and design. Too often, developers confuse the detailed
work they are doing in design with creating an architecture. They are not the
same. Design fleshes out the implementation details of a context provided by an
architecture. Planning helps you know which things you ought to be designing in
the first place.
Sequence leads to value
Reuse provides us with an example of how all three activities
can work together. If we begin with an enterprise architecture, we can drive it
down through a domain analysis and create a reuse architecture that clearly
identifies which components add the most value when they are reused and where it
is best to reuse them. We can then take the reuse architecture and, with a
planning activity, create a roadmap for prioritizing the development or
acquisition of the reusable components. A design activity can flesh out the
implementation details or requirements needed for building or buying the
reusable components.
Notice that this reuse process does not begin with designing components and
then making them available for use elsewhere. That bottom-up approach will not
lead to reuse. Any components you make available in this fashion will be
off-target because you don't have a blueprint to show you how they fit into the
big picture. The sequence in the process is important. The activities in the
process each add their unique value to the process. Confusing one step for
another will not lead to the desired outcome.
Avoid being the focal point of all time and space by using architecture,
planning and design to their best advantage.
About the Author
John D. Williams is a contributor to Application Development Trends. He is president of Blue Mountain Commerce, a Cary, N.C.-based consulting firm specializing in enterprise, domain and application architectures. He can be reached via e-mail at [email protected].