Domain Driven Design: Domain Definition
You would like to learn more about Domain Driven Design (DDD). You have read about it's simplicity for development, but what is a Domain in Domain Driven Design?
Table of Contents
1. Definition of a DDD domain
A domain defines the area of operation of you or your used application.
The definition of a DDD domain by Andrew Powell-Morse is:
Domain in the realm of software engineering commonly refers to the subject area on which the application is intended to apply. In other words, during application development, the domain is the "sphere of knowledge and activity around which the application logic revolves.
And the definition of a DDD domain by Eric Evans is:
A sphere of knowledge, influence, or activity. The subject area to which the user applies a program is the domain of the software.
A maybe more simple explanation of a DDD domain is:
A DDD domain is a combination of the areas of
- knowledge
like knowing what will happen with some set of data or some events and typically the section in which you or your application have the major business perspective - influence
like having influence with your actions or activities you do in your business - activity
like doing specific tasks which are necessary with your knowledge and with whom you cause influence in your business area
2. Example for a DDD domain
Let us take for a domain the business area Taxi Driving Service. Means our DDD domain will be providing services for it. We will require following sub-services for it to be able to ensure a good user experience:
- Payment service
- Booking service
- Vehicle maintenance planning service
- Vehicle resouce planning service
- Staff planning service
3. Sub-Domains
There could be many more services for your DDD business domain. This services are called Sub-Domains in terms of a Domain Driven Design. And even more these Sub-Domains can be usually easily visualized in form of a Context Map.
Read more about DDD in these articles