Software Architecture Styles for Network-based Applications Presented By Riyadh Mahmood 3/2/2010 Original Paper by: Roy T. Fielding. Outline • Architecture and Architecture Styles • Network-based Application Architectures • Network Application Architecture Classification Methodology • Architectural Styles for Network-based Applications Evaluations • Contributions • Related Work • Issues/Discussion 2 Software Architecture Background • Set of architectural elements that have a particular form, explicated by set of rationale (Perry and Wolf). • Architecture defines that system in terms of components and of interactions among those components. Specifies the structure and topology of the system. (Shaw et al). • More focus should be put on data-centric architectural modeling (Boasson, Jackson). • Software system will often have multiple operational phases (init, processing, re-init, shutdown). Each may have its own architecture consisting of components, connectors, data, configuration, and properties. 3 Software Architecture Styles • Characterizes a family of systems that are related by structural and semantic properties (Monroe). • Abstraction of element types and formal aspects from various specific architectures, perhaps concentrating on only certain aspect of an architecture (Perry & Wolf). • Pattern of interactions among typed components. Determines the vocabulary of components and connectors that can be used in instances of that style that adhere to a set of constraints (Garlan, Shaw, Clements). • These restricted view of architectural styles is a direct result of their definition of software architecture. Thinking of architecture as a formal description, rather than a running system, leads to abstraction based only in the shared patterns of box and line diagrams (Abowd). 4 Architecture Patterns and Views • In parallel with software engineering research, object oriented programming community has been exploring the use of patterns and a pattern languages (Gang of Four). • Primary benefit of patterns is that they describe, relatively complex protocols of interactions between objects as a single abstraction. • It is possible to view an architecture from many different perspectives. Static view, dynamic view, deployment view are some examples. 5 Network-based Application Architecture • System performance is dominated by network communication. • Nature of data elements will often determine whether or not a given architectural style is appropriate. • Network based vs. distributed. • Survey focused on application software not networking software. • Survey attempts to fill gap between software engineering research with network research. 6 Classification Methodology • Performance – Network Performance, User-perceived Performance, Network Efficiency • Scalability • Simplicity • Modifiability – Evolvability, Extensibility, Customizability, Configurability, Reusability • Visibility • Portability • Reliability 7 Architectural Styles for Network-based Applications Pipe and Filter Family • Pipe and Filter (PF) • Uniform Pipe and Filter (UPF) Input Medium Input Circular Shift Alphabetizer Output Output Medium 8 Architectural Styles for Network-based Applications Client Server Family • • • • • Client Server (CS), Layered System (LS) Layered-Client-Server (LCS), Client-Stateless Server (CSS) Client-Cache-Stateless-Server (C$SS) Layered Client-Cache-Stateless-Server (LC$SS) Remote Sessions (RS), Remote Data Access (RDS) L1 L2 L3 9 Architectural Styles for Network-based Applications Mobile Code Family • • • • Virtual Machine (VM) Remote Evaluation (REV) Code on Demand (COD) Layered-Code-on-Demand-Client-Cache-Stateless-Server (LCODC$SS) • Mobile Agent (MA) 10 Architectural Styles for Network-based Applications Replication Family • Replicated Repository (RR) • Cache ($) 11 Architectural Styles for Network-based Applications Event-based Integration and Hybrid Family Consumer • • • • Event Based Integration (EBI) C2 Consumer Distributed Objects (DO) Brokered Distributed Objects (BDO) Request Producer Reply Subscribe Receive Unsubscribe Push Infrastructure Announce Producer Publish 12 Architectural Styles for Network-based Applications Service Oriented Family* • Simple Object Access Protocol (SOAP) Web Services – Derivation of client-server • Representational State Transfer (REST) Web Services – Derivation of client-server • Social Computing Network (SCN) Services – Hybrid (event based, client server, peer-2-peer) *Not listed in original paper. 13 Contributions • Comprehensive survey of definitions of network based software architecture, styles and properties. • Restricting the scope reduces the variability of styles to a set that can be reasonably compared to system’s requirements. 14 Related Work • • • • • • Classification of Architectural Styles/Patterns Reference Models and Domain-specific Architectures Architectural Description Languages (ADL) Self Architecture (SASSY) Social Computing Networks (SCN) Architectural Middleware (Prism-MW) 15 Issues • Paper points out that it has generic use of “network” based. • Paper suggests to create separate classification for each type of communication problem – Large grain data retrieval – Remote info monitoring – Search – Remote control systems – Distributed processing 16 Issues/Discussion • How relevant today? • Evaluations seem subjective. Empirical data not provided. • Was there sufficient distinction between just architecture and “network-based” architecture? • The topic may be more relevant today because of pervasive systems. Network-based software is everywhere. • Client Server permutations shows how quickly purity of styles is lost. Exhaustive combinations feasible? 17 Issues/Discussion • Need to go further on the taxonomy of Network-based architectures – Self Architecting Network-based – Self Adapting Network-based – Mobile/Pervasive – Social Computing Network (smart {anything} network) • When self architecting, does/can the style change? • Where does cloud computing fit in? • Has there been a paradigm shift since paper written? Computers are increasingly dumb terminals again. 18