Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The philosophy of ubiquitous language

The philosophy of ubiquitous language

So, you decided to try Domain-Driven Design (DDD). You start modeling the domain using the language spoken by your domain experts. All goes well… until you discover ambiguities. What do you do now? How do you keep your model clean while still respecting the ubiquitous language?

Well, it depends. It depends on your philosophical presuppositions, to be precise. The way you think language works will to a large extent determine your course of action. So instead of looking to DDD creator Eric Evans for the answer, I propose looking in an entirely different direction: the philosophy of Ludwig Wittgenstein (1889 - 1951). Wittgenstein’s revolutionary insights into the nature of meaning provide some excellent pointers for diagnosing the source of your modeling problem – not to mention showing you the way out!

At the end of this session, you’ll have gained a clearer understanding of the way language works and how you can use this knowledge to build better software. Whether you’re new to DDD or a seasoned veteran, this talk is sure to provide you with a new outlook on your development activities.

Karl van Heijster

May 05, 2023
Tweet

More Decks by Karl van Heijster

Other Decks in Technology

Transcript

  1. Product - Id - Name - Description - Price -

    Cost - Quantity Catalog Sales Purchasing Warehouse
  2. Product - Id - Name - Description - Price -

    Cost - Quantity Catalog Sales Purchasing Warehouse
  3. Product - Id - Name - Description - Price -

    Cost - Quantity Catalog Sales Purchasing Warehouse
  4. Product - Id - Name - Description - Price -

    Cost - Quantity Catalog Sales Purchasing Warehouse
  5. Product - Id - Name - Description - Price -

    Cost - Quantity Catalog Sales Purchasing Warehouse
  6. SalesProduct - Id - Price Catalog Sales Purchasing Warehouse PurchasingProduct

    - Id - Cost WarehouseProduct - Id - Quantity CatalogProduct - Id - Name - Description
  7. aRb

  8. ∃x((Kx ∧ ∀y(Ky → y = x)) ∧ Bx) x

    is not null && x.IsKing && y.All(y => y.IsKing ? y == x : true) && x.IsBald;
  9. SalesProduct - Id - Price Catalog Sales Purchasing Warehouse PurchasingProduct

    - Id - Cost WarehouseProduct - Id - Quantity CatalogProduct - Id - Name - Description
  10. “The cat is on the mat” • Help me find

    my cat • Describe the contents of a picture • Use coded language, “The eagle has landed” • Rhyming
  11. SalesProduct - Id - Price Catalog Sales Purchasing Warehouse PurchasingProduct

    - Id - Cost WarehouseProduct - Id - Quantity CatalogProduct - Id - Name - Description
  12. Product - Id - Price Catalog Sales Purchasing Warehouse Product

    - Id - Cost Product - Id - Quantity Product - Id - Name - Description
  13. Product - Id - Price Catalog Sales Purchasing Warehouse Product

    - Id - Cost Product - Id - Quantity Product - Id - Name - Description