Ubiquitous Language
Ubiquitous Language is a common, shared vocabulary used by all team members involved in a software project. This includes developers, managers, and domain experts. The language should be based on the domain model and used consistently by everyone who works on the product in both documentation and conversation.
Purpose
Miscommunication is a common problem in software development, often leading to misunderstandings, rework, and bugs. Ubiquitous Language aims to address this issue by providing a shared vocabulary that is clear, consistent, and unambiguous.
Format
Ubiquitous Language does not have a formalised structure but is a collection of terms, phrases, and names directly derived from the business domain. It is documented in glossaries, code comments, user stories, and architectural diagrams.
Examples
E-Commerce
- User: Refers to an individual who interacts with the e-commerce platform, browsing products and possibly making purchases.
- Cart: The virtual basket where users place items they intend to purchase.
- Order: The finalised transaction when a user decides to purchase the items in their cart.
- Vendor: The businesses or individuals selling products on the e-commerce platform.
- Review: Feedback left by users about products they have purchased.
Hospitality
- Guest: Refers to a customer staying at a hotel or using any of its services.
- Reservation: The act of booking a room, table, or any service offered by the hospitality entity.
- Stay: The period during which a guest uses the accommodations of the hotel.
- Host: The entity or person providing the accommodation, dining, or any service within the hospitality industry.
- Feedback: Opinions or comments left by guests regarding their experience.
Legal
- Client: An individual or entity seeking legal representation or advice.
- Case File: The collection of documents related to a particular legal case or client.
- Matter: The subject or issue at hand that requires legal attention.
- Counsel: The legal professionals offering advice, representation, or both to clients.
- Testimony: The account or evidence provided by clients or witnesses regarding a case.
Anti-patterns
- Jargon Overload: Overcomplicating the language with technical jargon that is inaccessible to non-technical stakeholders.
- Inconsistency: Using different terms to refer to the same concept across different parts of the project.
- Stagnation: Failing to evolve the language as the understanding of the domain grows or as the project requirements change.
- Ambiguity: Using vague terms that do not convey a precise meaning or that can be easily misinterpreted.
- Isolation: Developing the language in isolation without involving domain experts or end-users, leading to a lack of alignment with the domain itself.