Backend Development 17 min read

Four Discourses on Domain-Driven Design: Bridging the Practical and Academic Schools

The article systematically examines Domain‑Driven Design through four discourses—Structure, Process, Language, and Modeling—while contrasting the practical “folk” school with the academic school, linking philosophical ideas, software‑complexity theory, strategic and tactical design, refactoring, agile practices, ubiquitous language, and its parallels to UML/SysML, arguing DDD repackages existing engineering concepts rather than inventing new ones.

Tencent Cloud Developer
Tencent Cloud Developer
Tencent Cloud Developer
Four Discourses on Domain-Driven Design: Bridging the Practical and Academic Schools

This article presents the author's systematic analysis of Domain-Driven Design (DDD) methodology, organized into four fundamental discourses: Structure (tactical and strategic modeling), Process (refactoring and software engineering), Language (model-based unified language), and Modeling (model-driven domain modeling).

The author draws inspiration from Feng Youlan's philosophical approach of "teaching what has been said" versus "innovating on what was said" to categorize DDD literature into two schools: the practical "folk school" emphasizing personal insight and ideological systems, and the academic "school" emphasizing standards and systematic training. The article aims to bridge these two approaches.

Key topics include: the nature of software complexity as discussed in Brooks' "No Silver Bullet" (1986); strategic design principles including Context Mapping, Refinement, and Large-Scale Structure; tactical design covering building blocks (entities, value objects, services, repositories, aggregates, factories) and flexible design principles; the role of refactoring in deepening understanding; agile development and continuous delivery practices; and the concept of Ubiquitous Language for team communication.

The article also explores the relationship between DDD and other modeling approaches (UML/SysML), proposing that Bounded Context can be understood as equivalent to UML classes or SysML blocks. The author suggests that DDD, while valuable, has not introduced fundamentally new concepts but rather reconceptualized existing software engineering knowledge through different terminology.

Domain-Driven DesignSoftware EngineeringBounded ContextUbiquitous LanguageDDD Strategic DesignDDD Tactical DesignSoftware ArchitectureSoftware Modeling
Tencent Cloud Developer
Written by

Tencent Cloud Developer

Official Tencent Cloud community account that brings together developers, shares practical tech insights, and fosters an influential tech exchange community.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.