#📚reference
A domain model aids a mutual understanding between Business and Engineering. An understanding of the business domain, the problems of which we attempt to solve with technology.
A domain model provides a common language for the entire organization. Without such language, the [[product specification]] as well as the [[solution architecture]] processes become less effective. The involved parties end up struggling to explain concepts and to understand one-another.
A domain model is also an effective instrument for onboarding new team members (engineers, POs, and stakeholders alike).
Creating of a domain model is a rather high impact/effort activity. Having done such an exercise once, all the further communication and collaboration will be a lot smoother.
---
## Purpose
A domain model often serves several key purposes in [[software development]]:
1. **Conceptual Representation:** visualizes key entities in the domain, their relationships, and their attributes. This helps all stakeholders understand the business domain more comprehensively.
2. **Structural Framework:** serves as a structural map that guides developers in creating the software architecture, ensuring that it aligns with the business context.
3. **Communication Tool:** facilitates better communication between domain experts (who may not be technical) and developers. This ensures that the technical solutions being developed align well with business needs.
---
## Components
A domain model diagram typically includes the following components:
- **Entities/Classes:** the primary objects or concepts within the domain.
- **Attributes:** important characteristics or properties of each entity.
- **Relationships:** the connections between entities, which can include associations (how entities are related to each other), aggregations (entity made up of a collection of other entities), and compositions (strongly dependent entities, where the life of the contained entities is tied to the life of the container entity).
- **Constraints:** rules that apply to entities or relationships.
---
## References
* [A Brief Introduction to Domain Modeling | by Oleg Chursin | Medium](https://olegchursin.medium.com/a-brief-introduction-to-domain-modeling-862a30b38353)
* [Advanced Topic - Domain Modeling - Scaled Agile Framework](https://scaledagileframework.com/domain-modeling/)