UML của UML là điều tồi tệ nhất từng xảy ra với MDD. Tại sao?


17

William Cook trong một tweet đã viết rằng:

" UML là điều tồi tệ nhất từng xảy ra với MDD. May mắn thay, nhiều người bây giờ nhận ra điều này ... "

Tôi muốn biết lý do đằng sau tuyên bố đó (rõ ràng, tôi không đề cập đến ý kiến ​​cá nhân của anh ấy).

Tôi đã nhận thấy rằng nhiều người ở ngoài đó không thích UML nhiều như vậy. Ngoài ra, điều đáng nói là anh ta đang ở trong học viện, nơi UML là một chén thánh của thiết kế và mô hình hiệu quả.


15
Tôi muốn nói rằng MDD là điều tồi tệ nhất từng xảy ra với MDD.
Michael Borgwardt

Câu trả lời:


39

Vâng, tôi là học giả đã đăng tweet gốc. Tweets không có nghĩa là bài viết học thuật. Chúng là những quảng cáo, và tôi nghĩ chúng cũng có thể gây tranh cãi. Dưới đây là các tweet tiếp theo của tôi:

1) UML được tạo để mô hình hóa các thiết kế OO. Nó ảnh hưởng đến việc bạn đang mô hình hóa mã của một hệ thống, chứ không phải hành vi của hệ thống. UML ở mức sai.

2) ý tưởng rằng 7 (hoặc 13) định dạng sơ đồ trong UML có thể bao gồm mọi thứ thật điên rồ. Điều gì về GUI, khung lưới web, ủy quyền, vv ???

3) UML đã khuyến khích ý tưởng rằng các mô hình phải là đồ họa. Nực cười! Các mô hình văn bản và đồ họa đều hữu ích và thường có thể thay thế cho nhau

4) UML cùng một lúc quá lớn và phức tạp, đồng thời rất hạn chế. Bản mẫu và hồ sơ không hiệu quả đối với các tiện ích mở rộng có thể sử dụng.

Lưu ý rằng tôi không nhất thiết phải nói UML là xấu. Tôi chỉ đơn giản nói rằng điều đó không giúp ích gì cho mục tiêu "phát triển theo mô hình", đó là điều tôi quan tâm. Tôi không hiểu nhận xét về "chén thánh".


10
+1 để tìm và trả lời câu hỏi trên prog.SE về tweet của riêng bạn!
Warren P

