Architecture Styles

From Suhrid.net Wiki
Jump to navigationJump to search

Intro

  • It is a pattern of component types and their interactions.
  • Define constraints: how things are allowed to interact.
  • Architectural pattern is synonym for style.
  • Defining features:
    • Component types: e.g data store, processes etc.
    • Component layout: e.g. which process is allowed to access data store.
    • Connectors: e.g how are they connected ? RPC, Data stream ?
    • Constraints: On components - e.g. data store cant modify itself, On connections - no P2P communication allowed.

Data Centred

  • Characterised by the access/update of a central data store.
  • The data store can be passive (e.g. a file) or be active (e.g. blackboard)
  • Good for integration and extensibility. There is a low coupling - only the data is shared.
  • E.g. Transactional DB, Blackboard, CASE Tools.

Blackboard

  • If the current state of the central data is the main trigger for processes to execute, then the repository can be a blackboard.
  • A common knowledge base, the "blackboard", is iteratively updated by a diverse group of specialist knowledge sources, starting with a problem specification and ending with a solution.
  • Each knowledge source updates the blackboard with a partial solution when its internal constraints match the blackboard state.
  • In this way, the specialists work together to solve the problem.
  • Invocation of a KS is triggered by the state of the blackboard.

Data Flow Architectures

  • Characterized by viewing the system as a series of transformations on successive pieces of input data.
  • Orderly motion of data. Explicit pattern of data flow.
  • No direct interactions b/w components.
  • Objectives: Modifiability - plug in/out components. Reusability - sequence of components plugged together.

Batch Sequential

  • Processing steps are independent programs.
  • Each step runs to completion before next step can start.
  • Batch of data is transmitted as a whole between components.

Pipe and Filter

  • Similar to batch sequential, except that the computations (filters) work incrementally on the data.
  • Data is immediately passed - i.e. it is streamed and not batched.
  • No state is retained between computations.
  • Pipes carry data from output of one computation (filter) to another.
  • e.g. Unix Shell - ls | grep "java" | wc -l
  • Advantages:
    • Simple, easy to reuse - a pipe and filter system can be made into another filter.
    • Support concurrency.
  • Disadvantages:
    • Filters operate as a separate process (process overhead). They cannot cooperate.
    • Lowest common denominator of data has to be used for data stream - e.g. ASCII text.

Virtual Machine Architecture

  • Main goal is to achieve portability.
  • A virtual machine is a software style that simulates/provides interface to functionality of underlying hardware/software platform.
  • biggest e.g JVM.
  • Running program through an interpreter adds flexibility through the ability to interrupt and query program and introduce changes at runtime. But there is a performance penalty.
  • Virtual machine structure. The interpreter selects an instruction, updates its internal state and based on instruction potentially updates the program's data.

VMInterpreter.png

Call and Return Architecture

  • Classic programming structure. Decompose program into smaller structures.
  • Goals of achieving modifiability and scalability.
  • Many different styles:
    • Main program and subroutine
    • RPC

OO Style

  • Encapsulate data and operations together.
  • Encapsulation, Polymorphism and Inheritance.

Layered Style

  • Components are assigned to layers to control component interaction.
  • Each level communicates with only its immediate neighbours, Layer N can use services of only layer N-1 and delegates subtasks to it.
  • Goal is to achieve qualities of modifiability and portability.
  • There can be a relaxed layer - where a layer talks to layers other than immediate neighbours.
  • Most common e.g. is the OSI protocol stack.
  • Advantage
    • Increased levels of abstraction.
    • Confinement of change - change can max affect to other layers.
  • Disadvantage:
    • Difficult to structure systems in layers.
    • Performance may require closer coupling between higher layers and lower layers.

Independent Component Architectures

  • Consist of a no of independent comp's which that communicate through messages.
  • Messages may be passed to named participants, or unnamed participants.
  • Goal of modifiability by decoupling various portions of computations.

Event Systems

  • Components announce data they wish to share (publish) with their environment - a set of unnamed components.
  • Other components may register an interest in the class (subscribe).
  • Typically a message manager manages communication - providing the decoupling between the publisher and the subscriber.

Communicating Processes

  • Processes communicate directly.
  • Single machine - signals.
  • Multiple machines - RPC. TCP etc.
  • classic e.g. client server architecture. Server works synchronously or asynchronously (meaning client has his own thread of control).