UMLを使用するにはさまざまな方法があります。Martin FowlerはこれらのUMLモードを呼び出し、 4つを識別します。UMLはNotes、UMLはSketch、UMLはBlueprint、UMLはプログラミング言語です。
プログラミング言語としてのUMLが実際に普及したことはありません。この分野では、モデル駆動型アーキテクチャやモデルベースのソフトウェアエンジニアリングなど、さまざまな名前で作業が行われています。このアプローチでは、ソフトウェアシステムの非常に詳細なモデルを作成し、それらのモデルからコードを生成します。このアプローチが有用であるユースケースもありますが、一般的なソフトウェア、特にこのアプローチを推進するツールを購入できる大企業の外部には適していません。また、時間のかかるプロセスです。実装に必要なすべてのグラフィカルモデルを作成するよりも速くクラスのコードを入力できます。
ブループリントとしてのUMLは、多くの場合、「前もって設計された大きなデザイン」プロジェクトを示しています。もちろん、そうである必要はありません。モデルは、特定の増分についても完全に記述できます。しかし、アイデアは、コードを変換するために誰かに引き渡されるUMLモデルの形でデザインを作成するのに時間がかかるということです。詳細はすべて詳しく説明されており、コードへの変換はより機械的になりがちです。
SketchとしてのUMLとNotesとしてのUMLは本質的に似ていますが、使用されるタイミングによって異なります。UMLをスケッチとして使用するということは、UML表記を使用して設計をスケッチすることを意味しますが、図は完全ではない可能性がありますが、他の人と通信する必要がある設計の特定の側面に焦点を当てます。NotesとしてのUMLも似ていますが、モデルはコードベースの理解を支援するためにコードの後に作成されます。
あなたがこれを検討しているとき、私は上記のすべてがあらゆる種類のモデリング表記法に当てはまると思います。エンティティ関係図、IDEF図、ビジネスプロセスモデリング表記法などに適用できます。モデリング表記に関係なく、適用するタイミング(仕様として、前に代替表現として)と詳細度(主要な側面の詳細)を選択できます。
これの反対側は、オープンソース文化です。
多くの場合、オープンソースプロジェクトは、個人(または今日では企業)が経験している問題を解決するために開始されます。個人が起動する場合、開発者の数は1です。この場合、通信のオーバーヘッドは非常に低く、要件と設計について通信する必要はほとんどありません。会社では、小さなチームが存在する可能性があります。この場合、設計の可能性を伝え、トレードオフについて議論する必要があるでしょう。ただし、設計を決定したら、コードベースが時間とともに変化するときにモデルを維持するか、モデルを破棄する必要があります。でアジャイルモデリング用語は、「文書を連続的」と維持「情報の単一源」。
簡単に言うと、コードは設計であり、モデルは設計の代替ビューにすぎないという考えがあります。Jack Reevesは、デザインに関するコードについて3つのエッセイを執筆しました。また、C2 wikiでも議論があり、ソースコードはデザイン、デザインはソースコード、ソースコードとモデリングという考え方が議論されています。この信念に同意する場合(私はそうします)、ソースコードは現実であり、コードと、さらに重要なことには、コードがそれである理由の背後にある理論を理解するための図が存在する必要があります。
あなたが言及したような成功したオープンソースプロジェクトには、世界中に貢献者がいます。これらの貢献者は、ソフトウェアを動かす技術において技術的に有能である傾向があり、ソフトウェアのユーザーでもある可能性があります。貢献者は、ソースコードをモデルと同じくらい簡単に読むことができ、ツール(IDEおよびリバースエンジニアリングツール)を使用してコードを理解できる(必要に応じてモデルを生成することを含む)人です。また、フローのスケッチを自分で作成することもできます。
Fowlerが説明する4つのモードのうち、プログラミング言語または設計図としてモデリング言語を使用しているオープンソースプロジェクトや、非常に多くのプロジェクトを見つけることはないと思います。これにより、UMLの用途としてメモとスケッチが残ります。メモは寄稿者のために寄稿者によって作成されるため、おそらくどこにもアップロードされていないでしょう。スケッチは、コードがより完全になるにつれて価値が低下し、寄稿者の側で努力するだけで維持される可能性が低くなります。
多くのオープンソースプロジェクトは、価値を追加しないため、モデルを利用できません。ただし、プロジェクトの初期段階で誰かがモデルを作成したわけではなく、個人がシステムの独自のモデルを作成していないという意味でもありません。設計情報の1つのソースであるソースコードを維持するほうが、時間効率が向上します。
設計情報を交換している人を見つけたい場合は、寄稿者が使用しているあらゆる種類のフォーラムやメーリングリストを参照することをお勧めします。多くの場合、これらのフォーラムとメーリングリストは、プロジェクトの設計ドキュメントとして機能します。正式なUMLは見当たらないかもしれませんが、そこには何らかの設計情報とモデルのグラフィカルな表現が見つかるかもしれません。また、プロジェクトのチャットルームや他のコミュニケーションチャネルにアクセスすることもできます。デザインの決定について話している人がいる場合は、グラフィカルモデルと通信している可能性があります。しかし、コミュニケーションの目的を果たすと価値がなくなるため、リポジトリの一部にはなりません。