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?

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