Mô hình tư duy(Mental Model)

Giới thiệu

Chúng ta sẽ cùng khám phá

1. Mô hình tư duy & tầm quan trọng của chúng trong thiết kế phần mềm có tính đến chiến lược kinh doanh

2. Đào sâu Strategic Domain-Driven Design

3. Nguyên tắc Hexagonal & Clean Architecture kết hợp Tactical DDD

4. Kiểm thử Use Case Clean Architecture

Mỗi module được thiết kế nhằm giúp bạn thấu hiểu và ứng dụng Domain-Driven Design một cách sâu sắc.

Mô hình tư duy là gì

(Mô hình tư duy(Mental Model )là cách mà một người tưởng tượng, hiểu và lý giải cách một hệ thống, quy trình, hoặc một lĩnh vực hoạt động.

Nói đơn giản, đó là bức tranh trong đầu mỗi người về thế giới thật — và bức tranh này có thể khác nhau giữa từng người.

Trong bối cảnh Domain-Driven Design (DDD):

Ví dụ

Vai trò Mental Model về “Lô hàng”
Nhân viên kho Một lần xe chở hàng vào kho = 1 lô hàng
Kế toán Một đơn hàng có thể nhập thành nhiều lô
Lập trình viên (dev) Một dòng trong bảng Shipments trong DB

Nếu không trao đổi để thống nhất, thì phần mềm sẽ thiết kế sai với thực tế.

Tại sao Mental Models quan trọng trong DDD?

1. Mô hình tư duy & sự đồng bộ trong thiết kế

2. Vai trò then chốt của mô hình tư duy

3. Thách thức trong giao tiếp

4. Rào cản từ phụ thuộc vào tài liệu

5. Xung đột giữa mục tiêu nghiệp vụ và kỹ thuật

6. Hạn chế của mô hình truyền thống (Waterfall)

7. Hậu quả của thiếu đồng bộ

8. Giải pháp then chốt

9. Kết luận

Câu hỏi mở: Làm thế nào để đạt được sự đồng bộ này? 

Tác giả: Đỗ Ngọc Tú
Công Ty Phần Mềm VHTSoft

Làm thế nào để đạt được mô hình tư duy chung

Việc đạt được mô hình tư duy chung(shared mental model)một trong những mục tiêu quan trọng nhất trong DDD — và cũng là một trong những khó khăn lớn nhất nếu không làm đúng cách.

Những rào cản lớn để đạt được

Rào cản Tác động
Thiếu giao tiếp giữa dev và domain expert Không hiểu đúng nghiệp vụ
Ngôn ngữ không thống nhất Dễ gây nhầm lẫn khi thảo luận hoặc code
Developer chỉ tập trung vào kỹ thuật Bỏ qua logic nghiệp vụ, hiểu sai bản chất
Domain expert không quen mô hình hóa Không diễn đạt đúng ý hoặc bỏ sót ý quan trọng
Áp lực deadline → code trước, hiểu sau Dẫn đến phần mềm xa rời thực tế
Không ghi chú/tài liệu hoá rõ ràng Không lưu giữ tri thức đã chia sẻ

 

Agile – Giải pháp thay thế cho mô hình truyền thống

Tuyên ngôn Agile đề xuất chuyển dịch:

2 giá trị cốt lõi của Agile giải quyết thách thức giao tiếp

  1. Ưu tiên tương tác giữa con người hơn quy trình hoặc công cụ

  2. Hợp tác với khách hàng thay vì đàm phán hợp đồng cứng nhắc
    → Cả hai nhấn mạnh làm việc chặt chẽ với khách hàng để xây dựng mô hình tư duy chung

Cách Agile xây dựng mô hình tư duy chung

Vai trò của Prototyping

Cơ chế phản hồi trong Agile

  1. Lập trình cặp (Pair Programming)/Mob Programming:

    • Kết hợp góc nhìn đa dạng → Hiểu biết tập thể

    • Khuyến khích khách hàng tham gia trực tiếp để giảm hiểu lầm

  2. Phát triển hướng kiểm thử (TDD):

    • Viết test trước code → Đảm bảo phần mềm đáp ứng nghiệp vụ

    • Test nên viết từ góc độ yêu cầu kinh doanh, không chỉ kỹ thuật

  3. Stand-up Meeting:

    • Giải quyết bất đồng ngay lập tức

    • Duy trì sự đồng bộ trong team

  4. Planning Meeting:

    • Sự tham gia của khách hàng → Xác nhận mục tiêu chung

Kết quả đạt được

Kết nối giữa Agile và Domain-Driven Design (DDD)

Tác giả: Đỗ Ngọc Tú
Công Ty Phần Mềm VHTSoft