1 / 28

architecture styles patterns

Architecture Styles

paul2
Download Presentation

architecture styles patterns

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    1. Architecture Styles & Patterns

    3. Families of Architectural styles Call/Return Main Program/Subroutine Remote Procedure Call (RPC) Layered (API) Object Oriented Virtual Machine Interpreter Rule-based e.g. Prolog System Data-Flow Batch Sequential Pipe and Filter Data-Centered Repository Blackboard Independent Components (Loosely Coupled) Communicating Processes Event Based ? Implicit Invocation, Explicit Invocation

    4. Some Architectural Styles This diagram shows a small catalog of architectural styles, organized by is-a relations. Each related group shows a different style type and its substyles. For example, in the box at the top of the diagram, "event systems" is a substyle of "independent components." Event systems themselves have two substyles: implicit and explicit invocation. In the next section of the lecture, we will take a closer look some of these styles. This diagram shows a small catalog of architectural styles, organized by is-a relations. Each related group shows a different style type and its substyles. For example, in the box at the top of the diagram, "event systems" is a substyle of "independent components." Event systems themselves have two substyles: implicit and explicit invocation. In the next section of the lecture, we will take a closer look some of these styles.

    5. Call and Return architectures Achieve modifiability and scalability. Sub-styles: Main Program and Subroutine hierarchically decompose a program each component get control and data from its parent and pass it to children. Remote Procedure Call Main Program and Subroutine where parts are distributed on a network. Increase performance (multiple processors). Layered (accessed via API) Object Oriented

    6. Main Program/Subroutine Style Early goals: reuse, independent development Example: hierarchical call/return style The main-program-and-subroutine architecture, as shown in the figure above, is the classical programming paradigm. The goal is to decompose a program into smaller pieces to help achieve modifiability and enable reuse. A program is decomposed hierarchically. There is typically a single thread of control and each component in the hierarchy gets this control (optionally along with some data) from its parent and passes it along to its children. In addition to facilitating modifiability, this hierarchy of subroutines also enables independent development of various parts of the program to be developed separately by different work teams.The main-program-and-subroutine architecture, as shown in the figure above, is the classical programming paradigm. The goal is to decompose a program into smaller pieces to help achieve modifiability and enable reuse. A program is decomposed hierarchically. There is typically a single thread of control and each component in the hierarchy gets this control (optionally along with some data) from its parent and passes it along to its children. In addition to facilitating modifiability, this hierarchy of subroutines also enables independent development of various parts of the program to be developed separately by different work teams.

    7. Object-Oriented/Abstract Data Style Goals More natural modelling of real world Reuse by refinement (sub-classing & polymorphism) Encapsulation: Information hiding Objects Maintain data integrity Hide data representation Communicate through messages Advantages System is a set of independent agents Improve maintenance and evolution Good for reuse. Disadvantages For interaction, an objects must know the identity of the target Scale up can be inefficient and slow The object-oriented or abstract data types systems, as shown in the figure above, are the modern version of call-and-return architectures. The object-oriented paradigm, like the abstract data type paradigm from which it evolved, emphasizes the bundling of data and the knowledge of how to manipulate and access that data. The goal is to achieve the quality of modifiability. This bundle is an encapsulation that hides its internal secrets from its environment. Access to the object is allowed only through provided operations, typically known as methods, which are constrained forms of procedure calls. This encapsulation promotes reuse and modifiability, principally because it promotes separation of concerns: the user of a service need not know, and should not know, anything about how that service is implemented. The main features that distinguish the object-oriented paradigm from abstract data types are inheritance (the hierarchical sharing of definitions and code) and polymorphism (the ability to determine the semantics of an operation at runtime).The object-oriented or abstract data types systems, as shown in the figure above, are the modern version of call-and-return architectures. The object-oriented paradigm, like the abstract data type paradigm from which it evolved, emphasizes the bundling of data and the knowledge of how to manipulate and access that data. The goal is to achieve the quality of modifiability. This bundle is an encapsulation that hides its internal secrets from its environment. Access to the object is allowed only through provided operations, typically known as methods, which are constrained forms of procedure calls. This encapsulation promotes reuse and modifiability, principally because it promotes separation of concerns: the user of a service need not know, and should not know, anything about how that service is implemented. The main features that distinguish the object-oriented paradigm from abstract data types are inheritance (the hierarchical sharing of definitions and code) and polymorphism (the ability to determine the semantics of an operation at runtime).

    8. Layered Hierarchies Goals: Increased Cohesion, Portability, Packaging, Standardization Examples: ISO Open Systems, 7 Layer model, TCP/IP, Motif Components: Hierarchical organization in layers Each layer provides services to the one outside it Each layer acts as a client to the layer inside it Some cases all layers have access to all or some other layers Other systems constrain access only to close layers Connectors: API and the protocols between layers. Advantages: Supports design by abstraction levels. Supports evolution: Easy to add and/or modify a current layer Disadvantages: System performance may suffer from unnecessary layering overhead (function calls) Not always easy to structure in clean layers. Requirements don't make it evidently clear

    9. Data-Centered Style The data-centered style shown here has a passive repository (you can tell this because no control enters it). At the heart of this style is a centralized data store that communicates with a number of clients. The means of communication (sometimes called the coordination model) distinguishes the two subtypes: repository (the one shown above) and blackboard. A blackboard sends notification to subscribers when data of interest changes, and thus, is active. A blackboard differs from the figure shown above in that it would be drawn with control arrows emanating from the shared data. Note that when the clients are built as independently executing processes, what we have is a client-server style that belongs in the independent-component section of the style catalog. Thus, we see that styles are not rigidly separated from one another.The data-centered style shown here has a passive repository (you can tell this because no control enters it). At the heart of this style is a centralized data store that communicates with a number of clients. The means of communication (sometimes called the coordination model) distinguishes the two subtypes: repository (the one shown above) and blackboard. A blackboard sends notification to subscribers when data of interest changes, and thus, is active. A blackboard differs from the figure shown above in that it would be drawn with control arrows emanating from the shared data. Note that when the clients are built as independently executing processes, what we have is a client-server style that belongs in the independent-component section of the style catalog. Thus, we see that styles are not rigidly separated from one another.

    10. Blackboard Architecture Applications Complex data interpretation (signal processing, speech/pattern recognition) Shared access to data with loosely coupled agents Components: Blackboard: To manage Central data Knowledge Sources Evaluate their applicability Compute a result Update Blackboard Control Monitor Blackboard Schedule Knowledge Sources activities

    11. Blackboard Architecture Algorithm

    12. Blackboard: Hearsay- A Speech Recognition System Input: waveform representation of speech Output: machine representation of phrases

    13. Virtual Machine Style - Interpreters The figure shows three kinds of data: the program being interpreted, the program's data (such as the values of variables assigned in the execution of the program), and the internal state of the interpreter (such as the values of registers or the current statement being executed). The interpretation engine selects an instruction from the program being interpreted, updates its internal state, and based on the instruction, potentially updates the program's data. Executing a program via an interpreter adds flexibility through the ability to interrupt and query the program and introduce modifications at runtime, but there is a performance cost because of the additional computation involved in execution.The figure shows three kinds of data: the program being interpreted, the program's data (such as the values of variables assigned in the execution of the program), and the internal state of the interpreter (such as the values of registers or the current statement being executed). The interpretation engine selects an instruction from the program being interpreted, updates its internal state, and based on the instruction, potentially updates the program's data. Executing a program via an interpreter adds flexibility through the ability to interrupt and query the program and introduce modifications at runtime, but there is a performance cost because of the additional computation involved in execution.

    14. Microkernel Allows adaptability to changing system requirements Separates the functional core from extended functionality and customer-specific parts Selects and uses primitives to provide and implement new interfaces Offers communication facilities Encapsulates system dependencies Manages and control resourcese.g. process creation and cloning. Examples of Microkernals Chorus Windows NT – offers external servers for, OS/2, POSIX, Win32 applications Mach

    15. Microkernel

    16. Microkernel Components Internal Server: Extends the microkernel Implements additional services Encapsulates some system specifics Example: Drivers: device, comm etc External Server: Uses Microkernel for implementing its own view of application domain (layer of abstraction on top of mechanisms), i.e. Provides programming interfaces for its clients Implement an existing application platform Example: OS/2 external server, UNIX external server

    17. Microkernel Components Client An application associated with exactly one external server Adapter - An interface between clients and their external servers - Hides system dependencies from clients (e.g: Comm facilities) - Invokes methods of external servers on behalf of clients Example: External server implements OS/2, Adapter implements OS/2 programming interface

    18. Microkernel

    19. Independent Components Consists of independent processes or objects communicating through messages. No control between components. Achieve modifiability (decouple various portions of the computation). Include: Communicating Processes Possible topologies (ring, star, etc) Peer to Peer Client /Server. Event Systems: Implicit Invocation: based on change notification Explicit Invocation ? Tight coupling

    20. Middle Tier infrastructure (Middle-Ware) Connectivity software consists of a set of enabling services allow multiple processes running on one or more machines to interact across a network Examples: Object Management Group's Common Object Request Broker Architecture (CORBA), Microsoft's Component Object Model (COM), DCOM

    23. Middle Tier Infrastructure (Middle-ware) Application Programming Interfaces (API) allow applications: Location transparently across the network, providing interaction with another application or service To be independent from network services To be reliable and available To scale up in capacity without losing functionality

    24. Common Object Request Broker Architecture (CORBA) Specification of a standard architecture for Object Request Brokers (ORBs) Purpose Allow ORB products development that support Application portability and inter-operability Across different programming languages, hardware platforms, operating systems, and ORB implementations

    25. Common Object Request Broker Architecture (CORBA) All objects defined in CORBA use an Interface Definition Language (IDL). Language mappings are defined from IDL ? C, C++, Ada95, and Smalltalk80. Allows language heterogeneity IDL C++ Interface MineToCee Class MineToCee: { void myOper (long ArgA); public vitural CORBA::Object } { virtual void myOper (CORBA::long ArgA); }

    27. Common Object Request Broker Architecture (CORBA) ORB Core - CORBA runtime infrastructure. ORB Interface - Standard interface (defined in IDL) to functions provided by all CORBA- compliant ORBs. IDL Stubs Generated by the IDL processor for each interface defined in IDL Hide low-level networking details of object communication from the client, Present a high-level, object type-specific application programming interface (API).

    28. Common Object Request Broker Architecture (CORBA): Details 1 Object Request Broker (ORB): Decouples Client from Service ? Location and Functional Transparency Client requests appear to him to be local procedure calls. When a client invokes an operation, the ORB is responsible for finding the object implementation, transparently activating it if necessary, delivering the request to the object, and returning any response to the caller. ORB Interface – A set of tasks and libraries providing functions for Converting object references to strings and vice versa, Creating argument lists for requests made through the Dynamic Invocation Interface (DII)

    29. Common Object Request Broker Architecture (CORBA): Details 2 CORBA IDL Stubs and Skeletons: Client Side is called IDL Stub Server Side is called IDL Skeleton + Produced by IDL Compiler in the target programming language + Stubs and the Skeleton are the ``glue'' between the client and server applications, and the ORB. + Only allows remote invocation through RPC (Remote Procedure Calls). RPC’s can be implemented by providing the address pointer to the client to the (server) procedure it needs to invoke.

    30. Common Object Request Broker Architecture (CORBA): Details 3 How to Implement Remote Procedure Calls

    31. Common Object Request Broker Architecture (CORBA): Details 4 Dynamic Invocation Interface (DII) Client Side This interface allows a client to directly access services provided by the ORB. Applications use the DII to dynamically issue requests to objects without requiring IDL interface-specific stubs to be linked in. Unlike IDL stubs (which only allow RPC-style requests), the DII also allows clients to make Non-blocking requests Oneway (send-only) calls.

    32. Common Object Request Broker Architecture (CORBA): Details 4 Dynamic Skeleton Interface (DSI) – Server side Allows an ORB to deliver requests to an object implementation that does not have compile-time knowledge of the type of the object it is implementing. The client making the request has no idea whether the implementation is using the type-specific IDL skeletons or is using the dynamic skeletons. Object Adapter Assists the ORB with delivering requests to the object and activating the object. The Adapter hides the details of the object, e.g. whether it is a DB object or a library object.

    33. IDL Use Example HelloWorld: Interface, Component and Home

    34. Simple HelloWorld & HelloHome Executors

    35. CLIENT for Helloworld Component

    36. Other Brokers: Microsoft’s Component Object Model (COM, DCOM) COM Framework for integrating components. Allows developers to build systems by assembling reusable components from different vendors. Distributed COM (DCOM) For distributed network-based interactions. OLE (Object Linking & Embedding), ActiveX, MTS Higher-level application services built on top of COM

    37. MS, Component Object Model (COM, DCOM) OLE Provides services (Object Linking and Embedding) used in the creation of compound documents (documents generated from multiple tool sources) ActiveX extension to allow components to be embedded in Web sites. MTS extension with enterprise services (e.g: transaction, security) to allow Enterprise Information Systems (EIS) to be built using COM components. COM+ Integrates MTS services and message queuing into COM, and makes COM programming easier integration with Visual Basic, Visual C++, J++

    38. MS, Component Object Model (COM, DCOM) Services implemented by COM objects are exposed through a set of interfaces COM defines a binary structure for the interface between the client and the object. COM objects and interfaces specified using Microsoft Interface Definition Language (IDL)

    39. Other Brokers: Component Object Model (COM, DCOM)

    40. Component Object Model (COM, DCOM) Every COM object runs inside a server: In-process server: client and server execute in the same process Local Object Proxy: server running in a different process but on the same machine. Communication through inter-process communication. Remote Object Proxy: remote server on another machine. Communication through DCE RPC (supported by DCOM). All COM objects are registered with a component database.

    41. Component Object Model (COM, DCOM) All COM objects are registered with the component database.

    42. Peer-to-Peer Architecture No distinction between processes (nodes) Each maintain its own data-store, as well as a dynamic routing table of addresses of other nodes Examples: gnutella, freenet.

    43. Event-Based (Implicit Invocation) Some components announce (broadcast) events Other components register interest in events Associate a routine to each event, automatically executed when the event is produced. A part of the system is in charge of transmitting events between producers and consumers. Semantic constraints Announcers of events don't know which components are affected No assumption about order of processing Uses: Integrate tools Ensure database consistency

    44. Event-Based (Implicit Invocation) Advantages High reuse potential Ease evolution Disadvantages Components/Procedures have to register for an event No insurance that an event will be treated Exchange of data a shared repository is often needed. Difficult to reason about system correctness. Compiler can no longer do early detection Difficulty to trace without debugging tools Data typing becomes very weak

    45. Client/Server Architectures

    46. One & Two Tier Client/Server Architectures

    47. Three Tier Client/Server Architecture

    48. Proxy Pattern Proxy: Is a representative, surrogate or placeholder for another object (a server object) Allows: transparency and simplicity of access to servers e.g: to make calls to remote objects with the same syntax as a local call run-time efficiency, cost-effectiveness, safety

    49. Proxy Pattern - Components Client uses interface provided by proxy to request services Original (RealSubject) implements a service Proxy provides the interface of the original to clients ensures a safe, efficient and correct access to the original AbstractOriginal (Subject) abstract base class for proxy and original

    50. Proxy Pattern - Components

    51. Proxy Pattern - Variants Remote Proxy Local representative for an object in a different address space Cache Proxy Local clients can share results from remote components Protection Proxy Controls access to the original object Firewall Proxy Controls access from outside world.

    52. Broker Pattern Client-Server pattern to: hide system/implementation details from clients allow remote, location-transparent service access allow exchange, addition, deletion of components at run-time Examples of implementations CORBA OLE (On Line Extension) COM/DCOM (MS Component Object Model)

    53. Broker Pattern - Components

    54. Broker Pattern - Components Client Implements user functionality Sends requests to servers through a client-side proxy Server Implements services Registers itself with the local broker Sends responses and exceptions back to client through server-side proxy

    55. Broker Pattern - Components Broker: (un-)register servers offers APIs transfers messages ensures error recovery interoperates with other brokers locates servers Related Pattern, Bridge: encapsulates network-specific functionality mediates between local broker and remote broker

    56. Broker Pattern - Components Client-side Proxy Encapsulates system-specific functionality Mediates between client and broker Server-side Proxy Calls services within server Encapsulates system-specific functionality Mediates between server and broker

    57. Broker Pattern – Runtime (High-level)

    58. Broker Pattern – Runtime (Detailed)

    59. Observer Pattern

    60. Data Flow Patterns Achieve reuse and modifiability System is a succession of transformations on pieces of input data Include: Batch Sequential Components, independent programs, execute and complete one after the other. Data transmitted as a whole between steps. Pipes and Filters incremental transformation of data by successive components. Data flows as a stream between between components.

    61. Pipes and Filters Filters Read a stream of data on its inputs and produce a stream of data on its outputs. Connectors (pipes) Transmit output produced by filters to other filters.

    62. Pipe & Filter example: Compiler

    63. Process Control Systems Continually running system used for maintaining correct values. The errors are compensated for through feedback. Examples Temperature control system Power plant control system Variables Process variables properties of the process that can be measured value obtained by sensors Controlled variables process variables whose value the system intend to control Reference value (set point) desired value for a controlled variable

    64. Process Control Architectures Open Loop system doesn't use information about process variables to adjust the system. rarely suited to physical processes in the real world. Closed Loop system uses information about process variables to manipulate process variables in order to compensate for variations in process variables and operation conditions.

    65. Process Control (Closed Loop) Feedback control system Measures a controlled variable Adjusts the process accordingly to keep it near an acceptable set point

    66. Process Control (Closed Loop) Feedforward control system Anticipate changes to controlled variables by monitoring other process variables.

    67. Process Control - Issues Computational elements process definition (include mechanisms for changing process variables) control algorithm (how to decide when and how to make changes) Data elements (process variables, set point) Control loop scheme (open-loop, closed-feedback, closed-feed forward) Drawbacks - One must decide What variables to monitor What sensors to use How to calibrate them How to deal with timing of sensing and control

    68. Domain-Specific Architectures Library of different architecture styles Provides information for new systems in the same area Avoids rework on already known assumptions and relationships Heterogeneous systems. Locational Simultaneous Hierarchical

    69. Example: Locational Heterogeneity A-7E used a cooperating process style in function drivers and call/return style elsewhere. Systems are seldom built from a single style; rather, most systems use a mixture of styles, and we say that such systems are heterogeneous. There are three types of heterogeneous systems: locational, simultaneous, and hierarchical. The following three slides examine each of these types in turn. Systems are seldom built from a single style; rather, most systems use a mixture of styles, and we say that such systems are heterogeneous. There are three types of heterogeneous systems: locational, simultaneous, and hierarchical. The following three slides examine each of these types in turn.

    70. Example: Hierarchical Heterogeneity Event system is a Blackboard, but, when decomposed, the component shows a layered style Systems are seldom built from a single style; rather, most systems use a mixture of styles, and we say that such systems are heterogeneous. There are three types of heterogeneous systems: locational, simultaneous, and hierarchical. The following three slides examine each of these types in turn. Systems are seldom built from a single style; rather, most systems use a mixture of styles, and we say that such systems are heterogeneous. There are three types of heterogeneous systems: locational, simultaneous, and hierarchical. The following three slides examine each of these types in turn.

    71. Example: Simultaneous Heterogeneity A-7E simultaneously used layered, cooperating process, and object-based styles Systems are seldom built from a single style; rather, most systems use a mixture of styles, and we say that such systems are heterogeneous. There are three types of heterogeneous systems: locational, simultaneous, and hierarchical. The following three slides examine each of these types in turn. Systems are seldom built from a single style; rather, most systems use a mixture of styles, and we say that such systems are heterogeneous. There are three types of heterogeneous systems: locational, simultaneous, and hierarchical. The following three slides examine each of these types in turn.

More Related