UMLダイアグラムは、コードよりも高い抽象化レベルで何かを表現する場合にのみ役立つと思います。
UMLを作成するためだけにUMLを作成すると、不要な官僚主義になり、プロジェクトとコードの変更への適応性が低下し、何のメリットもありません。
たとえば、パッケージ上のすべてのクラスとそのすべての属性とメソッド(簡単に自動生成できるもの)を示すUMLクラス図は、値をまったく提供しません。コードと同じレベルの抽象化です。 。さらに、コードは常に最新であるため、その情報のより良いソースになります。おそらく、どのメソッド/属性/ものがより重要であるかを簡単に把握できる方法で文書化および編成されます。
一方、コードで表現できるものよりも高い抽象化の概念がある場合は、ダイアグラムにそれらを文書化することをお勧めします。
たとえば、複雑なシステムの上位レベルの抽象モジュールを示す図と、その依存関係、およびそれらの責任とソースコードでマッピングするパッケージ/ネームスペースについての少しの説明は、新しいチームメンバーにとって非常に便利です。プロジェクトに導入する必要があります。または、新しいクラス/機能をスローする場所を見つけるために使用することもできます。
有用な図の別の例は、通信プロトコルで実行される高レベルの手順を示すシーケンス図です。それらの各ステップには、ちょっとした癖や複雑さがあるかもしれませんが、おそらくコード自体でそれらを説明するだけで十分でしょう。上位レベルの図は、プログラマが各相互作用の複雑さを心配することなく、物事の「全体像」を簡単に理解するのに役立ちます。
とにかく、これらはほんの一例です。単純なダイアグラムが非常に役立つ場合が多くあります。コード自体で何かを表現できない場合にのみ、それらを行うべきであることを覚えておいてください。ソースコード自体を説明するためにUMLダイアグラムを使用していることに気付いた場合は、代わりにソースコードをより自己文書化してください。
最後に、コードに適用される一般的なルールのいくつかは図にも適用できます:繰り返しを避け、シンプルに保ち、変更を恐れないでください(UML図に何かが文書化されているからといって、できないというわけではありません)変更される)そして、それらを書くとき、誰が将来(おそらくあなたの未来自身)それらの図を読んで/維持するかを常に考えてください:)