Software Architecture and Design Patterns

0.0(0)
studied byStudied by 0 people
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
Card Sorting

1/61

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

62 Terms

1
New cards

Pipe and Filter

A component reads streams of data on its inputs and produces streams of data on its outputs. Suitable for apps that require a series of independent computations on ordered data.

2
New cards

Components and Connectors

Components include Filters that apply local transformations to input streams incrementally. Connectors like Pipes transmit outputs of one filter to inputs of another.

3
New cards

Topology Variants

1. Filters do not share state with other filters. 2. Filters do not know the identity of their upstream or downstream filters. 3. Correctness of output does not depend on the order of incremental processing.

4
New cards

Specializations for pipeline design/processing

1. Pipelines restrict topologies to linear sequences. 2. Batch Sequential processes all input data before output. Example: Unix Shell Scripts.

5
New cards

Data-Centered/Repository

Central body stores data long-term for apps requiring manipulation in various ways. Components include Central Data Structure and Computation Components.

6
New cards

Components and Connectors (Repository)

Central Data Structure represents system state, Computation Components operate on it. Direct Memory Accesses connect to the central data structure.

7
New cards

Topology Variants (Repository)

1. Blackboard variant mediates cooperation between components. 2. Repository variant is the default style.

8
New cards

Implicit Invocation

A component broadcasts output consumed by other components without knowing the consumers. Components include Data Generators and Consumers.

9
New cards

Connectors (Implicit Invocation)

Used for communication, such as Procedure Calls or Event Bus. Variants include Publish-Subscribe and Event-Based.

10
New cards

Topology (Implicit Invocation)

Publish-Subscribe: Game Server uses remote procedure calls for broadcasting. Event-Based: Components emit and receive events over a central event bus.

11
New cards

Layered Architecture

Architecture separated into ordered layers where each layer communicates with adjacent layers. Specializations allow non-adjacent layers to communicate directly.

12
New cards

Components and Connectors (Layered)

Layers perform calculations and communicate with adjacent layers. Pre-Determined Protocols facilitate communication between layers.

13
New cards

Client-Server

Suitable for distributed data and processing across components. Components include Servers that provide specific services.

14
New cards

Clients

Components that call on services provided by server

15
New cards

Connectors

Term for: A network that allows client to access remote servers

16
New cards

Topology

Arrangement where clients communicate with servers, not directly with each other

17
New cards

File Servers

Primitive form of data service for sharing files across a network

18
New cards

Database Servers

Servers that process SQL requests from clients and return results

19
New cards

Advantages of Server Architecture

Data can be on multiple servers, known data locations, platform flexibility, easy server management

20
New cards

Disadvantages of Server Architecture

No central register of names/services, difficult to discover available services

21
New cards

Process-Control Overview

Feedback control system maintaining specified properties of process outputs

22
New cards

Process Definition

Includes mechanisms for manipulating process variables

23
New cards

Control Algorithm

Decides how to manipulate process variables

24
New cards

Process Variables

Include Controlled Variable, Input Variable, Manipulated Variable

25
New cards

Set Point

Desired value for a controlled variable

26
New cards

Sensors

Used to obtain values of process variables

27
New cards

Open-Loop Control System

Variant where process variable info is not used to adjust the system

28
New cards

Closed-Loop Control System

System where controlled variable is measured and used to manipulate process variables

29
New cards

Serverless Architecture Overview (Why it’s used)

Deploying code on demand to avoid constant server running

30
New cards

Function/Container

Component that performs a defined task when triggered

31
New cards

Events

Connectors for synchronous or asynchronous communication

32
New cards

Microservices Architecture Overview (Why it’s used)

Focuses on building modular services with well-defined interfaces for scalability and flexibility

33
New cards

Self-contained services

Decomposed apps into services that are independently deployable and maintainable

34
New cards

Properties of a Good Service

Single responsibility, independently deployable, not overly dependent, maintains data integrity

35
New cards

Syncronous Communication

Communication where sender waits for response from receiver (e.g., HTTP/S)

36
New cards

Asyncronous Communication

Communication where sender does not wait for response (e.g., Advanced Message Queuing Protocol)

37
New cards

Microservices

Decompose product service and payment service with defined APIs

38
New cards

Microservices Architecture

A system design where services are independently deployable and self-contained, allowing for isolated updates or bug fixes to specific services without affecting the entire system.

39
New cards

Scalability

Scaling delivery service for increased deliveries without affecting payment

40
New cards

Advantages of Microservices

Independent deployment, easier CI/CD, fault isolation, team autonomy

41
New cards

Disadvantages of Microservices

Increased cost, complex distributed system, communication challenges

42
New cards

Comparison of Serverless architecture with other architectures

Differences in cost, architecture, and development ownership

43
New cards

MVVM Overview

Model-View-ViewModel architecture for separating UI and logic

44
New cards

MVVM Components

Model (data), View (UI), ViewModel (binds view and model)

45
New cards

MVVM Connectors

Events and method calls between view, viewmodel, and model

46
New cards

MVVM Examples

RSS reader app showcasing view, viewmodel, and model interactions

47
New cards

Design Patterns

Reusable solutions to common problems in programming

48
New cards

Desirable Design Properties

High cohesion, low coupling, following the YAGNI principle

49
New cards

Anti-Patterns

Poor solutions like code duplication, multiple-personality class, blob, data class, data clump, feature envy, tradition breaker

50
New cards

Structural Design Patterns are: (Overview)

Design patterns that focus on organizing and assembling objects or classes in a way that enables their efficient interaction. Examples include Adapter and Composite patterns.

51
New cards

What is the intent of the Solution Design Pattern?

Composing objects into tree structures representing part-whole hierarchies.

52
New cards

Structure

Describes how the pattern is implemented.

53
New cards

Example

Picture constructed by combining multiple primitives.

54
New cards

Participants/Components of Composite Pattern

Components of the pattern: Component, Leaf, Composite, Client.

55
New cards

Decorator Design pattern

Motivation: Extending an object's functionality dynamically.

56
New cards

What are Behavioral Patterns?

Patterns concerning the interaction between classes or objects.

57
New cards

Strategy

Pattern for letting clients vary implementations according to specific needs.

58
New cards

Observer

Pattern for maintaining consistency between related objects.

59
New cards

Template Method

Pattern for defining algorithm steps and deferring type-specific steps to subclasses.

60
New cards

Singleton

Pattern to ensure a class has only one instance.

61
New cards

Factory Method

Pattern for letting subclasses decide which class to instantiate.

62
New cards

Abstract Factory

Pattern for creating families of related or dependent objects.