Phát triển theo hướng tên miền trong điều kiện thực tế là gì? [đóng cửa]


24

Tôi đã nghe nói về Phát triển hướng miền từ một nhà phát triển trong khu vực. Anh ta nói chuyện như thể nó chỉ là về viên đạn bạc để thay đổi yêu cầu.

Tôi đọc wiki . Vẫn không quá rõ ràng. "3D" trong thực tế là gì? Có thực sự đáng kinh ngạc khi bây giờ việc lập sơ đồ lớp UML chỉ là lỗi thời?

Câu trả lời:


29

Chà, trước hết, tôi không nghĩ rằng bài viết Wikipedia mà bạn đề cập là rất hay, chủ yếu là vì nó tham khảo một loạt những thứ chỉ phụ trợ cho Thiết kế hướng miền và không làm sáng tỏ bất cứ ai về thực tiễn.

Nhưng, với tư cách là người đã thiết kế Domain Driven Design (thường đi theo DDD, thay vì 3D, vì giá trị của nó), tôi luôn cảm thấy các nguyên tắc cơ bản của DDD là rõ ràng, nếu bạn đọc nhiều như chương đầu tiên của Eric Cuốn sách của Evans. Nhưng nó là một tập hợp các mô hình và thực tiễn, vì vậy không dễ để đưa ra một bản tóm tắt 3 câu về nó là gì và những lợi thế là gì mà không đi sâu vào chi tiết. Những chi tiết cộng hưởng với bất kỳ một người nào cũng có thể rất khác nhau; Có thể là 10 năm trước tôi đã không nhìn thấy điểm nào cả.

DDD không phải là viên đạn bạc. Khi được thực hiện một cách hợp lý, đó là về cách tiếp cận giống như thợ thủ công để xây dựng phần mềm và nhận ra sự cần thiết phải giảm ma sát nhận thức giữa các nhóm phát triển và các doanh nghiệp mà họ đang xây dựng phần mềm. Một trong những thực tiễn quan trọng nhất là có một lớp trong đó từ vựng miền được sử dụng bởi nhóm phần mềm và nhóm kinh doanh khớp với nhau càng chặt chẽ càng tốt. Bạn xây dựng lớp này lặp đi lặp lại khi bạn hiểu được vấn đề kinh doanh mà bạn đang cố gắng giải quyết. Khi logic nghiệp vụ được mã hóa hợp lý trong lớp này, tách biệt khỏi tất cả các phụ thuộc phức tạp mà các ứng dụng doanh nghiệp thường có bằng cách bao gồm các tương tác với các hệ thống đó với các giao diện, ngôn ngữ được sử dụng trong lớp miền thực tế cuối cùng trở nên khá ngắn gọn, rõ ràng và dễ đọc.

Xét về hình dạng mà tôi đã thấy hầu hết các phần mềm doanh nghiệp, trên thực tế, DDD có thể nghe giống như một viên đạn bạc, bởi vì hầu hết các phần mềm doanh nghiệp có sự phân tách đáng lo ngại đến mức gần như không thể kiểm chứng được và nhóm phần mềm sống trong nỗi sợ hãi thay đổi lớn vì họ không biết tác dụng phụ của những thay đổi mã tầm thường thậm chí có thể là gì, trong khi đó, một lớp miền được bao thanh đúng sẽ có thể kiểm tra độc lập và có thể kiểm chứng được. Nhưng thực tế, DDD thừa nhận rằng các hệ thống hiếm khi tồn tại trong sự cô lập. DDD bao gồm các mẫu đối phó cho các hệ thống cũ (lớp Chống tham nhũng, bối cảnh bị ràng buộc, để đặt tên cho một cặp vợ chồng).

Nếu bạn thực hành thiết kế hướng đối tượng, bao gồm kỷ luật khớp nối lỏng lẻo và bạn thực hành thử nghiệm đơn vị một cách khá tôn giáo, và bạn mã hóa lại một cách không thương tiếc, và bạn làm việc với các chuyên gia tên miền trong khi xây dựng hệ thống của mình, về cơ bản bạn sẽ kết quả với kết quả đó về cơ bản những gì những người ủng hộ thiết kế định hướng tên miền đang nói về.

Có một vài mô hình cụ thể được mô tả trong cuốn sách của Evans áp dụng chủ yếu cho phát triển phần mềm doanh nghiệp và một số nguyên tắc khá phổ biến, nhưng về cơ bản, DDD là một cách tiếp cận thực tế để phát triển phần mềm, theo thời gian, có thể giảm sự tích tụ của nợ kỹ thuật, và làm cho khách hàng của bạn hạnh phúc hơn vì bạn có thể nói cùng một ngôn ngữ với nhau và đưa ra các giải pháp làm việc tốt hơn vì những lợi thế của việc hiểu nhau hơn.


6

Một mô tả cấp cao có thể là -

Mô hình hóa các lớp của bạn để phản ánh cấu trúc dữ liệu và hành vi của miền vấn đề của bạn.

Điều này cho phép bạn ánh xạ các thay đổi trong miền vấn đề của bạn trực tiếp thành các thay đổi trong mã của bạn, do đó sẽ dễ dàng cập nhật hơn khi miền vấn đề của bạn phát triển.


2

TUYÊN BỐ TỪ CHỐI: Tôi đã thêm câu trả lời này sau khi câu hỏi này được đánh dấu là trùng lặp. Tôi không đồng ý, nhưng chúng tôi ở đây. :-)

Domain-Driven Design nhằm mục đích thiết kế phần mềm trong các miền có giá trị cao / độ phức tạp cao.

Điều này biến thành một cách tiếp cận khác để xây dựng phần mềm doanh nghiệp: có quá nhiều học hỏi liên quan và hậu quả quan trọng nhất là bạn sẽ không có được giải pháp phù hợp ngay từ lần chụp đầu tiên.

  • Bởi vì bạn sẽ học trên đường đi.
  • Bởi vì các bên liên quan sẽ không nói hết sự thật trong một lần bắn.
  • Bởi vì tên miền sẽ phát triển trên đường đi.

Hoặc sự kết hợp của cả hai.

Cả hai cách bạn sẽ cần nền tảng phần mềm tốt cho phần mềm viết lại thường xuyên . Đó là lý do tại sao cuốn sách nhấn mạnh vào một tập các mẫu nhất định xung quanh mẫu Mô hình miền: chúng là sự kết hợp hợp lý nhất trong năm 2004.

Tuy nhiên, OOP và mô hình chiến thuật không phải là điều quan trọng nhất. Làm chủ kỹ thuật là cần thiết để xây dựng phần mềm tuyệt vời theo cách tiến hóa. Nhưng đó chỉ là một thành phần của công thức. Những người khác?

  1. Nỗi ám ảnh với ngôn ngữ như một cách để khám phá những sắc thái ẩn giấu.
  2. Tập trung vào chế độ xem hình ảnh lớn để có thể cung cấp những thứ tuyệt vời.
  3. Sống thử của nhiều mô hình đơn giản hơn thay vì một mô hình lớn hơn.
  4. Nhấn mạnh vào mô hình hợp tác với các chuyên gia tên miền và trong nhóm phát triển.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.