質問: * UMLの勉強を始めたばかりのペーペーで、調査して使い分けが不明であったため質問いたしました。 * 一般的に、どのようなUMLをよく使うのでしょうか? * 「フローチャートは設計書に書かない」みたいな記事を見ましたが、それが一般的なのでしょうか? 数行の簡単な処理を記載したい場合は、どのような図を使用するのでしょうか? 以上、よろしくお願いいたします。
回答: * まとめ まずUML の様々な図に関しての一般論としては、「この工程でよく使う」ということはあっても、 「この工程で使わなければならない」という絶対的な決まりはありません。 要件定義工程のシーケンス図、詳細設計工程のユースケース図もありえなくはないです(適切かどうは別として)。 開発現場ごと、開発案件ごと、ケースバイケースで、適切な組み合わせを「選んで」使うものです。 どう選ぶかは開発に必要な情報が十分記述できるか(そしてその記述のコストが合理的か)といったことで 考えます。 1種類の図ですべてを済ますこともありえなくはないと思いますし、 様々な図を使わなければならない場合もあると思います。 アクティビティ図、ユースケース図(含むユースケース記述)、コミュニケーション図に関しては、 同じ情報をそれぞれで書くことが可能です(それが必要か、適切かは別として) 同じ情報を違う観点で示す図です。 どの図をどの工程でどれだけ使うか、どう使うかはやはりケースバイケースです。 学習の最初の段階では、どの工程でどの図を使うべきかを判断するのはとても難しいです。 やはり、どなたか経験者の方に指導を仰ぐか、なんらかの参考書を見て、 そのやり方を踏襲するのが無難だと思います。 ただ、UML自体には、どの工程どの用途にはこの図を「使わなければいけない」とか「使ってはいけない」という決まりはない、 ということだけは、頭の片隅に置いておいて損はないと思います。 * 個々の質問についての簡単な説明 > > フローチャートとの違い > > > アクティビティ図は多くの点でフローチャートと似ています。 根本的な違いは、やはりUMLとして標準化されているということです。 他の図で使うモデルと連携した定義、記述ができます。 > > アクティビティ図では、フローチャートのように、プログラムのフローも書こうと思えば書ける。(調べていると、プログラムはアクティビティ図では書かなそうですが) > > →詳細設計で使用するUMLではない? > > > UML全般に関して言えることですが、適切であれば詳細設計に使っても問題ないと思います。 > > 業務フローを記載? > > 要件定義フェーズで使用? > > > これもUML全般に関してい言えることですが、適切であれば要件定義に使っても業務フロー記載に使っても問題ないと思います。 > > →ユースケース図もあるが、用途の違いは? > > > ユースケースはユースケースと他の要素(アクターや他のユースケース)との関係を示すものです。 個々のユースケースの具体的な手順、工程を示すものがユースケース記述ですが、 このユースケース記述と同じことをアクティビティ図でも記述できます。 (ただし図なので長い文章などを見やすく書くのは難しくなります。) ユースケース記述では条件ごとに複数のシナリオを記述しますが、 アクティビティ図は条件分岐が扱えるので複数のシナリオを一つの図で表現できます。 ユースケース図とアクティビティ図の関係としては、典型的には以下の3つの場合が考えられると思います。 1. 詳細なユースケース記述を最初からテキストで書く場合(ユースケースに関連してはアクティビティ図は使わない) 2. ユースケース記述をアクティビティ図で済ます場合(簡単なシステムに限られると思いますが・・・) 3. いったんアクティビティ図で大まかなフローを書き、条件ごとにユースケース記述のシナリオに書き下す場合 > > ユーザアクションとシステムの大まかな動きを記載? > > 基本設計フェーズで使用? > > > これもUML全般に関して言えることですが、適切であれば業務フロー記載に使っても問題ないと思います。 > > →コミュニケーション図もあるが、用途の違いは? > > > コミュニケーション図は個々のシナリオについてクラスやオブジェクトなどの要素がどう相互作用するかを示すものです。 アクティビティ図は複数のシナリオとクラスやオブジェクトなどの関係を同時に記述できますが、 オブジェクト間の関係というのは見えづらくなります。 アクティビティ図と、そのアクティビティ図が含むすべてのシナリオに関してのコミュニケーション図の集合は、 含んでいる情報はほぼ同じです。 同じ情報を違う観点で図にしています。