Perspective
A perspective is a way of examining a system’s architecture through the lens of a single, related cluster of quality attributes, rather than through the structural concerns a view addresses. Where a view describes a system from one stakeholder’s structural standpoint – eg. its components, its runtime behavior, or its deployment – a perspective cuts across those views, checking that a design decision made in one of them doesn’t undermine a quality concern that spans several.
Rozanski and Woods, who popularized the term, describe applying perspectives iteratively across a system’s architecture views to assess how design decisions affect a set of related concerns. They catalogue perspectives including accessibility, availability and resilience, development resource, evolution, internationalization, location, performance and scalability, regulation, security, and usability – each bundled with its own activities, tactics, and guidelines for satisfying it.
Because a perspective is applied across views, rather than owned by one, the same perspective – security, say – typically has something to say about the context view, the component view, and the deployment view alike, forcing the architect to check consistency between them, rather than treating each view’s design in isolation.
References
- Rozanski, N, and Woods, E (2011). Software Systems Architecture: Working with Stakeholders Using Viewpoints and Perspectives (2nd ed.). Addison-Wesley.