Domain Model Elements
SimpleModeling uses the following fundamental elements to construct domain models.
SimpleModeling captures the structure of the real world using these modeling 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:
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.