web-dev-qa-db-ja.com

UMLクラス図:メソッドの機能を説明するには?

最近、大学でUMLクラス図について学び、その知識を自分の作業プロジェクトに適用し始めました。

ただし、クラスのメソッドが提供する機能をどのようにまたはどこで説明することになっているのか、まだわかりません。

コードでは、メソッドの上にdocblockを置くだけで、そのメソッドの目的を説明します。その情報をUML図のどこに配置すればよいですか?

いくつかのオプションが考えられます

  • クラスの注釈または別のドキュメント内のオブジェクト制約言語。しかし、私はこのように機能全体を表現できるとは思いません
  • Docblockに入力するのと同じ言葉による説明が含まれているクラスに関するメモ。ただし、この方法では、ダイアグラムに多くのメモが含まれると思います
  • シーケンス図やコミュニケーション図などの付随する図ですが、かなり冗長に見えます
  • ユースケース図/説明を使用します。 docblockのような1つの文でメソッドの目的を説明するのに十分である場合も、かなり冗長に見えます。

だから私は疑問に思っています:docblockの説明をUMLに「翻訳」するにはどうすればよいですか?

3
Subsurf

ただし、クラスのメソッドが提供する機能をどのようにまたはどこで説明することになっているのか、まだわかりません。

これは正当な懸念事項です。私はあなたのUMLダイアグラムを見て、メソッドが何をするのかをかなりよく理解できるはずです。

コードでは、メソッドの上にdocblockを置くだけで、そのメソッドの目的を説明します。その情報をUML図のどこに配置すればよいですか?

さてここにあなたの問題があります。あなたはこれについてすべて間違っています。

  • クラスの注釈または別のドキュメント内のオブジェクト制約言語。しかし、私はこのように機能全体を表現できるとは思いません

番号。

  • Docblockに入力するのと同じ言葉による説明が含まれているクラスに関するメモ。ただし、この方法では、ダイアグラムに多くのメモが含まれると思います

番号。

  • シーケンス図やコミュニケーション図などの付随する図ですが、かなり冗長に見えます

番号。

  • ユースケース図/説明を使用します。 docblockのような1つの文でメソッドの目的を説明するのに十分である場合も、かなり冗長に見えます。

番号。

だから私は疑問に思っています:docblockの説明をUMLに「翻訳」するにはどうすればよいですか?

あなたはしません。

UMLは、提供するインターフェースの観点からデザインを見るように強制するという素晴らしい仕事をします。あなたはあなたのインターフェースを見ていて、それが混乱していることに気づいているので、それを説明したいと思います。番号。

UMLクラス図:メソッドの機能を説明するには?

メソッドに適切な名前を付けます。

それで十分でない場合は、再設計する必要があります。 メソッドの内容を理解するためにメソッドの内部を見るのをやめる 。私が中を見て、その機能に驚いた場合、ドキュメントブロックが修正されないという問題が発生しています。せいぜいdocブロックは、内部を調べる前に、疑わしいものを確認する必要があります。

中を見るときに学ぶべき唯一のことは、それがどのようにそれを行うかです。とにかくその情報はあなたのUMLデザインには属していません。これは実装の詳細です。

5
candied_orange

クラス図では、通常、特定のメソッドの機能を示しません。それはクラス図の目的ではありません。メモでオブジェクト制約言語または疑似コードを使用できることは正しいですが、これは頻繁に行われるとは思いません。

MLを使用しているモード を考えます。 UMLを blueprint として使用している場合は、意図された動作を他のユーザーに明確に指定できるように、さまざまな図の種類の冗長性が必要になります。シーケンス図、アクティビティ図、コミュニケーション図はすべて、1つ以上のメソッドを介したフローを表すために使用できます。しかし、UMLを sketch または notes として使用している場合、メソッドシグネチャ(名前、入力パラメーター、と戻り値の型)で目的を理解できます。

7
Thomas Owens

ただし、クラスのメソッドが提供する機能をどのようにまたはどこで説明することになっているのか、まだわかりません。

コードでは、メソッドの上にdocblockを置くだけで、そのメソッドの目的を説明します。その情報をUML図のどこに配置すればよいですか?

適切な名前を使用する

UMLはvisualであるモデリング言語であり、一般にソースコードよりも優れています。ただし、 適切な命名戦略 は、表現(UMLまたはソースコード)に関係なく、クラスメソッドに等しく適用されます。適切な名前は、メソッドの「内容」を示します。通常、この名前はクラスの名前によく合います。 strong(high)cohesion の原則です。

適切な名前を使用すれば、説明はそれほど必要ありません。ソースコードを使用して、コードや日付などを変更した作成者などにコメントすることをお勧めします。

ソースの場合と同じように、UMLモデル(たとえば、新しいクラス図になるシーケンス図)にリファクタリングを適用できます。メソッドおよび 抽出メソッド の名前を変更することは、ソリューションをより理解しやすく(そしてさらに再利用可能に)するための方法です。繰り返しになりますが、これは凝集度の高い線に沿っています。ただし、リファクタリングすると、(テキストで)作成したdocblockは更新されないことに注意してください。ソリューションがdocblockと矛盾するのは簡単です。

だから私は疑問に思っています:docblockの説明をUMLに「翻訳」するにはどうすればよいですか?

Docblockの説明は基本的に コメント です。コメントがコード(またはUMLを使用している場合はモデル)と一致しなくなるのは非常に簡単であるため、コメントを書く最善の方法は、ソフトウェアエンジニアリングにおいて物議を醸すトピックです。

メソッドのシーケンス図は、メソッドの「方法」を示し、視覚的で実際のソリューションと整合性があるため、どのdocblockよりも優れています。一部のUMLツールでは、ソースコードから(またはその逆に)シーケンス図を生成できるため、メソッドの動作をすぐに確認できます。ただし、この世代の品質は、ツールとメソッドの複雑さの影響を受けます。

あなたのメソッドが本当に明白でない何かをしているなら、ちょうどラインコメントがプログラミング言語で使われているのと同じように、UMLノートはそれらを示すための良い方法でしょう。これは、Craig LarmanのApplying UML and patterns本の例です。

enter image description here

0
Fuhrmanator