Domain Model Elements

Created: 2025-08-04

SimpleModeling uses the following fundamental elements to construct domain models.

SimpleModeling captures the structure of the real world using these modeling elements.

Domain Model Elements
Figure 1. Domain Model Elements

When it is necessary to explicitly indicate that a model element belongs to a domain model, we prefix it with "Domain", such as "Domain Entity". However, when the context is already within domain modeling, we refer to elements simply as "Entity", without the "Domain" prefix.

Classifier

In UML, class-like model elements within models are called classifiers.

The following model elements are classified as types of classifiers:

We will discuss classes later; here, we explain the model elements that fall directly under classifiers, excluding classes.

Note that classifiers appear in this article for classification purposes of domain components, but they are rarely used directly in domain modeling itself.

Domain DataType

Domain data types are data types defined within a domain model.

These data types are defined by extending the basic data types provided in Profile : Base DataType with domain-specific constraints and semantics.

Examples: EmailAddress, PostalCode

Domain Powertype

Domain powertypes are powertypes defined within a domain model.

A powertype is a model element that represents the classification of a class.

It serves a similar purpose to traditional classification codes.

In implementation, powertypes are often represented using enum types.

Examples: CustomerType, ProductCategory

Domain Component

A domain component represents a functional unit within a domain model.

It encapsulates multiple entities and services, forming a reusable structural unit.

Domain SubSystem

A subsystem is a type of component that encapsulates a domain area with a clear responsibility across the entire application.

Examples: Billing Subsystem, Inventory Management Subsystem # Domain Class

In UML, a class is one type of classifier and provides the general characteristics of a class.

In SimpleModeling, the following are the main classes that serve as elements of a domain model.

  • Domain Entity

  • Domain Value

  • Domain Rule

  • Domain Service

Domain Entity

A domain entity is an entity object that forms part of the domain model.

It is a persistently existing object, recorded in databases and surviving beyond the lifecycle of software execution.

In SimpleModeling, domain entities are classified into the following four types:

  • Domain Resource

  • Domain Task

  • Domain Actor

  • Domain Role

Domain Resource

A domain resource is an entity object that represents information about "resources" required for software operation.

Nature

Static (master data)

Creation Timing

Registered before or during stable system operation

Primary Purpose

Definition and reference of information

Persistence

Referenced for long periods and rarely modified

State Transition

No state changes during normal operation

Relationship

Referenced by other entities (being referenced)

Deletion / Modification

Rarely deleted, limited modifications (with history tracking)

Application UI

UI for reference and selection is needed

Representative Examples

Customer, Product, Warehouse, Department

Domain Task

A domain task is an entity object that represents information about "actions" during software operation.

Nature

Dynamic (transaction data)

Creation Timing

Generated sequentially during business operations

Primary Purpose

Execution and recording of business operations

Persistence

Persisted but generally immutable after completion

State Transition

Has explicit state transitions (e.g., Draft → Confirmed → Completed)

Relationship

Refers to other entities (uses resources)

Deletion / Modification

Generally not modified after completion (for auditing)

Application UI

UI for creation, editing, processing, and state transitions is needed

Representative Examples

Order, Payment, Leave Request, Inquiry, Approval Request

Domain Actor

A domain actor is a proxy object that represents external entities such as users or external systems.

Examples: User, Payment Service

Domain Role

A domain role is an entity object that represents the role or relationship an entity fulfills within a context.

Examples: Assignee, Issuer

Domain Value

A domain value is an immutable object that has no identifier and derives its meaning solely from its value.

Examples: Money, Address

Domain Event

A domain event models an event that occurs within the domain.

It captures business state changes and is used for notifications or event sourcing.

Examples: OrderConfirmed, InventoryChanged

Domain Rule

A domain rule is an object that encapsulates rules used within the domain.

It represents business logic, constraints, and other rules or decision criteria within the domain.

Domain Service

Represents procedural business logic that does not belong to a specific object.

It is applied to processes exposed outside subsystems/components or those that span multiple domain objects.

Examples: Invoice issuance, payment processing, bulk inventory adjustment

Domain Object

The term "domain object" narrowly refers to instances of domain classes, but in SimpleModeling, we use it in a broader sense to refer to all classifiers that make up a domain model, including both their definitions and instances.

