Skip to content

arc42 section 8: Cross-cutting Concepts

Concepts that apply to many building blocks

  • The document accepts that the read side may show stale data and says where this is tolerable. → Command Query Responsibility Segregation
  • The conceptual data model contains no database-specific concepts such as indexes, data types or storage details. → Conceptual Data Model
  • The conceptual model was validated with business stakeholders, and found gaps were recorded. → Conceptual Data Model Preparation for Logical and Physical Models
  • The conceptual model contains no data types, tables, columns or indexes. → Conceptual Data Model Preparation for Logical and Physical Models
  • Relationships state cardinality and whether they are mandatory or optional. → Conceptual data model building method
  • The conceptual model lists entity classes and their relationships without naming any storage technology. → Conceptual, Logical and Physical Data Model
  • A CRUD matrix shows which processes create, read, update or delete each business data entity. → Data Architecture
  • The logical data diagram gives each entity a primary key and attributes without database-specific detail. → Data Architecture Diagram Type
  • Where applications use different formats, a common data model independent of any one application is defined. → Data reusability and standardized access
  • A Data Entity/Business Function matrix shows which data supports which functions and which function owns which data. → Define Target Data Architecture Method Phase
  • The logical model names no database engine. → Logical Data Model
  • Normalization level is stated, with 3NF as the default stopping point unless a measured query says otherwise. → Logical Data Model
  • The physical model names the target DBMS and follows its naming rules. → Logical vs. physical data model
  • The physical model names the target DBMS it is designed for. → Physical Data Model
  • Security is described as a cross-cutting concern: who can do what to which resources, and how this is controlled, monitored and audited. → Additional Architecture Viewpoints (Security, Information, Operational, Development, Process, Evolution)
  • Section 8 contains only concepts that are relevant to the system, and they are grouped. → Crosscutting Concept
  • The building block view is present and any data structures appear as building blocks. → Data architecture documentation in arc42
  • Changes to the documentation are proposed and reviewed through pull requests. → Documentation as Code
  • The document is short and focused on important or risky topics. → Guidelines for Documentation
  • If GET requests are used, the diagram source is deflate-compressed and base64-encoded in the URL. → Kroki
  • Every relationship arrow has a label stating its intent. → Modeling Method
  • Architecture documentation is stored as plain text under version control next to the code. → Self-Documentation
  • Recurring substructures across refinements are factored into a crosscutting concept instead of repeated. → Undetected Duplication Antipattern
  • References from outside an aggregate point only to its root. → Aggregate
  • Real-world events, such as loading or customs clearance, are recorded as domain events that feed delivery status. → Cargo Shipping Domain Model
  • Where the reverse direction is needed, the document names a repository query instead of a second navigation link. → Constraining Associations
  • Each aggregate names exactly one root entity and states the consistency rules it protects. → DDD Building Blocks (Tactical Patterns)
  • Third-party or external elements are clearly marked in the building block view and shown only where needed. → Deriving System Components from the Domain Model
  • Integration events sent to other bounded contexts are asynchronous. → Domain Event
  • The application layer is thin and the key logic sits in the domain layer. → Domain Layer Separation
  • The model is implemented in software and has a way to evolve over the product’s life. → Domain Model
  • Application services contain no business logic and only coordinate domain services, repositories, and transactions. → Domain Service
  • For a large domain, the document splits the model into bounded contexts instead of one unified model. → Domain-Driven Design
  • Each aggregate has a root that enforces its consistency boundary. → Domain-Driven Design of the Data Model
  • Entity equality is based on identity only, not on attributes. → Entity
  • Invariants block changes to entities in terminal states. → Entity Life Cycle
  • Value objects are immutable and are compared by their attribute values. → Entity and Value Object
  • The team’s shared language is based on the domain model used in the software. → Iterative Domain Modeling
  • Modules are grouped by concepts of the domain, not by technical aspects or developer work assignments. → Module
  • Terms that differ in meaning between groups are identified rather than merged into one. → Ubiquitous Language
  • Value objects in the model are immutable, and changes create a new object. → Value Object
  • Concepts like money, ranges or points are modeled as value objects rather than bare primitives. → Value Object
  • Business or domain models are documented in arc42 section 8. → Business Architecture
  • Each data entity is mapped to the application or data component that holds it. → Data Architecture Artifact
  • Each important data element has a named trustee accountable for its quality. → Data Architecture Principle
  • Each entity in the matrix is linked to business functions using CRUD codes. → Data Entity/Business Function Matrix
  • Where several roles create the same entity, the document names one owner or describes a split by role ownership. → Data Entity/Business Function Matrix
  • Every data entity in the catalog has a definition, an owner and a classification level. → Data Entity/Data Component Catalog
  • Logical and physical data components are kept separate, so the target architecture does not depend on a specific technology. → Enterprise Architecture Meta Model
  • The EA tool configuration maps each metamodel entity to a component type and each relationship to a typed reference. → Enterprise Architecture Meta Model
  • The document states which artifacts from the content framework are used, rather than assuming TOGAF prescribes a format. → TOGAF
  • Technical constraints are listed, with a note on which may be negotiable. → Technology Architecture
  • The document assigns responsibility for detecting faults and for handling detected exceptions. → Architectural Decisions for Availability
  • Architecture and coding rules run as automated unit tests in the build. → Architecturally Evident Coding Style
  • Each tactic named in the document is tied to the single quality attribute it addresses. → Architecture Means
  • Communication between internal services is asynchronous where possible, or the document explains why not. → Connectors and Distribution
  • Tests exist that protect refactoring work as a safety net. → Refactoring
  • The document justifies the canonical model by the number of integrated applications, since it is overkill for only a few. → Canonical Data Model
  • Security tokens are not embedded in the claim check; the store enforces its own access control. → Claim Check
  • For event-based flows, the document describes the end-to-end flow somewhere explicit, since it is not visible in program text. → Connector Transparency (Direct vs Indirect Connection)
  • Where enrichment calls another source through Camel’s Enrich EIP, the document states the producer cache setting. → Content Enricher and Content Filter
  • Where rules are checked in order, the order is documented, because the first match decides the branch. → Content-based Router
  • The design states that the replier copies the request ID into the correlation ID field of the reply. → Correlation Identifier
  • Receivers take the data type from the channel they read, not from the message content. → Datatype Channel
  • The document states how many delivery attempts are allowed before a message moves to the dead-letter queue, and that the limit leaves room for retries. → Dead Letter Channel
  • The document states whether routing-table changes at runtime are applied incrementally or replaced as a whole, and how inconsistency is handled. → Dynamic Router
  • Where SOAP is used, headers and payload are kept separate: headers in the envelope header, content in the body. → Envelope Wrapper
  • Consumers that compete on one channel are idempotent, and failing messages go to a dead-letter queue. → Event-Driven Consumer
  • The document names who is responsible for transforming files between formats. → File Transfer
  • Messages with unknown or unprocessable formats have a defined destination, such as an invalid message channel. → Format Indicator
  • The document states that receivers must tolerate receiving the same message more than once. → Idempotent Receiver
  • The document states whether each interaction is synchronous or asynchronous. → Integration
  • Pattern names used in the document are neutral about technology and product. → Integration Pattern vs. Middleware Technology
  • If file transfer is used, the document describes how data is transformed between application formats. → Integration Style
  • Where Remote Procedure Invocation is used, the document acknowledges that callers are blocked during the call. → Integration Styles
  • The document names a dedicated channel where the receiver puts messages it cannot process. → Invalid Message Channel
  • Non-messaging applications are connected through a Channel Adapter. → Message Channel
  • Each filter has a single output channel. → Message Filter
  • Where one message must go to several recipients, a Recipient List sends a copy to each. → Message Routing
  • The design states how out-of-order arrivals are buffered and reordered before processing. → Message Sequence
  • Request messages that expect a reply carry a unique request ID, and replies copy it into a correlation ID. → Message Structure
  • The choice of a canonical model considers how many applications exchange messages. → Message Translator
  • The document lists the supported protocol versions, such as MQTT 3.1.1 or 5. → Messaging Protocol Support in Message Brokers
  • The document names the common target format that all translators produce. → Normalizer
  • Each API endpoint has a stated role, for example Processing Resource or Information Holder Resource. → Patterns for API Design
  • Consumers on queue-based channels are designed to be idempotent, because delivery is at least once. → Point-to-Point Channel
  • For queue services such as SQS, the document states whether short or long polling is used and the wait time. → Polling Consumer
  • The document states how much each integration choice makes applications depend on each other. → Principles Influencing EAI Pattern Selection
  • The document addresses the risk that the central manager becomes a performance bottleneck or a point of failure. → Process Manager
  • Replies carry a correlation ID equal to the ID of the request they answer. → Request-Reply
  • Replies are matched to requests with a correlation identifier alongside the return address. → Return Address
  • Where steps can be reversed, the document explains how compensation works for slip-based flows. → Routing Slip
  • The document states whether recipients are chosen through a Publish/Subscribe Channel or through a Recipient List. → Scatter/Gather
  • The document states that the broker or messaging provider, not the consumer, performs the filtering. → Selective Consumer
  • The risk of changing applications that use the shared database is acknowledged. → Shared Database
  • Where one message must reach several receivers, the document names this one-to-many link. → Software Connector Classification
  • Where back pressure is needed, the document names the mechanism or standard used. → Stream Connector
  • Resilience patterns such as Circuit Breaker, Bulkhead or Timeout are named where services communicate. → Synchronous vs. Asynchronous Communication
  • Consumers are designed to handle duplicate delivery, because the queue is at-least-once. → Timeout-based Delivery
  • If a service updates a database and sends a message, the document states how both are kept consistent, for example with an outbox. → Transactional Client
  • The document names the life cycle variant it uses and lists its phases. → BPM Life Cycle
  • The to-be state of each process is defined in a design step. → BPM Life Cycle
  • The team uses an automated tool to check soundness, for example by translating models to Petri nets. → BPMN 2.0 Model Quality
  • Every outgoing flow of an event-based gateway leads to an intermediate catch event. → BPMN 2.0 Notation
  • The model states who chooses the inner activities at runtime: the engine via an expression, or a job worker. → BPMN Ad Hoc Sub-Process
  • Each compensation boundary event links to exactly one handler through a directed association, not a sequence flow. → BPMN Compensation Event
  • Data is connected to activities with data associations, not with sequence flows. → BPMN Data Element
  • Every throwing link event has a catching link event with the same link name. → BPMN Event
  • Joins that must wait for concurrent branches use a parallel gateway, not an exclusive join. → BPMN Gateway
  • The model is checked for deadlocks and lack of synchronization, for example with a BPMN model checker. → BPMN Gateway Mismatch Antipatterns
  • Process diagrams are modeled in one consistent direction, such as left to right. → BPMN Layout Guideline
  • Every XOR gateway shows the X marker. → BPMN Layout Guideline
  • If models are shown on a website, the document states which viewer is used for it. → BPMN Modeling Tool
  • The document states which BPMN version is used, and execution is only assumed for version 2.0 or later. → BPMN Motivation
  • Models that are meant to run are precise enough to translate into software process components. → BPMN Motivation
  • Each multi-instance activity is clearly drawn as parallel (vertical lines) or sequential (horizontal lines). → BPMN Task Marker and Task Type
  • The document states that process diagrams use BPMN as a notation that business users can read. → BPMN as Modeling Language, Not Method
  • BPMN is used only for business-process concepts, not for other modeling needs. → BPMN as Modeling Language, Not Method
  • Timeouts are modeled with interrupting timer boundary events, and reminders with non-interrupting ones. → Boundary Event
  • Constraints on how processes may change each business object are stated. → Business Object Lifecycle
  • The diagram uses color for no more than three distinct categories. → Color Coding in BPMN Models
  • The diagram has been checked in grayscale and stays readable. → Color Coding in BPMN Models
  • The document states which BPMN elements the models use, and the set stays small. → Core BPMN Element Subset
  • Swim lanes appear only at the top level, not inside subprocesses. → Core BPMN Element Subset
  • A reader process that polls a shared store has a timer start event with a date or cycle definition. → Data Exchange between BPMN Processes
  • Every exclusive gateway has a default flow or conditions that cover all cases. → Deadlock in Process Models
  • Decision logic sits in a DMN model, not inside the process flow; the process calls it through a business rule task. → Decision Model and Notation
  • Modeling of decisions starts from a Decision Requirements Diagram. → Decision Model and Notation
  • Where RPA bridges a legacy system, the document plans its later replacement by APIs or agents. → Degrees of BPM Maturity
  • No exclusive gateway merges the outgoing flows of a parallel gateway. → Errors in Process Models
  • The document names the BPMN version used for its process models, for example BPMN 2.0.2 as the current OMG version. → History of BPMN
  • No exclusive gateway merges flows that were started concurrently by a parallel gateway. → Lack of Synchronization
  • Each link pair sits within one scope and does not cross a subprocess boundary. → Link Event
  • Exception paths are modeled, for example with events that interrupt a subprocess. → Process Analysis and Modeling
  • Data objects are limited to the most important data aspects. → Process Model Complexity
  • Each message a process waits for names the attribute used to correlate it to the right waiting instance. → Process Model versus Process Instance
  • The conversion mapping is stated: functions to tasks, events to events, connectors to gateways. → Process Notations Comparison (EPC, BPMN, UML Activity Diagram)
  • The check was done with a tool, and any reported violations were fixed or explained. → Soundness of Process Models
  • Exclusive (XOR) splits are used where exactly one path should be taken, such as alternative branches or loop exits. → Structured Process Modeling with Fragments
  • Exclusive gateways are used as merges only where the incoming branches are alternatives, since they do not synchronize concurrent flows. → Workflow Pattern
  • No part is shown in more than one composition relationship at a time. → Aggregation vs. Composition
  • Where diagrams are informal, the document notes that they may deviate from the UML standard. → Barriers to UML Adoption
  • Every association line states its multiplicity. → Common Class Diagram Modeling Mistakes
  • Each region has its own initial state and final state. → Concurrent Region
  • Object diagrams are used to give examples or test cases for the class diagram. → Instance Specification
  • If a drawing tool is used, the team has a manual way to keep reused elements consistent across diagrams. → Modeling Tool vs. Drawing Tool
  • Events that must not restart a state or abort its do activity are modeled as internal transitions, not self-transitions. → State Entry, Exit and Do Behavior
  • Every choice pseudostate has outgoing guards that cover all cases, so at least one is true. → State Machine Diagram
  • Where an else transition is used, it is the fallback for a source whose other guards can all be false. → State Machine Diagram Modeling Mistakes
  • Internal transitions are documented somewhere other than as arrows, since diagrams do not draw them. → State Machine Transition
  • Where several transitions react to the same event, guard conditions are given so it is clear which one fires. → State and Event
  • The parameter substitutions are listed on the binding arrow, separated by commas. → Transfer Object Pattern as Package Template
  • Transitions without a trigger are intended as completion transitions, and each has a guard where it should not always fire. → Transition Syntax (Trigger, Guard, Behavior)
  • Composition (black diamond) is used only where a part belongs to a single owner. → UML Class Diagram Relationship
  • Every subclass can stand in for its superclass, because each of its instances is also an instance of the superclass. → UML Generalization and Specialization
  • No interface is shown as instantiated; each is realized by at least one class or component. → UML Interface
  • The diagrams follow the team’s style guidelines consistently. → UML Modeling Best Practice
  • Specification diagrams describe interfaces without naming a particular implementation technology. → UML Perspectives: Conceptual, Specification, Implementation
  • The Rationale gives business benefits and relates to stakeholders and their goals. → Architecture Principle Structure
  • Each module hides one design decision behind a minimal interface. → Complexity Reduction
  • Components expose state only through well-defined functions, and their public contracts are stable. → Component Design Principles
  • Decisions where principles conflict are recorded with their rationale, trade-offs and consequences. → Conflicting Architecture Principles
  • Where an intermediary (broker, bus, mediator) is used, its added latency and its role as a possible bottleneck are assessed. → Connect or Disconnect
  • Where modules depend on each other, the document shows how strong that coupling is (loose or tight). → Coupling and Cohesion
  • At least one change scenario has a measurable limit, such as effort in person-weeks. → Design for Change
  • The same rules for what belongs together are applied consistently across the system. → High Cohesion
  • Each module’s interface reveals as little as possible about its internals. → Information Hiding
  • No component is forced to depend on methods it does not use. → Interface Segregation Principle
  • Synchronous calls are reviewed for cascading slowdowns when a provider is slow. → Loose Coupling
  • Module interfaces reveal as little as possible about their inner workings. → Modularity
  • New behavior is added through new implementations of an existing interface or through plug-ins, not by editing existing code. → Open-Closed Principle
  • Each element has clear responsibilities and does not mix in unrelated ones. → Relationships Between Architecture Principles
  • If dependencies are inverted, the document shows business logic at the center with other parts depending on it. → Separation of Concerns
  • Elements that change most quickly are kept in data, not hard-wired into code. → Shearing Layers
  • No module groups its parts arbitrarily, such as a catch-all utility module. → Types of Cohesion
  • Each principle has a memorable name and a brief, direct statement. → Working with Principles
  • The document states that actions must be traceable uniquely to the acting entity. → Accountability
  • Quality properties such as security are handled by applying a perspective to each view, not by adding a separate viewpoint for each property. → Architectural Perspective
  • Security is treated as risk management, not as a yes-or-no state. → Architectural Perspective
  • The document states which subjects and resources must have a provable identity. → Authenticity
  • Consumers read provider data tolerantly, taking only the elements they need. → Compatibility
  • Trust boundaries are defined, and sensitive flows are segmented so only roles and assets that need them can reach them. → Confidentiality
  • The document separates faults (causes) from failures (visible deviations from the specification). → Fault
  • The document states fault tolerance as its own quality requirement, separate from availability and recoverability. → Fault Tolerance
  • Hazard warning is distinguished from operational constraint, risk identification, fail safe and safe integration. → Hazard Warning
  • Integrity is treated separately from confidentiality, which covers who may access data. → Integrity
  • Where two systems use different data formats, the document names the translator that converts between them. → Interoperability
  • The document states which actions must be provable and how, for example with digital signatures. → Nonrepudiation
  • The document names a trusted third party, such as a certificate authority or time stamping authority, where proof must hold up against disputes. → Nonrepudiation
  • Contractual commitments (SLAs) are distinguished from internal targets (SLOs). → Recoverability
  • Threat modeling identifies and prioritizes the relevant attack vectors. → Resistance
  • External dependencies have a documented way to manage their risks. → Reusability
  • The document describes the safe state the system enters or returns to after a failure. → Safety
  • Autoscaling has a maximum instance count and throttling, and dependencies are checked against it. → Scalability
  • Integrity measures cover authentication, authorization and tamper detection such as digital signatures. → Security
  • The user interface is separated from the application so interface changes have limited impact. → Usability
  • The document assesses whether routing all messages through one broker creates a bottleneck. → Broker Pattern
  • Where control flow runs against the dependency direction, an output port interface in the inner circle resolves it. → Clean Architecture
  • Any upward communication from a lower layer is handled through callbacks, observers or events, and is documented. → Layered Architecture
  • The document states whether layering is strict, relaxed or mixed. → Layers Pattern
  • The document explains how data stays consistent across services without ACID transactions. → Microservices Architecture
  • The model does not depend on its views, and views observe the model so several screens can show the same objects. → Model-View-Controller Pattern
  • Subscribers are designed to tolerate messages arriving in any order. → Publish-Subscribe Pattern
  • The document states how consumers discover services, for example through a registry. → Service-Oriented Architecture
  • Long-running bulk operations offer a Cancel option that is easy to find and quick to use. → Aggregate Tactic
  • Each tactic is linked to the model parameters it adjusts, such as coupling, cohesion and cost for modifiability. → Architectural Tactic
  • Calls between services use timeouts, so clients do not block forever. → Availability Tactic
  • Where redundancy is used, the document states whether it is active-active, active-passive or a cold spare, and why. → Availability Tactic
  • Each redundancy choice states its cost and complexity impact. → Availability Tactic Categories
  • The document states the failure threshold and time period that trip each circuit breaker. → Circuit Breaker
  • Stored private data is encrypted at rest as an extra layer on top of access control. → Encrypt Data
  • Energy-saving tactics are listed together with their impact on other quality attributes, such as response time. → Energy Efficiency Tactic
  • The document states how the system and its building blocks handle errors and exceptions. → Exception Handling Tactic
  • Exception handling is tied to a detection mechanism such as heartbeat or ping/echo. → Exception Handling Tactic
  • Where a monitor is used, it is a separate component that observes the health of other parts. → Fault Detection Tactic
  • Where state updates between components must be atomic, consistent, isolated, and durable, the document says transactions are used. → Fault Prevention Tactic
  • Where retry is used, the document states that the faults it targets are transient. → Fault Recovery Tactic
  • Each degradable feature has a documented fallback path, health signal and re-enable logic. → Graceful Degradation
  • The heartbeat interval is longer than the network round-trip time, and the failure timeout is a multiple of the interval. → Heartbeat
  • Fault-detection tactics such as heartbeat are named for the monitored processes. → Integrability, Deployability, Testability and Reliability Tactics
  • The document says how failed backends are detected and avoided. → Load Balancer
  • Modules that mix non-cohesive responsibilities are identified and split, or the document explains why not. → Modifiability Tactic
  • The document states who provides service discovery, versioning and access control, and whether the registry is custom-built or a product. → Modifiability Tactics in SOA
  • Where events differ in importance, the document describes how they are prioritized. → Performance Tactic
  • The document states how long a pinging component waits for an echo before declaring failure. → Ping/Echo
  • The document states that the tactic is chosen to lower coupling between modules for modifiability. → Reduce Coupling
  • The document explains how a new primary is chosen and how requests are redirected, including DNS TTL effects if DNS is used. → Redundant Spare
  • The retry policy sets a maximum number of attempts and states what happens after the last one. → Retry
  • Each hazardous operation is guarded by an explicit interlock that checks preconditions and defaults to a safe state. → Safety Tactic
  • Where a pattern is used, the document says which tactic it realizes. → Security Tactic
  • The presentation is separated from the rest of the application so later interface changes stay limited in impact. → Usability Tactic
  • The design says whether the voter is a single point of failure or is triplicated. → Voting