Loading page
Mantinomia is preparing the next page.
Opening reader
The work, references, and reader tools are being prepared.
Pattern | Short explanation | Example scenario where it should be used |
|---|---|---|
Abstract Factory | Creates families of related objects without specifying their exact classes. | A desktop app needs matching Windows, macOS, and Linux UI widgets. |
Blackboard | Lets components communicate through a shared central knowledge store. | A game AI system lets pathfinding, enemy detection, and strategy modules share world information. |
Bridge / Bridges | Connects mismatched interfaces so components can communicate. | A new REST service must communicate with an older SOAP-based payment system. |
Broker | Uses an intermediary between clients and service providers. | A distributed app uses a broker so clients do not need to know which server handles each request. |
Client-Server | Splits the system into clients that request services and servers that provide them. | A mobile app asks a backend server for user profiles, messages, or files. |
Composite | Treats individual objects and groups of objects through the same interface. | A GUI framework treats buttons, panels, and nested panels as drawable UI elements. |
Dependency Injection | Provides an object’s dependencies from the outside instead of creating them internally. | A service receives a fake database during testing and a real database in production. |
Entity Component System | Builds objects from flexible components instead of deep inheritance trees. | A game creates an enemy from Position, Health, AI, and Renderable components. |
Factory Method | Lets a method decide which concrete object type to create. | A file importer creates a CSV parser, JSON parser, or XML parser depending on the file type. |
Hierarchical Task Trees | Breaks complex behavior into a tree of smaller tasks. | A game NPC has a task tree for attacking the player: move closer, aim, shoot, and reload. |
Intercepting Filter | Adds processing steps before or after a request reaches its target. | A web app applies logging, authentication, and compression filters around HTTP requests. |
Intercepting Validator | Checks or validates a message before it reaches the target component. | An API gateway checks request signatures and JSON schema before forwarding traffic. |
Layers / Layered | Organizes a system into levels where each layer uses the layer below it. | A business app separates presentation, business logic, and database access. |
Map-Reduce | Splits large data processing into smaller parallel tasks and combines the results. | A log-analysis system counts events across terabytes of server logs. |
Mediator / Mediators | Coordinates communication between components so they do not depend directly on each other. | Several business systems exchange orders through a mediator that translates and routes messages. |
Memento | Saves and restores an object’s previous state without exposing its internals. | A text editor stores document snapshots so the user can undo changes. |
Microservice Architecture | Builds a system from small, independently deployable services. | An e-commerce system separates catalog, cart, payment, and shipping into separate services. |
Model-View-Controller / MVC | Separates data, user interface, and control logic. | A web app keeps product data in the model, HTML in the view, and user actions in the controller. |
Monitor-Actuator | Separates monitoring logic from actuator execution so commands can be checked first. | A robot arm verifies that a movement command is safe before the motor performs it. |
Multi-Tier | Splits a system into logical tiers, such as presentation, application, and data. | A banking system separates web frontend, application server, and database server. |
Observer | Notifies dependent objects automatically when something changes. | A stock-price app updates several charts automatically when the price changes. |
Peer-to-Peer | Lets components act as equals, both requesting and providing services. | A file-sharing app lets each user both download from and upload to other peers. |
Pipe & Filter / Pipe-and-Filter | Sends data through a sequence of independent processing steps. | A compiler passes source code through lexing, parsing, optimization, and code generation. |
Plug-in / Microkernel | Keeps a small core system and adds optional features through plug-ins. | An IDE lets users install plug-ins for Python, Java, Git, or debugging. |
Publish-Subscribe | Publishers send events, and subscribers receive the events they are interested in. | A notification system sends “order shipped” events to email, SMS, and analytics subscribers. |
Separated Safety | Keeps safety-critical parts separate from non-critical parts. | A train-control system keeps emergency braking logic separate from passenger information screens. |
Service Mesh | Manages communication between microservices through a dedicated communication layer. | A microservice system uses a service mesh for routing, retries, encryption, and monitoring. |
Service-Oriented Architecture / SOA | Builds systems from independent services that communicate through standard interfaces. | An enterprise system connects billing, inventory, and customer services across different platforms. |
Shared-Data | Lets components communicate by reading and writing shared persistent data. | Several hospital systems read and write patient records through a shared database. |
Singleton | Ensures that a class has only one instance. | A program uses one shared configuration object loaded at startup. |
Strategy | Lets an object change its behavior by swapping the algorithm it uses. | A payment system chooses different fee-calculation strategies for credit card, invoice, or PayPal. |
Template Method | Defines the overall structure of an algorithm while subclasses fill in specific steps. | A report generator always loads data, formats it, and exports it, but each report type customizes the steps. |
Wrapper / Wrappers | Surrounds a component to adapt, hide, or preserve its interface. | A new system wraps an old legacy module so it can be used without changing its code. |
Category | Tactic / mechanism | Why / when to use it | Example scenario | Relevant quality attributes, ranked |
|---|---|---|---|---|
Detect faults | Monitor | Tracks component health so faults or congestion are detected early. | A service monitor notices that a backend server stopped responding. | Availability > Performance > Security |
Detect faults | Ping/Echo | Sends a message and waits for a reply to check reachability and latency. | A load balancer pings servers before routing traffic to them. | Availability > Performance |
Detect faults | Heartbeat | Sends periodic “I am alive” messages. Useful for detecting failed processes quickly. | A primary service expects heartbeats from a replica every few seconds. | Availability |
Detect faults; Unsafe State Detection | Timestamp | Uses time/order information to detect incorrect event ordering. | A distributed system rejects an old sensor message. | Safety > Availability |
Detect faults; Unsafe State Detection | Condition Monitoring | Checks process, device, or data state to detect faults. | A system verifies checksums to detect corruption. | Availability > Safety |
Detect faults; Unsafe State Detection | Sanity Checking | Checks whether values or behavior stay within plausible limits. | A controller rejects a temperature reading of 10,000°C. | Safety > Availability |
Detect faults | Voting | Compares outputs from replicas and chooses the majority or detects disagreement. | Three processors compute a value and the system accepts the majority result. | Availability > Safety |
Detect faults | Exception Detection | Identifies deviations from expected behavior. | A service detects that a request handler entered an invalid state. | Availability > Testability |
Detect faults | Self-Test | Lets a component check its own operation. | A device runs diagnostic checks during startup. | Availability > Testability |
Recover from faults / Preparation and Repair | Redundant Spare | Keeps a backup component ready to take over. | A backup database server takes over when the primary fails. | Availability |
Recover from faults / Preparation and Repair; Manage Deployment Pipeline; Recovery | Rollback | Restores a previous safe state or previous software version. | A failed deployment is rolled back to the last stable version. | Availability > Deployability > Safety |
Recover from faults / Preparation and Repair | Exception Handling | Catches and manages runtime errors instead of letting the system crash. | A payment service catches a timeout and returns a controlled error. | Availability > Modifiability |
Recover from faults / Software Upgrade | Functional Path | Loads updated code into pre-allocated RAM at runtime. | A control system loads a patched function while operating. | Deployability > Availability |
Recover from faults / Software Upgrade | Class Patch | Adds or changes class data/methods at runtime. | A running application patches a class to fix a critical bug. | Deployability > Modifiability > Availability |
Recover from faults / Software Upgrade | Hitless Upgrade | Uses redundancy so upgrades happen without visible interruption. | One server instance is upgraded while another keeps serving users. | Deployability > Availability |
Recover from faults / Reintroduction | Shadow | Runs a failed or upgraded component in shadow mode before trusting it. | A new recommendation service receives real traffic but its output is not used yet. | Availability > Deployability > Testability |
Recover from faults / Reintroduction | State Resynchronization | Aligns state between active and standby components. | A standby database receives checkpoints from the active database. | Availability |
Recover from faults / Reintroduction | Escalating Restart | Restarts increasingly larger parts of the system. | Restart one service, then a subsystem, then the whole node if needed. | Availability |
Recover from faults / Reintroduction | Non-Stop Forwarding | Keeps data flowing through alternate paths during failure. | A router keeps forwarding packets while its control plane restarts. | Availability > Performance |
Recover from faults / Preparation and Repair | Retry | Reattempts failed operations. Useful when faults are temporary. | A service retries a failed network request after a short delay. | Availability > Performance |
Recover from faults / Preparation and Repair | Ignore Faults / Ignore Faulty Behavior | Bypasses minor faults to keep the main service running. | A logging failure is ignored so the user request still completes. | Availability |
Recover from faults / Preparation and Repair | Graceful Degradation | Continues with reduced capability instead of failing completely. | A video service lowers quality during overload. | Availability > Usability > Performance |
Recover from faults / Preparation and Repair; Recovery | Reconfiguration | Changes component/resource assignments to maintain service or safety. | Work is moved from a failed server to a healthy one. | Availability > Safety |
Prevent faults | Removal from Service | Takes faulty components offline to protect the rest of the system. | A server with high error rate is removed from the pool. | Availability > Performance |
Prevent faults | Transactions | Ensures operations are atomic: all-or-nothing. | A bank transfer updates both accounts or neither. | Availability > Security |
Prevent faults; Unsafe State Avoidance | Predictive Model | Predicts future faults or unsafe states from health/resource data. | A disk-health model warns before storage failure. | Safety > Availability |
Prevent faults | Exception Prevention | Prevents faults using safer abstractions. | Smart pointers prevent invalid memory access. | Availability > Safety > Modifiability |
Prevent faults | Increase Competence Set | Expands the situations the system can handle safely. | An autonomous vehicle is improved to handle more road conditions. | Availability > Safety |
Manage Deployment Pipeline | Scaled Rollout | Gradually releases a new version to reduce deployment risk. | A new version is released to 5% of users first. | Deployability > Availability > Testability |
Manage Deployment Pipeline | Scripted Deployment | Automates deployment with documented, tested scripts. | A CI/CD pipeline deploys using version-controlled scripts. | Deployability > Testability |
Manage Deployed System | Service Interaction Management | Lets several service versions run at the same time. | API v1 and API v2 run during a migration period. | Deployability > Modifiability |
Manage Deployed System | Dependency Packaging | Bundles correct dependency versions with the software. | A container image includes the exact libraries the service needs. | Deployability > Modifiability |
Manage Deployed System | Feature Toggles | Turns features on/off at runtime. | A broken feature is disabled using a kill switch. | Deployability > Modifiability > Availability |
Monitor Resources | Metering | Measures real energy use. | A server tracks power draw per workload. | Energy Efficiency |
Monitor Resources | Static Classification | Estimates energy use from hardware/resource characteristics. | A system estimates power use from CPU and display type. | Energy Efficiency |
Monitor Resources | Dynamic Classification | Estimates energy use from runtime workload data. | A phone predicts battery drain from current app behavior. | Energy Efficiency > Performance |
Allocate Resources | Reduce Usage | Lowers energy use by tuning settings. | A phone lowers brightness and CPU frequency. | Energy Efficiency |
Allocate Resources; Adapt; Defer Binding / Runtime binding | Discovery / Discover / Dynamic Discovery | Finds services/resources at runtime. Useful when available providers change. | A service registry tells a client where active service instances are. | Integrability > Modifiability > Deployability > Energy Efficiency |
Allocate Resources; Manage Resources | Resource Scheduling / Schedule Resources | Allocates resources based on contention, energy, cost, or performance. | A scheduler gives CPU time to high-priority tasks first. | Performance > Energy Efficiency |
Reduce Resource Demand; Control Resource Demand | Manage Event Arrival / Event Management | Controls how often events enter the system. | A sensor reduces sampling frequency to save battery. | Energy Efficiency > Performance |
Reduce Resource Demand; Control Resource Demand | Limit Event Response | Queues, drops, or limits responses when capacity is exceeded. | A system drops low-priority telemetry during overload. | Performance > Energy Efficiency > Availability |
Reduce Resource Demand; Control Resource Demand | Prioritize Events | Handles important events before less important ones. | Emergency alarms are processed before normal status updates. | Performance > Safety > Energy Efficiency |
Reduce Resource Demand; Control Resource Demand | Reduce Computational Overhead | Reduces the work required per event. | A repeated expensive calculation is cached or simplified. | Performance > Energy Efficiency |
Reduce Resource Demand; Control Resource Demand | Bound Execution Times | Limits how long tasks may run. | A request is cancelled if it exceeds 200 ms. | Performance > Safety > Energy Efficiency |
Reduce Resource Demand; Control Resource Demand | Increase Resource Efficiency / Increase Resource Usage Efficiency | Improves algorithms or resource use so less work is needed. | Replace an O(n²) algorithm with an O(n log n) algorithm. | Performance > Energy Efficiency |
Reduce Resource Demand | Workload Reduction | Reduces total system work. | A system skips non-essential background synchronization. | Energy Efficiency > Performance |
Limit Dependencies; Reduce Coupling | Encapsulate | Hides internals behind a clear interface. Nice because changes do not spread. | A database module hides SQL details from business logic. | Modifiability > Integrability > Testability |
Limit Dependencies; Reduce Coupling | Use an Intermediary | Inserts a mediator/facade/broker-like element to reduce direct dependencies. | A message broker connects services that should not call each other directly. | Integrability > Modifiability |
Limit Dependencies; Reduce Coupling | Restrict Communication Paths | Limits which components may communicate. | Only approved services may call the payment service. | Integrability > Security |
Limit Dependencies | Adhere to Standards | Uses shared standards to make integration easier. | Systems exchange data using JSON over HTTP. | Integrability > Modifiability |
Limit Dependencies; Reduce Coupling | Abstract Common Services | Unifies similar services behind one common interface. | Several logging systems are hidden behind one logging API. | Integrability > Modifiability |
Adapt | Tailor Interface | Adapts an interface through translation, buffering, or smoothing. | An adapter converts feet to meters between two systems. | Integrability > Modifiability |
Adapt | Configure Behavior | Adjusts component behavior at build or runtime. | A component is configured to use API v1 or API v2. | Integrability > Modifiability |
Coordinate | Orchestrate | Coordinates independent services through central control logic. | A workflow engine coordinates order, payment, and shipping. | Integrability > Modifiability |
Coordinate | Manage Resources | Controls access to shared resources such as threads, memory, or devices. | A resource manager decides which service may use limited threads. | Integrability > Performance |
Increase Cohesion | Split Module | Divides a large module into smaller, more focused modules. | A huge UserManager is split into authentication and profile modules. | Modifiability > Testability |
Increase Cohesion | Redistribute Responsibilities | Moves responsibilities so related behavior is grouped better. | Validation logic is moved from controllers into a validation module. | Modifiability > Testability |
Reduce Coupling | Restrict Dependencies | Limits which modules may depend on each other. | UI code is forbidden from directly accessing database code. | Modifiability > Testability |
Defer Binding / Compile-time binding | Component Replacement | Allows components to be swapped through build/deployment mechanisms. | A build script selects either a mock or production payment component. | Modifiability > Deployability |
Defer Binding / Compile-time binding | Compile-Time Parameters | Configures values during compilation. | A product variant is compiled with region-specific settings. | Modifiability |
Defer Binding / Compile-time binding | Aspects | Separates cross-cutting concerns from core logic. | Logging or security checks are applied across many classes using aspects. | Modifiability > Testability |
Defer Binding / Deployment or startup binding | Configuration Binding | Sets behavior through configuration at deployment/startup. | A service endpoint is changed through a config file. | Modifiability > Deployability |
Defer Binding / Deployment or startup binding | Resource Files | Externalizes parameters into files. | UI text is stored in language resource files. | Modifiability > Deployability |
Defer Binding / Runtime binding | Parameter Interpretation | Controls execution through runtime variables. | A feature changes behavior based on runtime parameters. | Modifiability |
Defer Binding / Runtime binding | Shared Repositories | Coordinates through shared data. | Components read shared configuration from a repository. | Modifiability > Integrability |
Defer Binding / Runtime binding | Polymorphism | Uses one interface with multiple implementations. | A payment interface has card, invoice, and PayPal implementations. | Modifiability > Testability |
Control Resource Demand / Manage work requests | Manage Work Requests | Limits incoming work before overload happens. | An API sets a maximum request arrival rate. | Performance > Availability |
Manage Resources | Increase Resources | Adds faster or more CPUs, memory, or network capacity. | Add more memory to reduce swapping. | Performance > Availability |
Manage Resources | Introduce Concurrency | Processes work in parallel. | Multiple requests are handled by worker threads. | Performance |
Manage Resources | Maintain Multiple Copies of Computations | Replicates computations to reduce contention. | Several servers perform the same calculation for different users. | Performance > Availability |
Manage Resources | Maintain Multiple Copies of Data | Keeps data copies at different locations/speeds. | Frequently used data is cached near the application. | Performance > Availability |
Manage Resources | Bound Queue Sizes | Limits queued work to control latency and memory use. | A web server rejects requests when its queue is full. | Performance > Availability |
Unsafe State Avoidance | Substitution | Uses protective mechanisms such as watchdogs, monitors, or interlocks. | A watchdog restarts a controller that stops responding. | Safety > Availability |
Unsafe State Detection | Timeout | Detects operations that exceed timing constraints. | A robot stops if a movement command takes too long. | Safety > Availability > Performance |
Unsafe State Detection | Comparison | Compares synchronized or replicated outputs. | Two sensors disagree, so the system enters safe mode. | Safety > Availability |
Containment / Redundancy; Availability Patterns | Replication / Server Replication | Duplicates components, data, or servers. | Several ticket servers handle high user load and tolerate failure. | Availability > Performance > Safety |
Containment / Redundancy | Analytic Redundancy | Derives the same value through different calculations or sources. | Speed is estimated from both wheel rotation and GPS. | Safety > Availability |
Containment / Redundancy | Functional Redundancy | Uses alternative functions to achieve a safe result. | If automatic steering fails, emergency braking can still prevent collision. | Safety > Availability |
Containment / Limit Consequences | Masking | Hides or compensates for faults, often using redundancy. | A bad sensor reading is outvoted by other sensors. | Safety > Availability |
Containment / Limit Consequences | Abort | Stops an unsafe operation immediately. | A robot stops when a human enters a danger zone. | Safety |
Containment / Limit Consequences | Degradation | Continues only critical functions. | A vehicle disables comfort features but keeps braking and steering. | Safety > Availability |
Containment / Barrier; Resist Attacks / Limit Access | Firewall / Firewall Protection | Restricts access to resources or network paths. | Payment services are placed behind a firewall. | Security > Safety > Availability |
Containment / Barrier | Interlock | Prevents dangerous event sequences. | A train door cannot open while the train is moving. | Safety |
Recovery | Repair State | Fixes erroneous state and resumes execution. | A system corrects corrupted control variables before continuing. | Safety > Availability |
Detect Attacks | Detect Intrusion | Detects suspicious behavior using known malicious patterns. | A system flags requests matching SQL injection signatures. | Security > Availability |
Detect Attacks | Detect Service Denial | Detects denial-of-service traffic patterns. | A server detects an abnormal flood of requests. | Security > Availability > Performance |
Detect Attacks | Verify Message Integrity | Uses hashes or checksums to detect tampering. | A system verifies that a configuration file was not changed. | Security |
Detect Attacks | Detect Message Delivery Anomalies / Detect Message Delay | Detects suspicious message timing or delivery behavior. | A system flags messages delayed in an unexpected pattern. | Security > Availability |
Resist Attacks | Identify Actors | Identifies the source of external input. | A service records which client sent each request. | Security |
Resist Attacks | Authenticate Actors | Verifies that an actor is who they claim to be. | A user logs in with password and two-factor authentication. | Security |
Resist Attacks | Authorize Actors | Checks whether an authenticated actor has permission. | A normal user is blocked from admin-only operations. | Security |
Resist Attacks | Limit Access | Restricts access to resources or entry points. | Only internal services can access the database. | Security > Safety |
Resist Attacks | Limit Exposure | Reduces the attack surface. | A service exposes only one public API endpoint. | Security |
Resist Attacks | Encrypt Data / Secure Connections | Protects data and communication from unauthorized reading. | Credit card data is sent over HTTPS. | Security |
Resist Attacks | Separate Entities | Isolates systems using networks, VMs, or air gaps. | Payment processing runs on a separate network segment. | Security > Safety |
Resist Attacks | Validate Input | Sanitizes and checks incoming data. | A web form rejects SQL injection attempts. | Security > Availability |
Resist Attacks | Change Credential Settings / Change Default Credentials | Forces unsafe default credentials to be changed. | A router requires the admin password to be changed on first login. | Security |
React to Attacks | Revoke Access | Removes access when an attack or compromise is suspected. | A compromised API key is disabled. | Security |
React to Attacks | Restrict Login | Limits login attempts after repeated failures. | An account is locked after too many wrong passwords. | Security > Availability |
React to Attacks | Inform Actors | Alerts people or systems about suspicious activity. | The security team receives an alert after intrusion detection. | Security > Availability |
Recover from Attacks | Audit | Records actions so attacks or misuse can be traced. | A system logs who accessed patient records. | Security > Testability |
Recover from Attacks | Nonrepudiation | Prevents parties from denying that they sent or received something. | A signed transaction proves who approved a payment. | Security |
Control and Observe System State | Specialized Interfaces | Adds interfaces for controlling or observing state during testing. | A test API exposes internal component state. | Testability |
Control and Observe System State | Record / Playback | Records interaction data and replays it during testing. | A test replays production traffic to reproduce a bug. | Testability |
Control and Observe System State | Localize State Storage / Centralized State | Stores state in one controlled place to simplify test setup. | Tests load all state from a test database. | Testability > Modifiability |
Control and Observe System State | Abstract Data Sources | Allows real data sources to be replaced with test sources. | A fake sensor replaces a real sensor during testing. | Testability > Modifiability |
Control and Observe System State | Sandbox / Sandboxing | Isolates tests from real consequences. | A payment system is tested without charging real cards. | Testability > Security |
Control and Observe System State | Executable Assertions | Embeds checks that detect faulty states. | Code asserts that account balance cannot become negative. | Testability > Availability |
Limit Complexity | Limit Structural Complexity | Reduces cycles and coupling. | A cyclic dependency between modules is removed. | Testability > Modifiability |
Limit Complexity | Limit Non-Determinism | Reduces uncontrolled randomness or concurrency. | Tests use fixed random seeds and controlled thread scheduling. | Testability |
Support User Initiative | Cancel | Lets users stop an operation and frees resources. | A user cancels a large file upload. | Usability > Performance |
Support User Initiative | Undo | Restores earlier states after user mistakes. | A text editor undoes the last edit. | Usability > Safety |
Support User Initiative | Pause / Resume | Temporarily stops and later continues work. | A download is paused and resumed later. | Usability > Availability |
Support User Initiative | Aggregate | Groups objects for collective operations. | A user selects many emails and archives them together. | Usability |
Support System Initiative | Maintain Task Model | Tracks the user’s current task context. | A wizard knows which step the user is on. | Usability |
Support System Initiative | Maintain User Model | Tracks user knowledge or behavior to tailor responses. | A system gives more guidance to beginners than experts. | Usability |
Support System Initiative | Maintain System Model | Keeps a model of system state to provide accurate feedback. | A dashboard shows whether synchronization is pending or complete. | Usability |
Mobile Systems Tactics | Power Source Monitoring | Detects low energy and triggers battery-saving behavior. | A phone alerts apps that shutdown may happen soon. | Energy Efficiency > Availability > Usability |
Mobile Systems Tactics | Throttling Energy Usage | Degrades or terminates high-energy functionality. | A phone lowers CPU speed and sensor frequency. | Energy Efficiency > Availability |
Mobile Systems Tactics | Tolerating a Loss of Power | Handles power failure and restart safely. | A mobile app saves state before shutdown and resumes later. | Availability > Energy Efficiency |
Network connectivity | Support Only Necessary Network Interfaces | Uses only needed network interfaces to save power and reduce heat. | A device disables Wi-Fi scanning when Bluetooth is enough. | Energy Efficiency > Security |
Network connectivity | Seamless Protocol Transition | Maintains connectivity while moving between networks. | A phone switches from Wi-Fi to cellular without dropping a call. | Availability > Usability |
Network connectivity | Dynamic Protocol Selection | Chooses protocol based on cost, bandwidth, and power. | A mobile app chooses Wi-Fi for large uploads and cellular for small messages. | Energy Efficiency > Performance > Availability |
Availability Patterns | Active Redundancy / Hot Spare | Runs backup nodes in parallel with the active node. | Flight-control computers run the same calculation in parallel. | Availability > Safety |
Availability Patterns | Passive Redundancy / Warm Spare | Keeps a standby partly updated. | A warm database replica takes over after the primary fails. | Availability |
Availability Patterns | Spare / Cold Spare | Keeps backup inactive until needed. | A backup server is powered on only after the main server fails. | Availability > Energy Efficiency |
Availability Patterns | Triple Modular Redundancy / TMR | Runs three copies and uses voting. | A spacecraft computer accepts the majority result from three processors. | Availability > Safety |
Availability Patterns | Circuit Breaker | Stops repeated calls to a failing service. | An order service stops calling a failing payment gateway. | Availability > Performance |
Availability Patterns | Process Pairs | Uses checkpointing and a paired spare process. | A transaction process fails and its pair resumes from the latest checkpoint. | Availability |
Availability Patterns | Forward Error Recovery | Moves from an erroneous state to a safe/correct state without rollback. | A drone switches to safe-flight mode after detecting bad sensor data. | Availability > Safety |
Deployability Patterns | Blue/Green Deployment | Runs old and new versions side by side, then switches traffic. | Traffic switches from blue production to green production. | Deployability > Availability |
Deployability Patterns | Rolling Upgrade | Updates instances one at a time. | Kubernetes replaces pods gradually. | Deployability > Availability |
Deployability Patterns | Canary Testing | Releases to a small user group first. | 1% of users get the new search algorithm first. | Deployability > Testability > Availability |
Deployability Patterns | A/B Testing | Compares alternatives with real users. | A shop tests two checkout flows. | Usability > Deployability |
Energy Efficiency Patterns | Sensor Fusion | Uses low-power sensors to decide when high-power sensors are needed. | An app uses accelerometer data before activating GPS. | Energy Efficiency > Performance > Safety |
Energy Efficiency Patterns | Kill Abnormal Tasks | Stops tasks with abnormal energy use. | A mobile OS stops an app constantly using GPS. | Energy Efficiency > Availability |
Energy Efficiency Patterns | Power Monitor | Tracks power and disables unused devices/functions. | A phone disables unused sensors while idle. | Energy Efficiency |
Performance Patterns | Load Balancer | Distributes requests across servers. | A web shop spreads traffic across many backend servers. | Performance > Availability |
Performance Patterns | Throttling | Limits request rate or workload. | An API allows each user 100 requests per minute. | Performance > Availability > Security |
Patterns for Safety | Redundant Sensors | Duplicates sensors for safer data. | A self-driving car compares several sensor readings before braking. | Safety > Availability |
Patterns for Security | Intrusion Prevention System / IPS | Identifies, analyzes, blocks, and reports suspicious activity. | A network IPS blocks traffic matching known attack behavior. | Security > Availability |
Security design concept | User Authentication / Authorization | Verifies identity and permissions. | Only logged-in users can buy tickets, and only admins can manage matches. | Security |
Secure payment design concept | Third-Party Payment Processing | Moves sensitive payment handling to a trusted external service. | A webshop sends card payment to a certified payment provider. | Security > Modifiability |
Modifiability design concept | Modular Design / High Cohesion and Low Coupling | Groups related responsibilities and reduces unnecessary dependencies. | External team-server integration is isolated from core ticket logic. | Modifiability > Integrability > Testability |
Integrability design concept | Adaptable Interfaces for External Systems | Makes changing external systems easier to integrate. | A ticket system adapts to different football team servers. | Integrability > Modifiability |
Performance design concept | Data Caching | Stores frequently used data closer to where it is needed. | Match and seat data are cached instead of fetched every time. | Performance > Availability |
Modifiability design concept | Separation of Core Functionality and External Interfaces | Keeps stable logic separate from change-prone integration code. | Ticket booking logic is separate from team-server adapters. | Modifiability > Integrability |
Security design concept | Separation of Secure Parts | Isolates security-sensitive functionality. | Payment logic is separated from normal browsing logic. | Security > Modifiability |