A software system's architecture may be its most crucial determinant of success or failure. Without an adequate architecture that delivers required function as well as quality attributes, the project will fail. But communicating an architecture to its stakeholders is as important a job as creating it in the first place. An architecture must be understood so that others—designers of finer grained components, implementers, testers, performance engineers, security analysts, builders of interfacing systems—can build systems from it, analyze it, maintain it, and learn from it.
The SEI has a proven approach to documenting software architecture called Views and Beyond, or V&B. The name emphasizes that we use the concept of a view as the fundamental organizing principle for architecture documentation. A view represents a set of system elements and the relations associated with them. Views represent the many system structures that are present simultaneously in software systems. The basic principle of V&B is that documenting a software architecture involves documenting the relevant views, and then documenting the information that applies to more than one view.
- How do you capture the software architecture for a system in a document that can successfully serve all of the architecture's stakeholders?
- How do you decide which architectural views to document?
- What information do you record about an architectural view beyond just the graphical box-and-line diagram or "cartoon"?
- How do you specify an architectural element's software interface? What information do you record?
- What information beyond views must be recorded? What information applies to more than one view? How do you record the relationship among views?
- How do you specify an element's behavior?
- What notations are available for documenting an architecture, for documenting a view, for documenting an interface, for documenting behavior?
V&B is more than an architecture documentation method. It also helps the architect identify and record necessary design decisions during development.
Documentation should be the helpful result of making an architecture decision, not a separate step in the architecture process. The more that documentation is treated as a follow-on to design, with its own separate method, the less likely it will be done at all.
Documenting a software architecture is a matter of documenting the relevant views, and then adding information that applies across views. A first step is to choose the relevant views, and this choice in turn depends on the anticipated usage. Documentation may be used to drive analysis, to constrain an implementation, to manage a project, or to convey an introductory overview of a system.
Documentation that applies across views follows a simple how-what-why approach: how the documentation is organized to serve stakeholders, what the architecture is, and why the architecture is the way it is (i.e., design rationale).
V&B works in both Agile and traditional development settings. It is notation, language, domain, and technology independent. And it produces documentation that is compliant with Standards ISO/IEC 42010 and IEEE 1471-2000.
Documentation can help a software development organization avoid the pitfalls of inappropriate or incomplete or vague documentation. Many have experienced the frustration of committing a massive expenditure for documentation, only to have the resulting artifacts gather dust on shelves. This is the result of documentation that has not been properly planned and aimed more at satisfying standards than satisfying stakeholder needs. Coaching can prevent this situation by raising documentation and documentation planning to a level commensurate with its importance.
Who Would Benefit
Software architects and the people to whom they must communicate the architecture will benefit: designers, implementers, technical managers, testers, analysts, quality specialists, and others. In short, every member of a software development project can gain.
The SEI offers support for applying V&B in three ways:
- V&B is fully described in the book Documenting Software Architectures: Views and Beyond, Second Edition.
- A Microsoft Word template for a software architecture document is available for free download.
- The SEI provides consulting to help organizations produce high-quality architecture documentation using V&B. We work with the client to articulate the anticipated uses of the documentation, and the stakeholders that will carry out those uses. If appropriate, we can facilitate the holding of a stakeholder workshop to select views. Once the views have been selected, we can provide templates and documentation guides for each view, as well as guidance about how views are related to each other, and pitfalls associated with misusing each kind of view. In addition to documenting the structure of the system, an architect must document interfaces and behavior. We also provide guidance for documenting dynamic or highly variable architectures, as well as guidance for combining views to produce information-packed hybrid views.
SEI staff will work with a customer team to understand the specific situation and undertake the best coaching approaches that are appropriate. For additional technical details or to arrange architectural coaching services, contact us using the link in the For more information box at the bottom of this page.
Software Architecture Training and Publications
Software Architecture Training at the SEI
Software Architecture Publications
Documenting Software Architectures in an Agile World
Paul Clements, James Ivers, Reed Little, Robert Nord, and Judith Stafford
Documenting Software Architectures (podcast)
How to Represent the Architecture of Your Enterprise Application Using UML 2.0 and More (tutorial)
Paulo Merson, JavaOne Online Technical Sessions
Comparing the SEI's Views and Beyond Approach for Documenting Software Architectures with ANSI-IEEE 1471-2000
A Structured Approach for Reviewing Architecture Documentation
Robert L. Nord, Paul C. Clements, David Emery, and Rich Hilliard