Hầu hết, nếu không phải tất cả những người CNTT mà tôi biết đều tin rằng việc mô hình hóa phần mềm bằng UML hoặc các loại sơ đồ khác trước khi mã hóa là có lợi. (Câu hỏi của tôi không phải là về UML cụ thể, nó có thể là bất kỳ mô tả đồ họa hoặc văn bản nào của thiết kế phần mềm.)
Tôi không chắc chắn về nó. Lý do chính là: Mã không nói dối. Nó được kiểm tra bởi trình biên dịch hoặc trình thông dịch. Nó hy vọng có các bài kiểm tra tự động và cần phải vượt qua phân tích mã tĩnh. Nếu một mô-đun không giao tiếp chính xác với một mô-đun khác, nó thường rõ ràng trong mã vì bạn nhận được thông báo lỗi.
Tất cả điều này không thể được thực hiện với sơ đồ và các tài liệu khác. Vâng, có những công cụ kiểm tra UML, nhưng mọi thứ tôi thấy cho đến nay đều rất hạn chế. Do đó, các tài liệu này có xu hướng không đầy đủ, không nhất quán hoặc giả lập.
Ngay cả khi các sơ đồ là nhất quán, bạn không thể chắc chắn rằng mã thực sự thực hiện chúng. Vâng, có các trình tạo mã, nhưng chúng không bao giờ tạo ra tất cả các mã.
Đôi khi tôi cảm thấy như nỗi ám ảnh với kết quả mô hình hóa từ giả định rằng mã chắc chắn phải là một mớ hỗn độn khó hiểu mà các kiến trúc sư, nhà thiết kế hoặc những người được trả lương cao khác có được bức tranh lớn không cần phải giải quyết. Nếu không, nó sẽ trở nên quá đắt. Do đó, tất cả các quyết định thiết kế nên được di chuyển ra khỏi mã. Bản thân mã phải được để lại cho các chuyên gia (khỉ mã), những người có khả năng viết (và có thể đọc) nó nhưng không phải đối phó với bất cứ điều gì khác. Điều này có lẽ có ý nghĩa khi trình biên dịch là lựa chọn duy nhất, nhưng các ngôn ngữ hiện đại cho phép bạn viết mã ở mức độ trừu tượng rất cao. Vì vậy, tôi không thực sự thấy sự cần thiết của mô hình nữa.
Tôi thiếu những lập luận nào cho việc mô hình hóa các hệ thống phần mềm?
Bằng cách này, tôi tin rằng sơ đồ là một cách tuyệt vời để tài liệu và giao tiếp một số khía cạnh của thiết kế phần mềm nhưng điều đó không có nghĩa là chúng ta nên căn cứ thiết kế phần mềm trên chúng.
Làm rõ:
Câu hỏi đã được giữ lại là không rõ ràng. Vì vậy, hãy để tôi thêm một số lời giải thích:
Tôi đang hỏi liệu có hợp lý khi sử dụng các tài liệu (không phải mã) mô hình hóa phần mềm như là nguồn chính của sự thật về thiết kế phần mềm. Tôi không có trường hợp nào trong đó một phần đáng kể của mã được tạo tự động từ các tài liệu này. Nếu đây là trường hợp, tôi sẽ coi các tài liệu là mã nguồn chứ không phải là một mô hình.
Tôi đã liệt kê một số nhược điểm của quy trình này khiến tôi tự hỏi tại sao rất nhiều người (theo kinh nghiệm của tôi) coi nó là cách tốt nhất để thiết kế phần mềm.