- Identifying and Engaging Your Stakeholders
- Creating Views Using Viewpoints
- Viewpoints
- Applying Perspectives to Views
- Putting It All Together
Creating Views Using Viewpoints
We've all seen the "wallpaper" form of architectural description—a huge, yellowing piece of paper covering the wall with a single, heavily overloaded, all-encompassing model of the system. This document uses a mixture of formal and informal notations to describe the functional structure, software layering, data storage and flows, physical deployment environments, and possibly even the project development plan. And of course some other aspects of the system aren't represented at all (typically migration, testing, and operations).
This sort of architectural description is really the worst of all worlds: It simply isn't possible to describe a software architecture by using a single model. Such a model is hard to understand and is unlikely to clearly identify the architecture's most important features. It tends to poorly serve individual stakeholders because they struggle to understand the aspects that interest them; worst of all, because of its complexity, it's often incomplete, incorrect, or out of date.
It's impossible to capture the functional features and quality properties of a complex system in a single comprehensible model that is understandable by and of value to all stakeholders. A much better approach is to break the problem into more manageable pieces, portraying only those aspects or elements of the architecture that are relevant to one set of concerns. We call these pieces architectural views. This idea is not new, going back as far as the work of David Parnas in the 1970s and Philippe Kruchten (the "4+1" view model) in the 1990s.
More recently, IEEE Standard 1471 has formalized these concepts and brought some welcome standardization of terminology, on which the following definition is based: A view is a representation of one or more structural aspects of an architecture that illustrates how the architecture addresses one or more concerns held by one or more of its stakeholders.
An architectural view comprises a number of elements, the most important of which is one or more architectural models. Models help us cope with our inherent difficulty in coming to grips with complex concepts or ideas—an effective model brings out the important aspects of an architecture while hiding unimportant distractions. Views may also contain a definition of scope, principles, constraints, and other supporting material.