Architecture Styles
From Suhrid.net Wiki
Contents
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