Architecture Patterns Flashcards

1
Q

Components of Architectural Patterns

A

Context: situation that gives rise to a problem
Problem: problem outline and its variants, quality attributes
Solution: abstract description

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Architectural Pattern

A

Good starting point for most applications (particularly when you are not sure what architecture pattern is best suited for your application).
Context: to develop and evolve portions of the system independently.
• Problem: modules can be developed and evolved separately with little interaction among the parts, supporting portability, modifiability, and reuse.
• Solution: UI -> Business Logic -> Data Access

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Broker Pattern

A

For structuring distributed systems with decoupled components. Components can interact with others by invoking remote services. Broker is responsible for all the coordination and communication
among the components.
• Context: implementing systems with collaborative services: interoperations, connection, information exchange, and service availability.
• Problem: how to structure distributed software so that service users do not need to know the nature and location of service providers, to make it easy to dynamically change the bindings between users and providers.
• Solution: Broker -> Server Side Proxy & Client Side Proxy

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Pipe & Filter Pattern

A

Processes a stream of data in a unidirectional flow where components are referred to as filters, and pipes are those which connect these filters. The function of this architecture is to break down significant components/processes into independent and multiple components that can be processed simultaneously. Best suited for applications that process data in a stream using web services and can create simple sequences to complex structures.

  • Context: transform streams of data items from input to output, using reusable components
  • Problem: divide a system into reusable, loosely coupled components with simple, generic interaction mechanisms with flexible and dynamic combination of such reusable components, also support parallel executions of components.
  • Solution: filter -> pipe -> filter -> pipe -> filter
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Client-Server Pattern

A

A distributed application structure having two main components – a client and a server. Facilitates the communication between the client and the server, which may or may not be under the same network. A client requests specific resources to be fetched from the server. A single server can serve multiple clients. A single client can
use multiple servers.
• Context: there are shared resources and services that large numbers of distributed clients wish to access, and for which we wish to control access or quality of service
• Problem:
o For modifiability and reuse, factor out common
services and modify them in a single location or small
number of locations
o For scalability and availability, centralize the control of these resources and services while distributing the resources themselves across multiple physical servers

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Peer to Peer Pattern

A

Individual components are called peers. A peer can act as a client, a server, or both and change its role dynamically over time. Each computer on the network has considerable authority and the absence of a centralized server. Its capacity increases as more and more computers join the network.
• Context: distributed computing entities within dependent resources need to cooperate and collaborate to provide a service to a distributed community of users
• Problem: how can a set of ‘equal’ distributed computing entities be connected to each other via a common protocol, so that they can organize and share their services with high availability and scalability?

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Microkernel

A

Two types of components – a core system and several plug-in models. The core system works on minimal functionality to keep the system operational. Plug-in modules are independent components with specialized processing. The core system needs to know about which plug-in modules are available.
• Context: complex software systems serving as a platform for other software applications
• Problem: complex systems usually should be extensible and adaptable to emerging technologies, capable of coping with a range of standards and technologies. They also need to possess high performance and scalability qualities; as a result, low memory consumption and low processing demands are required.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Shared Data Pattern

A

Multiple components access data through a common data store. No single component is entirely responsible for the data or data store. Particularly useful when multiple components require a large amount of data. With shared-data systems, data and the data source are the primary medium of interaction.
• Context: various computing components need to share and manipulate large amounts of data. This data does not belong solely to any one of those components.
• Problem: to store and manipulate persistent data that is accessed by multiple independent components

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Multi-tier Pattern

A
Conceptually similar to the layers pattern. Layers are a module structure and deal with design-time elements. Tiers are either a component and connector or allocation structure and deal with runtime elements. Runtime structures are organized into logical groups. Logical groups may be allocated specific physical components, such as server or cloud platform.
• Context: in a distributed deployment, to distribute a system’s infrastructure into distinct sunsets, for operational or business reasons.
• Problem: to split the system into a number of computationally independent execution structures (groups of software and hardware) connected by some communication media, to provide specific environments optimal for operational requirements and resource usage
How well did you know this?
1
Not at all
2
3
4
5
Perfectly