Tôi nghĩ rằng các sơ đồ UML chỉ có thể hữu ích nếu chúng thể hiện một cái gì đó ở mức độ trừu tượng cao hơn mã của bạn .
Viết UML chỉ vì mục đích viết UML trở nên quan liêu không cần thiết và làm cho dự án và mã không thích ứng với các thay đổi mà không có lợi ích gì.
Ví dụ, sơ đồ lớp UML hiển thị tất cả các lớp trên một gói, với tất cả các thuộc tính và phương thức của chúng - một cái gì đó có thể dễ dàng tự động tạo ra - không cung cấp giá trị nào cả: nó ở cùng mức độ trừu tượng hơn mã của bạn . Thêm vào đó, mã chắc chắn sẽ là một nguồn tốt hơn cho thông tin đó bởi vì nó sẽ luôn được cập nhật và có lẽ nó sẽ được ghi lại và tổ chức theo cách dễ dàng hơn để biết phương thức / thuộc tính / điều nào quan trọng hơn.
Mặt khác, nếu bạn có các khái niệm về mức độ trừu tượng cao hơn những gì có thể được thể hiện trên mã, thì việc ghi lại những điều đó trên sơ đồ có thể là một ý tưởng tốt.
Ví dụ, một sơ đồ hiển thị các mô-đun trừu tượng cấp cao hơn trên một hệ thống phức tạp, với các phụ thuộc của chúng và có thể mô tả một chút về trách nhiệm của chúng và gói / không gian tên mà chúng ánh xạ tới trong mã nguồn có thể thực sự hữu ích cho một thành viên nhóm mới cần được giới thiệu cho dự án, hoặc cũng có thể được sử dụng để tìm ra nơi một lớp / chức năng mới sẽ được ném.
Một ví dụ khác về sơ đồ hữu ích có thể là sơ đồ trình tự hiển thị các bước cấp cao được thực hiện trong giao thức truyền thông. Có thể mỗi bước của những điều đó có một chút kỳ quặc và phức tạp, nhưng có lẽ nó đủ để mô tả chúng trong chính mã. Sơ đồ cấp cao hơn có thể giúp lập trình viên hiểu "bức tranh lớn" của mọi thứ một cách dễ dàng mà không cần phải lo lắng về sự phức tạp của mỗi tương tác.
Dù sao, đó chỉ là một số ví dụ; có rất nhiều trường hợp trong đó một sơ đồ đơn giản có thể giúp ích rất nhiều. Chỉ cần nhớ rằng bạn chỉ nên thực hiện chúng khi bạn không thể thể hiện điều gì đó trong chính mã. Nếu bạn thấy mình sử dụng các sơ đồ UML để giải thích chính mã nguồn, hãy tạo mã soruce để tự viết tài liệu hơn.
Cuối cùng, một số quy tắc chung áp dụng cho mã cũng có thể áp dụng cho sơ đồ: tránh lặp lại chính mình, giữ cho nó đơn giản, không sợ thay đổi mọi thứ (chỉ vì một cái gì đó được ghi lại trên sơ đồ UML không có nghĩa là không thể được thay đổi) và luôn nghĩ về ai sẽ đọc / duy trì các sơ đồ đó trong tương lai (có thể là bản thân tương lai của bạn) khi viết chúng :)