Documenting Software Architecture, Part 2:: Develop The System Context
Documenting Software Architecture, Part 2:: Develop The System Context
Documenting Software Architecture, Part 2:: Develop The System Context
13 May 2008
In this series, learn why and how you should document software architecture. This
second article provides guidance for documenting your system context information.
The system context is the first architecture artifact you should capture. Learn how to
use a system context diagram and information flows to develop and document the
system context for your system or application's software architecture.
Introduction
Part 1 of this series explained the importance of a disciplined approach to
documenting software architecture. It also introduced commonly used mechanisms
to capture the architectural artifacts used in a typical software development process.
This article continues the discussion and focuses on the first important architecture
artifact: the system context. Learn how to document the system context information
with diagrams and information flows.
The black box representation of the system context shows you how your
software is dependent upon external systems, and how the dependencies
need to be architected into the overall solution.
The system context helps identify some key architectural artifacts that will be
required in order to build the complete solution. The information flow between the
system-to-be-built and each external system provides key inputs to the information
model. The characteristics of the external system determine the need for adapters
that will facilitate the technology integration. The information flows also represent
architecturally significant activities that can be traced back to the business process
models, which represent a key portion of the system's requirements.
External entities are not necessarily systems that are outside the enterprise
perimeter. An existing enterprise application or a database can be represented as an
external entity in the system context. I recommend that a section be dedicated to the
system context diagram and given a self-explanatory name, such as "System
context diagram."
It's a good idea to supplement the diagram with detailed examples of each artifact.
The system in the center box in Figure 1 has a generic name. Of course, you would
substitute a name to represent the application that is to be built.
• A description of the role and the context in which it accesses the system.
• A description of the information for which the role accesses the system.
• The volume of transactions that a typical user in a given role would be
performing in a given unit of time.
Channels
Users will use different channels to access the system. I recommend that you
create a separate subsection to document this channel information.
Documentation for each of the channels should minimally capture:
• A description of the channel and the type of roles or users that typically
use it to interact with the system. For example interactive voice response
(IVR), browser, smart phone, and so on.
• The network and bandwidth supported by the channels, such as T1 line,
8.02 11g, a partial T3, and so on.
• The access protocol to send and receive data to and from the system,
such as HTTP, sockets, IVR, and so forth.
External systems
You must document the external systems that your system interacts with when
it's carrying out the required functions. A lot of analysis takes place behind the
scenes to identify the external systems that need to be brought into the scope
of the solution. The business analyst and the domain experts usually
participate in this analysis. You should also sufficiently document the results of
this analysis.
It is recommended that you dedicate a subsection to the documentation of
external systems. This documentation should minimally capture:
• A descriptive overview of the external system, including background
information about the placement of the system in relation to the system to
be built.
For example, the external system may be placed inside the enterprise
intranet, in the extranet as defined by the business, or on the Internet.
• The access protocol required to interface with the external system, such
as secure HTTP, sockets, a proprietary access mechanism, and so on.
• The data formats supported or expected by the external system to
facilitate integration.
• Any specific compliance requirements that need to be followed in order to
interact with the external system.
Information flow
Information that flows between the system and the external systems, users, and
channels is an essential part of your system. Information can flow in batches or in
real time. Documenting the information and its characteristics as a part of the system
context is paramount when defining the overall software architecture.
The information flow is usually represented using a short phrase that can either be a
noun or a verb. Whether you choose a noun or a verb is a matter of preference, but
it is recommended that you stick to one form instead of using both. I use a verb form
in the example. For each of the information flows, I recommend that, at a minimum,
you document the following set of artifacts:
• A description of the information that is flowing between the system and
the users, channels, and external systems.
• Categorize the information as batch, real time, or semi-real time.
• The number of transactions that must be supported per unit of time.
• The type of data that constitutes a typical transaction.
• The volume of data that will typically flow per transaction.
• The frequency with which transactions are executed.
These artifacts, as stated earlier, do not address the sequence of the interactions
between the system and the external entities. When there is information flowing
between two systems, there can be a sequence of information exchange between
the systems that completes a transaction. In such situations, the sequence of
information exchange should also be documented.
• The access protocol (network and data) supported by the external system
may be different from the protocol that will be supported by the
system-to-be-built. This protocol disparity raises technology requirements
for application and systems integration. The requirements are usually
addressed through the choice of technology adapters.
A technology adapter normalizes the data format and access protocol
differences between external systems and the system-to-be-built. The
choice of technology adapters is an important facet of an integration
architecture that supports the system to be rolled out.
• The data, protocol, and network adapters are essential recipes that go
into the definition of the architecture overview of the system or
application. In effect, the heterogeneity of the external systems influences
multiple layers of the architecture (to be covered in the next article of this
series).
With the system context diagram and the information flows, you can define a
rigorous system context document that will prove to be very important in shaping the
software architecture of the system.
Conclusion
In this article, you learned about the system context view of software architecture.
The system context should be one of the first artifacts that you develop as a part of
the system architecture. You learned about effective ways to develop thorough
documentation of the system context. This article also highlighted the importance of
documenting the system context as it pertains to the traceability of developed
artifacts in a typical software development life cycle.
Stay tuned for subsequent articles in this series, which will elaborate on a set of
guidelines for documenting the rest of the architecture artifacts.
Resources
Learn
• Read Part 1 of this series, "What software architecture is, and why it's important
to document it" (developerWorks, Apr 2008).
• Read a compendium of published software architecture definitions.
• Read the two-part series "From business modeling to Web services
implementation" (developerWorks, Feb 2005).
• Learn about "The information perspective of SOA design, Part 1: Introduction to
the information perspective of a Service Oriented Architecture"
(developerWorks, Jan 2008).
• "Architecture in practice is a developerWorks series by Tilak that delves into
SOA.
• Get an RSS feed for the series Documenting software architecture.
• In the Architecture area on developerWorks, get the resources you need to
advance your skills in the architecture arena.
• Learn more about SOA in Executing SOA: A Practical Guide for the
Service-Oriented Architect, a recently published developerWorks series book
that Tilak coauthored. Use coupon code IBM3748 for a 35 percent discount.
• Browse the technology bookstore for books on these and other technical topics.
Get products and technologies
• Download IBM product evaluation versions and get your hands on application
development tools and middleware products from DB2®, Lotus®, Rational®,
Tivoli®, and WebSphere®.
Discuss
• Check out developerWorks blogs and get involved in the developerWorks
community.
(CBS) that has the ability to run on multiple platforms like the SOA stacks for IBM,
SAP and so on. Tilak recently coauthored a developerWorks series book: Executing
SOA: A Practical Guide for the Service-Oriented Architect, available in Resources.
He lives in sunny South Florida and, while not at work, is engrossed in the games of
cricket and table tennis. Tilak did his Bachelors in Physics from Presidency College,
Calcutta, India, and has an Integrated Bachelors and Masters in EE from Indian
Institute of Science, Bangalore, India. Find out more about SOA at Tilak's blog. View
Tilak Mitra's profile on LinkedIn or e-mail him with your suggestions at
[email protected].
Trademarks
IBM, the IBM logo, ibm.com, DB2, developerWorks, Lotus, Rational, Tivoli, and
WebSphere are trademarks or registered trademarks of International Business
Machines Corporation in the United States, other countries, or both. These and other
IBM trademarked terms are marked on their first occurrence in this information with
the appropriate symbol (® or ™), indicating US registered or common law
trademarks owned by IBM at the time this information was published. Such
trademarks may also be registered or common law trademarks in other countries. A
current list of IBM trademarks is available on the Web at
http://www.ibm.com/legal/copytrade.shtml.