Specifically, the following classifiers discussed in this article are considered domain objects:

  • Domain Entity

  • Domain Value

  • Domain Event

  • Domain Service

  • Domain Rule

  • Domain Data Type

  • Domain Powertype

  • Domain Actor

  • Domain Role

  • Domain Component

  • Domain Subsystem

State Machine

A state machine defines the transitions and control rules within the lifecycle of a domain object.

In particular, domain tasks and some entities have explicit state transitions to manage business progress.

Although not a classifier, the state machine is an important element for explicitly expressing domain model behavior.

References

Glossary

Domain Model

Undefined

SimpleModeling

SimpleModeling is a modeling-centered software development methodology and technology system for constructing a Domain Model from Knowledge, formalizing it in CML, realizing it as executable software through Cozy and AI, and running it on Textus.

Data Type

In UML, a Data Type is a Classifier whose Instances are identified by value rather than Identity. Instances of a Data Type are indistinguishable when they have the same value.

Powertype

Undefined

Event

In UML, an Event describes an occurrence that may arise during the execution of Behavior. Receiving an Event occurrence may trigger Behavior such as a Transition in a StateMachine.

Component

A software construct that encapsulates well-defined responsibilities, contracts, and dependencies as a reusable and replaceable unit. In the logical model, it serves as an abstract structural unit; in the physical model, it corresponds to an implementation or deployment unit.

Model

A Model is an abstraction that represents a subject according to a particular Purpose and Concern so that it can be understood, reasoned about, evaluated, or constructed. It is not the subject itself; it preserves the elements, relationships, and meanings required for its purpose.

UML (Unified Modeling Language)

A standardized modeling language for object-oriented analysis and design. It represents system structures and behaviors through diagrams such as class, sequence, and use case diagrams. Serves as the foundational language for UP and CBD.

Classifier

Undefined

Class

Undefined

Domain Modeling

Undefined

Type

Undefined

Constraint

In UML, a Constraint is a condition or restriction expressed in natural language or a machine-readable language to declare part of the Semantics of one or more Model Elements. Its evaluation yields a Boolean value and has no side effects.

Responsibility

A Responsibility is an obligation stating what an Object or Role must know, decide, perform, or protect. It assigns ownership of rules and Behavior, not merely structural information.

entity object

An Entity Object is an object in a domain model that has a unique identifier (ID) and is continuously identified and tracked throughout its lifecycle. Entities are mutable and treated as the same object even if their state changes, as long as they retain the same ID.

Lifecycle

A Lifecycle is the range of States and Transitions through which a subject passes, while retaining its Identity, from creation to termination.

Object

An Object is an Instance classified by a Class or another Classifier and may have structure, State, and Behavior. It is treated as an individual that can be referred to separately from other Instances of the same Classifier.

Persistence

Undefined

Identifier

An Identifier is a value used to refer to a subject with Identity or to a correlation subject and distinguish it from others. An Identifier may represent Identity, but it is not itself the meaning by which the subject remains the same over time.

Domain Event

A Domain Event represents an observation that carries meaning within the domain and triggers corresponding behaviors or processes. Domain events explicitly model state changes in the system or business and drive interactions across application layers or with external systems.

Domain Object

A Domain Object is an object that represents concepts from the real-world domain targeted by a software system, encapsulating business logic and conceptual structure. It serves as a central building block of the domain model, encompassing elements such as entities, value objects, services, rules, and events. Domain objects are not just data structures or processing units within the system, but parts of a model that reflect the semantics and behavior of the problem domain.

Instance

An Instance is a concrete occurrence classified by a Classifier. In UML, an InstanceSpecification is a Model Element representing an Instance in a modeled system, distinguishing the Instance itself from its representation in a Model.

StateMachine

In UML, a StateMachine is a Behavior that expresses the event-driven Behavior of a system element by traversing a graph of States through Transitions triggered by Event occurrences.

State

In UML, a State models a situation during which an invariant condition holds. The current State of an Object may determine accepted Events and Operations, applicable Constraints, and possible next Transitions.

Behavior

In UML, Behavior is a specification of how its context Behaviored Classifier changes State over time. It may define possible executions, emergent Behavior, or a selected example of execution.