Viewpoints
It would be hard work if every time you created a view of your architecture you had to go back to first principles to define what should go into it. Fortunately, you don't quite have to do that. In his introductory paper, Kruchten defined four standard views (Logical, Process, Physical, and Development). The IEEE standard makes this idea generic by proposing the concept of a viewpoint. A viewpoint is a collection of patterns, templates, and conventions for constructing one type of view. It defines the stakeholders whose concerns are reflected in the viewpoint, and the guidelines, principles, and template models for constructing its views.
A viewpoint defines the aims, intended audience, and content of a class of views and defines the concerns that views of this class will address. Typically a viewpoint definition will include the following:
- The most important concerns addressed by the viewpoint, and which stakeholders are most likely to be interested in its views
- The most important models that you might build to present the views, together with the notations used and the activities for building them
- Potential problems and pitfalls, and risk-reduction techniques for mitigating against these potentials
Using views and viewpoints makes analysis and design of the architecture easier because you can focus on specific aspects of the architecture rather than trying to understand everything at once. It also improves communication with your stakeholder groups because each view can be presented using language and notation appropriate to the knowledge, expertise, and concerns of its intended readership. Finally, it helps to ensure that the right system is built, by ensuring that developers focus on those aspects of the system that are particularly important to them.
Viewpoint Catalog
A viewpoint catalog defines standard viewpoints. The catalog in Figure 1 defines six core viewpoints that are widely applicable to modern information systems. While it's not unique (in fact, it takes the best from a number of others that have been published in the past), we believe that it does a good job of partitioning the architectural description into a manageable number of sections, while ensuring a widespread coverage of concerns.
Figure 1 Viewpoint catalog.
The first three viewpoints in Figure 1 characterize the fundamental organization of the system:
- The Functional Viewpoint describes the system's functional elements as well as their responsibilities, interfaces, and primary interactions.
- The Information Viewpoint describes the way that the architecture stores, manipulates, manages, and distributes information.
- The Concurrency Viewpoint describes the concurrency structure of the system, mapping functional elements to concurrency units to clearly identify the parts of the system that can execute concurrently and how this execution is coordinated and controlled.
The Development Viewpoint exists to support the system's construction. It describes how the architecture supports the software development process.
The last two viewpoints characterize the system once it's in its live environment.
- The Deployment Viewpoint describes the environment into which the system will be deployed, including capturing the dependencies the system has on its runtime environment.
- The Operational Viewpoint describes how the system will be operated, administered, and supported when it's running in its production environment.