|
Software Systems Architecture Nick Rozanski and Eoin Woods |
|
||
| [ HOME ] [ BOOK ] [ REVIEWS ] [ EVENTS ] [ RESOURCES ] [ LIBRARY ] [ ABOUT ] | ||||
NewsBig in JapanA Japanese translation of our book was published on 2 December 2008 and has already received three five-star reviews on Amazon Japan. Architectural TrainingRebecca Wirfs-Brock has developed a course, based in part on our book, which provides software architects with skills and knowledge that enable them to prepare, present, and explain their architectures to diverse stakeholders. Amazon ReviewsWe now have fifteen five-star reviews on Amazon.com. Thanks to all who have provided such strong endorsements. We are really pleased that people are finding it so useful. |
Introduction to PerspectivesWe use viewpoints (such as the Functional, Information, and Deployment viewpoints) to guide the process of capturing and representing the architecture as a set of views, with the development of each view being guided by the use of a specific viewpoint. When creating a view, your focus is on the issues, concerns, and solutions pertinent to that view. So, for an Information view, for example, you focus on things such as information structure, ownership, transactional integrity, data quality, and timeliness.Many of the important concerns that are pertinent to one view are much less important when considering the others: Data ownership, for example, is not key to formulating the Concurrency view, nor is the development environment a major concern when considering the Functional view. (Of course, the decisions taken in one view can have a considerable impact on the others, and it is a big part of the architect's job to make sure that these implications are understood. However, the concerns addressed in different views are largely different.) Although the views, when combined, form a representation of the whole architecture, we can consider them largely independent of one another - a disjoint partition of the whole architectural analysis. In fact, for any significant system, you usually must partition your analysis this way because trying to address the entire problem is too much to understand or describe in a single piece. Quality PropertiesMany architectural decisions address concerns that are common to many or all views. These concerns are normally driven by the need for the system to exhibit a certain quality property rather than to provide a particular function. In our experience, trying to address these aspects of an architecture by using viewpoints doesn't work well. Let's look at an example to understand why.Example. Security is clearly a vital aspect of most architectures. It has always been important to be able to restrict access to data or functionality to appropriate classes of users, and in the age of the Internet, good external and internal security is even more important. If some of your systems are exposed to the wider world, they are vulnerable to attack, and the consequences of a breach can be disastrous for finances or public relations. (The large number of high-profile Internet security failures in Europe and North America during the early part of the millennium illustrates this clearly.)As the example shows, there is an inherent need to consider quality properties such as security in each architectural view. Considering them in isolation just doesn't make sense, so using a viewpoint to guide the creation of another view for each quality property doesn't make sense either. Architectural PerspectivesGoing back to our example, although security is clearly important, representing it in our conceptual model of software architecture as another viewpoint doesn't really work. A comprehensive security viewpoint would have to consider process security, information security, operational security, deployment security, and so on: In other words, it would affect exactly the aspects of the system that we have considered so far using our viewpoints.Rather than defining another viewpoint and creating another view, we need some way to modify and enhance our existing views to ensure that our architecture exhibits the desired quality properties. We therefore need something in our conceptual model that can be considered "orthogonal" to viewpoints, and we have coined the term architectural perspective (which we shorten to perspective) to refer to it.
Definition. An architectural perspective is a collection of activities, tactics, and guidelines that are used to ensure that a system exhibits a particular set of related quality properties that require consideration across a number of the system's architectural views.
Although our use of the term perspective is new, many of the ideas behind it clearly aren't.
The issues addressed by perspectives are often referred to as nonfunctional requirements of the architecture,
although we prefer not to use this term.
With perspectives, we are trying to systematize what a good architect does anyway -
understand the quality properties that are required;
assess and review the architectural models to ensure that the architecture exhibits the required properties;
identify, prototype, test, and select architectural tactics to address cases when the architecture is lacking;
and so on.
A perspective provides a framework to guide and formalize this process.
This means that you never work with perspectives in isolation but instead use them with each view
to analyze and validate the qualities of your architecture and to drive further architectural decision making.
We describe this as applying the perspective to the view.
Our Perspective CatalogPart IV of our book defines several perspectives which form a set intended for application to the architectures of large-scale information systems. We list these below together with the quality that application of the perspective helps to achieve.
|
ReferenceViewpointsMain PerspectivesOther Perspectives |
| Copyright © 2005-2008 Nick Rozanski and Eoin Woods | URL: http://www.viewpoints-and-perspectives.info/index.php?page=persp-intro | Last changed: 1 February 2009 |