Architectural styles are reusable 'packages' of design decisions and constraints that are applied to an architecture to induce chosen desirable qualities. — Institute for Software Research, UCI
Styles provide a way to effectively reuse hard-won domain and engineering knowledge. Styles represent application-independent rules and decisions that can be applied to many systems in the same domain or product-family.
Styles are key in preventing architectural erosion and drift. Because style-based design decisions are documented up-front and pervasive through a system, they provide a way for future developers to extend a system without eroding its basic architectural principles.
Styles provide a bridge from quality needs to design. While identifying desirable qualities is easy, figuring out how to "design in" those qualities is often not. Styles provide guidance about how to design systems that meet specific targeted quality goals.
- Pipe-and-Filter - One of the simplest and most ubiquitous styles, pipe-and-filter makes for a good illustrative example of how style-based design decisions and constraints can impart desired qualities. For example, the pipe-and-filter style requires that all filters communicate using two byte-streams, an 'in' and 'out' stream. This guarantees the quality of syntactic compatibility: any two filters can be connected (although they may not necessarily do something useful). The pipe-and-filter style also allows for partial results to be sent from filter-to-filter. This improves the parallelizability of applications since multiple filters can work on parts of the data in parallel.
- C2 - (Chiron-2): a style that uses layered, loosely-coupled components that communicate through asynchronous messages to impart qualities such as component reusability, run-time dynamism, and distributability.
- REST - (Representational State Transfer): REST is the architectural style of the World Wide Web, and was developed here at ISR. It uses constraints such as the separation of resources from representations, statelessness, and caching to impart qualities such as scalability, flexibility, and performance.
- ARRESTED - (Asynchronous, Routed REST with Estimation and Decentralized Decisions): ARRESTED is an extension to the REST architectural style that uses techniques such as asynchrony, state estimation, and independent decision making to impart qualities such as decentralizability, reduced latency, and improved support for multiple agencies.
- PACE - (Practical Architectural Approach for Composing Egocentric Trust): PACE uses techniques such as explicit trust models, digital identities, and separation of internal and external belief data to improve systems' security, trustworthiness, and robustness in decentralized environments.
- Weaves: The Weaves style uses techniques such as explicit interfaces, object flows, and explicit flow routing to impart qualities such as parallelizability, performance, and adaptability.
- Protocols that leverage the REST style:
- Foundations for the study of software architecture (ACM SIGSOFT Software Engineering Notes, 1992)
- Network-based Architectural Styles (Excerpt from Fielding Ph.D. Dissertation)
- A Component and Message-based Architectural Style for GUI Software (TSE 1996, earlier version at ICSE 1995)
- Issues Encountered in Building a Flexible Software Development Environment (Software Development Environments 1992)
- Using Weaves for Software Construction and Analysis (ICSE 1991)