Software Architecture and Style Flashcards
Software Architecture Definition
Software architecture is considered as a description of the high level structure of a software system in terms of architectural elements and the interactions between them
what is a Component
A component is a unit of software that performs some functions at run-time.
Examples: programs, objects, processes, clients, servers, databases
What is a connector
Interactions among components:
communication, coordination, or cooperation among components.
Examples of Connectors
Examples: shared variable access, procedure calls, remote procedure calls,
communication protocols, data streams, transaction streams.
Architecture Design Process
Understand the problem
Identify design elements and their relationships
Evaluate the architecture design
Transform the architecture design
Key Architecture Principles
Build to change instead of building to last
Reduce risk and model to analyze
Use models and visualizations as a
communication and collaboration tool
Use an incremental and iterative approach
Key Design Principles 1
Separation of concerns
Single responsibility principle
Principle of least knowledge
Minimize large design upfront
Do not repeat the functionality
Key Design Principles 2
Prefer composition over inheritance while reusing the functionality
Identify components and group them in logical layers
Define the communication protocol between layers
Define data format for a layer
Pipe and Filter architecture Advantages
Concurrency
Reusability
Modifiability and low coupling between filters
Supporting both sequential and parallel execution
Architecture examples – Pipe and Filter architecture Disadvantages
Disadvantages:
Low dynamicity
Overhead
Process control Architecture description
Data comes from a set of variables, which controls the execution of process
Processing unit for changing the process control variables and a controller unit for calculating the amount of changes
A controller unit must have the following elements, for process control architecture:
Controlled variables
Input variables
Manipulated variables
Process definition
Sensor
Set point
Control algorithm
Examples:
Car-cruise control, anti-lock brakes, temperature
control
Describe Data-centered architecture
Data is centralized and accessed frequently by
other components, which modify data
Main purpose: integrity of data
Components interact only through the data store
Examples of Data-centered architecture
database architecture, which contains the central data and the data accessor
The flow of control differentiates the architecture into two sub-categories:
Repository
Blackboard
Repository architecture style:
Data store is passive
Clients (software components or agents) are
active, which control the logic flow
Client sends a request to the system to
perform actions
Computational processes are independent and triggered by incoming requests
look for Repository Architecture image
Advantages of repository architecture style
Scalability and reusability of agents as they do
not have direct communication with each
other
DisAdvantages of repository architecture style
Vulnerable to failure
Changes in data structure highly affect the
clients
Blackboard architecture style overview
Data store is active and its clients are passive
Logical flow is determined by the current data
status in data store
Blackboard component acts as a central data
repository
Blackboard architecture style Operations
Components act independently on common
data store in the blackboard
Processing is triggered by the state of the
blackboard