USC CSCI 578 Software Architectures Spring 2024 Supplemental Lecture Material Software Architectural Styles This document introduces a list of software architectural styles and the relevant information about the styles we discuss in CSCI 578 It will come in handy when you work on the assignments and exams The architectural styles introduced in this document are from the textbook and the list is not exhaustive There may be other architectural styles that we did not cover in this course USC CSCI 578 Software Architectures Spring 2024 Supplemental Lecture Material Style Main Program and Subroutines no shared memory Summary Decomposition based upon separation of functional processing steps Components Main program and subroutines Connectors Function procedure calls Data elements Values passed in out of subroutines Topology Static organization of components is hierarchical full structure is a directed graph Additional constraints imposed None Qualities yielded Modularity Subroutines may be replaced with different implementations as long as interface semantics are unaffected Typical uses Small programs pedagogical purposes Cautions Typically fails to scale to large applications inadequate attention to data structures Unpredictable effort required to accommodate new requirements Relations to programming languages or environments Traditional imperative programming languages such as BASIC Pascal or C Style Object Oriented Summary State strongly encapsulated with functions that operate on that state as objects Objects must be instantiated before the objects methods can be called Components Objects aka instance of a class Connector Method invocation procedure calls to manipulate state Data elements Arguments to methods Topology Can vary arbitrarily components may share data and interface functions through inheritance hierarchies Additional constraints imposed Commonly shared memory to support use of pointers single threaded Qualities yielded Integrity of data operations data manipulated only by appropriate functions Abstraction implementation details hidden Typical uses Applications where the designer wants a close correlation between entities in the physical world and entities in the program pedagogy applications involving complex dynamic data structures Cautions Use in distributed applications requires extensive middleware to provide access to remote objects Relatively inefficient for high performance applications with large regular numeric data structures such as in scientific computing Lack of additional structuring principles can result in highly complex applications Relations to programming languages or environments Java C 2 USC CSCI 578 Software Architectures Spring 2024 Supplemental Lecture Material Style Virtual Machines Summary Consists of an ordered sequence of layers each layer or virtual machine offers a set of services that may be accessed by programs subcomponents residing within the layer above it Components Layers offering a set of services to other layers typically comprising several programs subcomponents Connectors Typically procedure calls Data elements Parameters passed between layers Topology Linear for strict virtual machines a directed acyclic graph in looser interpretations Additional constraints imposed None Qualities yielded Clear dependence structure software at upper levels immune to changes of implementation within lower levels as long as the service specifications are invariant Software at lower levels fully independent of upper levels Typical uses Operating system design network protocol stacks Cautions Strict virtual machines with many levels can be relatively inefficient Style Client server Summary Clients send service requests to the server which performs the required functions and replies as needed with the requested information Communication is initiated by the clients Components Clients and server Connectors Remote procedure call network protocols Data elements Parameters and return values as sent by the connectors Topology Two level with multiple clients making requests to the server Additional constraints imposed Client to client communication prohibited Qualities yielded Centralization of computation and data at the server with the information made available to remote clients A single powerful server can service many clients Typical uses Applications where centralization of data is required or where processing and data storage benefit from a high capacity machine and where clients primarily perform simple user interface tasks such as many business applications Cautions When the network bandwidth is limited and there are a large number of client requests Style Batch Sequential Summary Separate programs are executed in order data is passed as an aggregate from one program to the next 3 USC CSCI 578 Software Architectures Spring 2024 Supplemental Lecture Material Components Independent programs Connectors The human hand carrying tapes between the programs aka sneaker net Data elements Explicit aggregate elements passed from one component to the next upon completion of the producing program s execution Topology Linear Additional constraints imposed One program runs at a time to completion Qualities yielded Severable execution simplicity Typical uses Transaction processing in financial systems Cautions When interaction between the components is required when concurrency between components is possible or required Relations to programming languages or environments None Style Uniform Pipe and Filter Summary Separate programs are executed potentially concurrently data is passed as a stream from one program to the next Components Independent programs known as filters Connectors Explicit routers of data streams service provided by operating system Data elements Not explicit must be linear data streams In the typical Unix Linux DOS implementation the streams must be text Topology Pipeline though T fittings are possible Qualities yielded Filters are mutually independent Simple structure of incoming and outgoing data streams facilitates novel combinations of filters for new composed applications Typical uses Ubiquitous in operating system application programming Cautions When complex data structures must be exchanged between filters when interactivity between the programs is required Relations to programming languages or environments Prevalent in Unix shells Style Blackboard Summary Independent programs access and communicate exclusively through a global data
View Full Document