Vì vậy, sự phát triển theo mô hình luôn luôn đối với tôi là có một mô hình trực quan. Và nếu không phải là UML thì sao? (lưu ý, tôi chưa bao giờ thích MDD và tôi ghét UML. Nhưng tôi sẵn sàng tiêm MDD-sans-UML. Tôi nên thử gì?
Warren P

1
@Warren P: bạn không thích gì về MDD và UML?
dan_l

1
Tôi đã xóa câu trả lời của mình vì rõ ràng tôi đã sai về ý của bạn. Nhưng tôi đứng trước tuyên bố rằng UML, giống như bất kỳ ngôn ngữ nào, là một công cụ giao tiếp, không phải là một công cụ thiết kế. Bạn đã trả lời rằng 'Nhiều ngôn ngữ lập trình có từ "ngôn ngữ" trong tên của chúng, nhưng điều đó không có nghĩa là chúng chỉ dành cho giao tiếp, không phải thực thi' - Tôi nghĩ rằng bạn bỏ lỡ điểm thực hiện giao tiếp IS với máy tính. Bạn cũng sẽ không sử dụng COBOL làm công cụ thiết kế.
pdr

Tôi nghĩ rằng bình luận "chén thánh" có liên quan đến tần suất được dạy.

8

UML tương đương với việc lấy tuốc nơ vít và búa và gõ chúng lại với nhau và gọi nó là "Công cụ buộc chặt phổ quát". Về lý thuyết, nó có thể được sử dụng để thể hiện rất nhiều thứ rất chi tiết, trong thực tế, một loạt các công cụ tích hợp kém tự xưng là một công cụ duy nhất, khiến cho việc thực hiện bất kỳ một nhiệm vụ nào trở nên khó khăn hơn nhiều so với việc bắt đầu một công cụ thích hợp.


Điều thú vị là tồn tại harborfreight.com/impact-screw ấn
set

3

Tôi nghĩ cũng có một trường hợp được đưa ra rằng MDD là điều tồi tệ nhất đã xảy ra với UML (tại sao chúng ta lại có UML2 mà chúng ta có?), Nhưng bỏ qua điều đó vào lúc này ...

MDD = Mô hình hướng <Thiết kế | Phát triển>. Ý tưởng là có thể phát triển các giải pháp ở mức độ trừu tượng phù hợp với miền vấn đề - đó là một nỗ lực để thể hiện các giải pháp cho các vấn đề theo cú pháp tự nhiên nhất để diễn đạt các giải pháp đó. Bản thân miền vấn đề được đặc trưng với một mô hình hoạt động (nghĩa là, bởi một mô hình có thể được thực thi bằng máy tính). Vì vậy, MDD có thể là một cách tiếp cận rất hấp dẫn, mặc dù một trong hai yêu cầu chính:

  1. Người ta phải có khả năng biên dịch ngôn ngữ đó thành một hình thức phù hợp để thực hiện máy tính (mô hình phải được vận hành ); và
  2. Người ta phải tạo một ngôn ngữ mô hình hóa cho miền vấn đề.

Theo hiểu biết của tôi, nỗ lực của UML2 nhằm giải quyết điểm 1, có thể theo niềm tin rằng kinh nghiệm công nghiệp với UML cho thấy điểm 2 được thỏa mãn đối với một số tập hợp lớn các miền có vấn đề. Thật không may, và đây là điều tôi nghĩ William Cook đang gặp phải, UML không thỏa mãn điểm 2 cho bất kỳ nơi nào gần phạm vi các vấn đề đã được nghĩ. Tôi không nói từ kinh nghiệm cá nhân, nhưng tôi nghĩ rằng kinh nghiệm sử dụng MDD với UML có hai kết quả chung:

  • Mã nguồn được tạo từ UML cần phải được điều chỉnh để giải quyết các khoảng trống nhỏ giữa thiết kế UML và các yêu cầu của chương trình (buộc các nhà phát triển phải làm việc với mã được tạo có các tiêu chuẩn khác nhau để duy trì và giảm khả năng áp dụng các tạo phẩm UML cho việc triển khai ); HOẶC LÀ
  • UML bị lộn xộn với rất nhiều chi tiết làm giảm khả năng sử dụng của nó như một ngôn ngữ để truyền đạt về thiết kế.

    Trong cả hai trường hợp, lời hứa của MDD đều không được thực hiện. UML có thể được coi là điều tồi tệ nhất xảy ra với MDD vì nó chiếm sự chú ý của các nhà phát triển công cụ MDD trong việc loại trừ các mô hình có thể thực sự hoạt động (mặc dù có một số vấn đề phần mềm nhỏ hơn).


  • -2

    UML là tuyệt vời miễn là nó chỉ là một ngôn ngữ mô hình. Nếu bạn cố gắng kết nối MDD với UML để có được chế độ xem đồ họa thì thật vô ích. MDD sẽ là tuyệt vời nếu không có UML cũng như UML mà không có MDD.

    Giả sử UML và MDD đã ly dị ngày hôm nay để có một cuộc sống tốt hơn không phải ở bên nhau nữa :-)


    Nó không "tuyệt vời" ở bất kỳ cấp độ nào. Một người sử dụng ngôn ngữ lập trình ADA thảm khốc (Booch) đã tạo ra một số sơ đồ trẻ con và kết hợp với một vài cách tiếp cận biểu đồ lớp nghiêm trọng hơn để tạo UML. UML ngay lập tức biến thành một công cụ tạo doanh thu cho nhà cung cấp phần mềm lớn. Điều đó thật kinh khủng, nhưng được cứu vãn bằng cách đơn giản bỏ vào các loại sơ đồ mới (UML đã có từ trước) như chuỗi, luồng dữ liệu, v.v. Không có gì có thể mở rộng về nó. Không có lược đồ cơ sở dữ liệu, không có sơ đồ lớp, nó chứa đầy những khoảng trống và đầy sơ đồ vô dụng cùng một lúc.
    Rick O'Shea
    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.