#📚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/)