Of course, the use of views and viewpoints won’t solve all of your software architecture problems automatically. Although we have found that using views is really the only way to make the problem manageable, you need to be aware of some possible pitfalls when using the view-and-viewpoint-based approach.
- Inconsistency: Using a number of views to describe a system inevitably brings consistency problems. It is theoretically possible to use architecture description languages to create the models in your views and then cross-check these automatically (much as graphical modeling tools attempt to check structured or object-oriented methods models), but there are no such machine-checkable architecture description languages in widespread use today. This means that achieving cross-view consistency within an AD is an inherently manual process. To assist with this, Chapter 23 includes a checklist to help you ensure consistency between the standard viewpoints presented in our catalog in Part III.
- Selection of the wrong set of views: It is not always obvious which set of views is suitable for describing a particular system. This is influenced by a number of factors, such as the nature and complexity of the architecture, the skills and experience of the stakeholders (and of the architect), and the time available to produce the AD. There really isn’t an easy answer to this problem, other than your own experience and skill and an analysis of the most important concerns that affect your architecture.
- Fragmentation: Having several views of your architecture can make the AD difficult to understand. Each separate view also involves a significant amount of effort to create and maintain. To avoid fragmentation and minimize the overhead of maintaining unnecessary descriptions, you should eliminate views that do not address significant concerns for the system you are building. In some cases, you may also consider creating hybrid views that combine models from a number of views in the viewpoint set (e.g., creating a combined deployment and concurrency view). Beware, however, of the combined views becoming difficult to understand and maintain because they address a combination of concerns.