Domain Driven Design là một quy trình phương pháp và quy trình để phát triển các hệ thống phức tạp với trọng tâm là ánh xạ các hoạt động, nhiệm vụ, sự kiện và dữ liệu trong một miền vấn đề vào các tạo phẩm công nghệ của miền giải pháp.
Trọng tâm của Thiết kế hướng miền là tìm hiểu miền vấn đề để tạo ra một mô hình trừu tượng của miền vấn đề mà sau đó có thể được triển khai trong một bộ công nghệ cụ thể. Domain Driven Design là một phương pháp cung cấp các hướng dẫn về cách phát triển mô hình và phát triển công nghệ này có thể dẫn đến một hệ thống đáp ứng nhu cầu của những người sử dụng nó đồng thời mạnh mẽ khi đối mặt với sự thay đổi trong miền vấn đề.
Phía quy trình của Thiết kế hướng miền liên quan đến sự hợp tác giữa các chuyên gia tên miền, những người biết miền vấn đề và các chuyên gia thiết kế / kiến trúc, những người biết miền giải pháp. Ý tưởng là có một mô hình chia sẻ với ngôn ngữ dùng chung để mọi người từ hai miền khác nhau với hai quan điểm khác nhau thảo luận về giải pháp họ thực sự đang thảo luận về một nền tảng kiến thức được chia sẻ với các khái niệm được chia sẻ.
Việc thiếu hiểu biết về miền vấn đề được chia sẻ giữa những người cần một hệ thống cụ thể và những người đang thiết kế và triển khai hệ thống dường như là một trở ngại cốt lõi cho các dự án thành công. Domain Driven Design là một phương pháp để giải quyết trở ngại này.
Nó là nhiều hơn là có một mô hình đối tượng. Trọng tâm thực sự là về giao tiếp được chia sẻ và cải thiện sự hợp tác để có thể phát hiện ra các nhu cầu thực tế trong miền vấn đề và một giải pháp thích hợp được tạo ra để đáp ứng các nhu cầu đó.
Thiết kế hướng tên miền: Điều tốt và thách thức cung cấp một cái nhìn tổng quan ngắn gọn với nhận xét này:
DDD giúp khám phá kiến trúc cấp cao nhất và thông báo về các cơ chế và động lực của miền mà phần mềm cần sao chép. Cụ thể, điều đó có nghĩa là một phân tích DDD được thực hiện tốt sẽ giảm thiểu sự hiểu lầm giữa các chuyên gia tên miền và kiến trúc sư phần mềm và nó làm giảm số lượng yêu cầu đắt tiền tiếp theo để thay đổi. Bằng cách phân chia độ phức tạp của miền trong các bối cảnh nhỏ hơn, DDD tránh việc buộc các kiến trúc sư dự án thiết kế một mô hình đối tượng cồng kềnh, điều này làm mất rất nhiều thời gian trong việc xử lý các chi tiết triển khai - một phần vì số lượng thực thể phải xử lý thường tăng lên kích thước của bảng trắng phòng hội nghị.
Cũng xem bài viết này Thiết kế hướng cho miền cho kiến trúc dịch vụ cung cấp một ví dụ ngắn. Bài viết cung cấp mô tả hình thu nhỏ sau đây của Thiết kế hướng miền.
Domain Driven Design ủng hộ việc mô hình hóa dựa trên thực tế kinh doanh có liên quan đến các trường hợp sử dụng của chúng tôi. Khi nó ngày càng già đi và mức độ cường điệu giảm xuống, nhiều người trong chúng ta quên rằng phương pháp DDD thực sự giúp hiểu được vấn đề trong tay và thiết kế phần mềm theo hướng hiểu biết chung về giải pháp. Khi xây dựng các ứng dụng, DDD nói về các vấn đề như tên miền và tên miền phụ. Nó mô tả các bước / lĩnh vực độc lập của các vấn đề như bối cảnh bị ràng buộc, nhấn mạnh một ngôn ngữ chung để nói về những vấn đề này và thêm nhiều khái niệm kỹ thuật, như các thực thể, các đối tượng giá trị và các quy tắc gốc tổng hợp để hỗ trợ thực hiện.
Martin Fowler đã viết một số bài báo trong đó đề cập đến Thiết kế hướng miền như một phương pháp luận. Ví dụ, bài viết này, BoundedContext , cung cấp một cái nhìn tổng quan về khái niệm bối cảnh bị ràng buộc từ Phát triển hướng miền.
Trong những ngày còn trẻ, chúng tôi được khuyên nên xây dựng một mô hình thống nhất cho toàn bộ doanh nghiệp, nhưng DDD nhận ra rằng chúng tôi đã học được rằng "tổng thể thống nhất mô hình miền cho một hệ thống lớn sẽ không khả thi hoặc hiệu quả về chi phí" 1 . Vì vậy, thay vào đó DDD chia một hệ thống lớn thành các Bối cảnh bị ràng buộc, mỗi bối cảnh có thể có một mô hình thống nhất - về cơ bản là một cách cấu trúc NhiềuCanonicalModels.