Có nhiều cách khác nhau để sử dụng UML. Martin Fowler gọi các chế độ UML này và xác định bốn chế độ : UML là Ghi chú , UML là Phác thảo , UML là Blueprint và UML là Ngôn ngữ lập trình .
UML như một ngôn ngữ lập trình không bao giờ thực sự cất cánh. Đã có một số công việc trong lĩnh vực này dưới các tên khác nhau, như Mô hình hướng dẫn mô hình hoặc Kỹ thuật phần mềm dựa trên mô hình. Theo cách tiếp cận này, bạn tạo các mô hình chi tiết cao của hệ thống phần mềm của bạn và tạo mã từ các mô hình đó. Có thể có một số trường hợp sử dụng trong đó phương pháp này hữu ích, nhưng không phải cho phần mềm nói chung và đặc biệt không nằm ngoài các công ty lớn có thể mua các công cụ hỗ trợ cho phương pháp này. Đây cũng là một quá trình tốn thời gian - Tôi có thể nhập mã cho một lớp nhanh hơn tôi có thể tạo tất cả các mô hình đồ họa cần thiết để thực hiện nó.
UML như là một Kế hoạch chi tiết thường là biểu hiện của một dự án "thiết kế lớn lên phía trước" . Nó không phải là, tất nhiên. Mô hình cũng có thể được mô tả đầy đủ cho một mức tăng cụ thể. Nhưng ý tưởng là thời gian dành cho việc tạo ra một thiết kế dưới dạng các mô hình UML sau đó được trao cho ai đó để chuyển đổi thành mã. Tất cả các chi tiết được đánh vần và việc chuyển đổi thành mã có xu hướng máy móc hơn.
UML như Phác thảo và UML như Ghi chú có bản chất tương tự nhau, nhưng khác nhau dựa trên thời điểm chúng được sử dụng. Sử dụng UML làm Phác thảo có nghĩa là bạn sẽ phác thảo các thiết kế bằng cách sử dụng các ký hiệu UML, nhưng các sơ đồ có thể chưa hoàn chỉnh, nhưng sẽ tập trung vào các khía cạnh cụ thể của thiết kế mà bạn cần giao tiếp với người khác. UML như Ghi chú là tương tự, nhưng các mô hình được tạo sau mã để hỗ trợ tìm hiểu cơ sở mã.
Khi bạn xem xét điều này, tôi nghĩ mọi thứ ở trên đều đúng với bất kỳ loại ký hiệu mô hình nào. Bạn có thể áp dụng nó cho các sơ đồ mối quan hệ thực thể, sơ đồ IDEF , ký hiệu mô hình hóa quy trình kinh doanh, v.v. Bất kể ký hiệu mô hình hóa, bạn có thể chọn khi bạn áp dụng nó (trước là một đặc điểm kỹ thuật, sau là một đại diện thay thế) và bao nhiêu chi tiết (chi tiết đầy đủ cho các khía cạnh chính).
Mặt khác của điều này là văn hóa nguồn mở.
Thông thường, các dự án nguồn mở bắt đầu để giải quyết vấn đề mà một cá nhân (hoặc, ngày nay, một công ty) đang gặp phải. Nếu nó được đưa ra bởi một cá nhân, số lượng nhà phát triển là 1. Trong trường hợp này, chi phí truyền thông cực kỳ thấp và không có nhu cầu giao tiếp về các yêu cầu và thiết kế. Trong một công ty, có khả năng là một nhóm nhỏ. Trong trường hợp này, bạn có thể sẽ cần truyền đạt các khả năng thiết kế và thảo luận về sự đánh đổi. Tuy nhiên, một khi bạn đã đưa ra quyết định thiết kế của mình, bạn cần duy trì các mô hình của mình khi cơ sở mã của bạn thay đổi theo thời gian hoặc vứt chúng đi. Trong thuật ngữ Agile Modelling , "tài liệu liên tục" và duy trì "một nguồn thông tin duy nhất" .
Tóm lại, có ý kiến cho rằng mã là thiết kế và các mô hình chỉ là các khung nhìn thay thế của thiết kế. Jack Reeves đã viết ba bài tiểu luận về mã như thiết kế , và cũng có các cuộc thảo luận về wiki C2, thảo luận về các ý tưởng rằng mã nguồn là thiết kế , thiết kế là mã nguồn , và mã nguồn và mô hình hóa . Nếu bạn đăng ký vào niềm tin này (mà tôi làm), thì mã nguồn là thực tế và bất kỳ sơ đồ nào cũng nên tồn tại để hiểu mã và quan trọng hơn, lý do đằng sau lý do tại sao mã là gì.
Một dự án nguồn mở thành công, giống như những dự án mà bạn đề cập, có những người đóng góp trên khắp thế giới. Những người đóng góp này có xu hướng thành thạo về mặt kỹ thuật trong các công nghệ cung cấp năng lượng cho phần mềm và có khả năng cũng là người sử dụng phần mềm. Người đóng góp là những người có thể đọc mã nguồn dễ dàng như các mô hình và có thể sử dụng các công cụ (IDE và các công cụ kỹ thuật đảo ngược) để hiểu mã (bao gồm cả việc tạo các mô hình, nếu họ cảm thấy cần thiết). Họ cũng có thể tự tạo ra các bản phác thảo của dòng chảy.
Trong bốn chế độ mà Fowler mô tả, tôi không nghĩ rằng bạn sẽ tìm thấy một dự án nguồn mở, hoặc rất nhiều dự án ở bất cứ đâu, đang sử dụng các ngôn ngữ mô hình hóa như ngôn ngữ lập trình hoặc bản thiết kế. Điều này để lại các ghi chú và phác họa có thể sử dụng cho UML. Ghi chú sẽ được tạo bởi người đóng góp cho người đóng góp, vì vậy bạn có thể sẽ không tìm thấy chúng được tải lên ở bất cứ đâu. Phác thảo giảm giá trị khi mã trở nên hoàn thiện hơn và có khả năng sẽ không được duy trì vì điều đó sẽ chỉ nỗ lực từ phía những người đóng góp.
Nhiều dự án nguồn mở không có sẵn các mô hình vì nó không tăng thêm giá trị. Tuy nhiên, điều đó không có nghĩa là các mô hình không được tạo bởi ai đó sớm trong dự án hoặc các cá nhân chưa tạo ra các mô hình hệ thống của riêng họ. Nó chỉ hiệu quả hơn về thời gian để duy trì một nguồn thông tin thiết kế: mã nguồn.
Nếu bạn muốn tìm người trao đổi thông tin thiết kế, tôi khuyên bạn nên xem bất kỳ loại diễn đàn hoặc danh sách gửi thư nào được sử dụng bởi những người đóng góp. Thông thường, các diễn đàn và danh sách gửi thư này đóng vai trò là tài liệu thiết kế cho các dự án. Bạn có thể không tìm thấy UML chính thức, nhưng bạn có thể tìm thấy một số loại biểu diễn đồ họa của thông tin thiết kế và mô hình ở đó. Bạn cũng có thể vào phòng chat hoặc các kênh liên lạc khác cho dự án - nếu bạn thấy mọi người nói về quyết định thiết kế, họ có thể đang giao tiếp với các mô hình đồ họa. Nhưng họ có thể sẽ không trở thành một phần của kho lưu trữ vì chúng không có giá trị một khi họ đã phục vụ mục đích của họ trong giao tiếp.