• 締切済み

ユースケース図における依存、拡張、包含について

UMLでユースケース図を作成していますが、依存、拡張、包含が今一つピンと来ません。 簡単な例で言うと、 ユースケースA:社員情報を登録する。 ユースケースB:社員情報を修正する。 という2つのユースケースがあった場合、AとBにはいずれかの関係が成り立つのでしょうか? ユースケースBで提供されるサービスは、ユースケースAというサービスが提供されてはじめて意味のあるサービスになると思います。 社員情報を登録できなければ修正なんて発生し得ないわけですから。 依存、拡張、包含について上手く自分の中でイメージができません。 それぞれについてどう考えればいいのでしょうか?

みんなの回答

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 ユースケースAとBに関係は無いと思うよ。以下、説明の為に、「1枚のユースケース図で表される」ものを機能、「ユースケース図内で1つの○に入る」もの(本来は「ユースケース」)を処理と表記する。  確かに処理フローとしては、処理Aがなされない場合、処理Bの実行は無意味であると言える。しかし、ユースケース図の主目的は、ターゲットシステムの全処理を羅列し、それらの処理群を使用するアクターとの関連を図示するというものだ。  つまり、Bが、「前提のデータ」として社員情報が無ければいけないとしても、「社員情報修正」という処理そのものにはAは関係が無い。Bは、あくまで社員情報とやりとりする。 例えばアクターを「人事処理係」としよう。       (社員情報登録) 人事処理係<       (社員情報修正) ↑うまく表示できんかったらごめん。人事がアクターで()が処理だ。 というユースケースは成り立つが、登録と修正の間に関係は存在すべきではない(処理の疎結合)。 依存というのは、例としてはあまり良くないが、例えば、ターゲットシステムが「人事システム」として、その中に出退勤管理機能があり、タイムカード打刻処理とタイムカード修正処理があるとする。打刻は全社員が行えるが、修正は庶務課の人のみが行えるとする。すると、必要な処理は、これ以外に「アクターの課を確かめる処理(権限認証処理)」があるよね。ここで、修正処理は権限認証処理が必要だから、修正処理-<<include>>→権限認証処理となるはずだ。もちろん、そもそも社員かどうか確かめるために、打刻処理-<<include>>→権限認証処理となっても良い。 拡張は、今の例で言うと打刻処理に対して、遅刻があった場合に、打刻と同時に言い訳入力処理を行えるようにする時に、打刻処理←<<extend>>-理由入力処理となる、というように、元々の処理にちょっと足し合わせる時に使うのかな。 包含は、同じ<<include>>を使うけど、ユースケースを分割する時に使う事が多いようだ。フローチャートで言う「定義済み処理」かな。 これが私なりのユースケースの解釈だ。何か参考になれば良いが・・・・。

tetsum
質問者

お礼

ご回答ありがとうございます! "ターゲットシステムの全処理を羅列し、それらの処理群を使用するアクターとの関連を図示するというものだ。"という説明がすごくわかりやすいです。 なにかもやもやしたものが消えた気がします。 とても助かりました!!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • UMLのユースケース図における「include」と「extend」の意味について

    UMLに関する本(注)を読んでいるのですが、ユースケース図におけるincludeとextendについて疑問点がありましたので質問させてください。 本の説明では、includeとは「ベースとなるユースケースがincludeするユースケースを処理の上でサブルーチン様に必ず必要とする」ことを表し、extendとは「ベースとなるユースケースの機能拡張を意味し、extendされるユースケースはベースとなるユースケースの処理上必ずしも必要ではない」ことを表すとのこと。 例として、「レンタルビデオ店におけるビデオ貸出システム」において、「ビデオの貸出を行うユースケース(以下、ユースケースA)」は「貸出申込人が会員かどうかを確認するユースケース(以下、ユースケースB)」をincludeし、「カードでレンタル料金を支払うユースケース(以下、ユースケースC)」はユースケースAをextendしたものであるとのこと。一方、ユースケースAは「会員を新規登録するユースケース(以下、ユースケースD)」をincludeしているとのこと。 以下、疑問点です。 貸出申込人がすでに会員であった場合にはユースケースDは不要であるため、ユースケースDはユースケースAを行うにあたって「必ず必要」とは考えられないのですが、「ユースケースAはユースケースDをincludeする」というのは正しいのでしょうか。 また、貸出申込人が「現金を持ち合わせていない。カードでなら払える。」と申し出た場合にはユースケースCはユースケースA上必ず必要であるのですが、これはextendで正しいのでしょうか。(現金を持ち合わせている場合は必ず必要ではないためextendであるような気はしています。しかし、そう考えるならユースケースDもextendであるように思えるのです。) 宜しくお願い致します。 (注) ダイアグラム別 UML徹底活用 (DB Magazine SELECTION) (単行本) 井上 樹 (著)

  • ユースケースと機能の違い

    基本的な質問で失礼します。 ユースケースと機能の違いは何でしょうか。 例えばシステムが注文を受け付ける場面を想定した場合、 ユースケース方式:商品を注文する 機能分割方式:注文登録機能 「UMLによる統一ソフトウェア開発プロセス」を読むと、 「ユースケースとは"特定のアクター"にとって"価値ある明確な 結果"を出すもの」と説明されています。 表現自体があいまいですが、ニュアンスは読み取れます。 ユーザ側から見ればシステムが何をもたらすのか把握しやすい というメリットがあると思います。 が、開発者側から見た場合、従来の機能分割方法と何が異なる のかが良く分かりません。 むしろ内部的な機能や、重要な業務ロジックを漏れなく記述する ためには従来の機能分割方式の方が優れているように思えます。 実際顧客との要件定義セッションでは、画面やロジックについて 詳細な要求が出されるケースも多いと思います。 ユースケースのように「あえて」抽象化するような作業によって 記述漏れが起きるのではないかと思えます。 上記を踏まえ、改めてユースケースと機能の違いについてどなたか 教えて頂けますでしょうか。 もし違いがないとすれば、レベル感の異なる要求をユースケース にまとめることはできるのでしょうか。 (例えば重要業務ルールを別資料にしてユースケースからリファー するといった方法を取るのでしょうか)

  • ユースケースについての質問を致します。

    何故に、"UseCase( http://ja.wikipedia.org/wiki/%E3%83%A6%E3%83%BC%E3%82%B9%E3%82%B1%E3%83%BC%E3%82%B9 )"と『ユースケース図』とは峻別されるべきなのでしょうか?

  • 誤解したくないので、伺います。

    ユースケース図(http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:UML_Use_Case_diagram.svg)の読み方を教えて下さい。

  • UMLによるシステム設計について

    私はSIerの新入社員です。 システム設計について勉強しています。 特にウォータフォールモデルとUMLについてです。 今度、研修を兼ねて社内で使うツールの開発に参加することになりました。 ウォータフォールモデルに従って、要件定義から始めるのですが、 要件定義と外部設計の境界がわかりません。 要件定義書にはどこまで書くものなんでしょうか? あと、UMLの各モデルが、ウォータフォールモデルのどの工程に登場すべきなのかも今だわかっていません。 UMLのモデルについては大学で学びました。 しかし、それをウォータフォールモデルと繋げてイメージすることができません。 まず要求定義の工程ではUMLのどのモデルが出てくるのでしょうか? またユースケース文書はどの工程で書くのでしょうか? ↓私が想定しているユースケース文書です。 http://www.ibm.com/developerworks/jp/webservices/library/ws-tip-docusecase.html まとめますと、 (1)要件定義書にはどこまで書くのか(要件定義と外部設計の境) (2)ウォータフォールモデルの各工程にはどのUMLモデルが登場するのか (3)ユースケース文書はどの工程で書くのか(要件定義?外部設計?) 以上3つの質問です。 UMLはオブジェクト指向設計で用いると思うので、Javaのカテゴリで質問させていただきました。 会社によって設計書の書き方は大きく違うと思いますが、 「一般的にはこうしているはず」という話でも良いですし、 「うちの会社ではこうしている」という話でも良いですので、ぜひ教えてください。

  • 「拡張」と言う項目がない。

    http://service1.symantec.com/SUPPORT/INTER/nisjapanesekb.nsf/4aefaadc9d7b2aef8825694c005b6a08/c05439167321593d49256c75001a1f57?OpenDocument このサイトによれば「設定」を押せば「拡張」ボタンが出るみたいですが出てきません。全部の項目を確認してみましたが「拡張」ボタンはありません。 どうやったら「拡張」ボタンをクリックできるようになるのでしょうか?

  • 作れる家系図3の不具合について

    作れる家計図3について。個人情報入力の際に旧姓を間違えて登録してしまい、その後に正しいものに修正したのですが、その上にある「〇〇家」の表示が間違って登録した旧姓のままで表示が正しいものに変わりません。どのように変えられますでしょうか? ※OKWAVEより補足:「ソースネクスト株式会社の製品・サービス」についての質問です。

  • スリムケースについて

    スリムケースの購入を予定しており、 次に挙げる商品を購入しようかなと考えています。 H360A-BLACK H360C-300BT2 VT-123B/300W24PIN CS-221S/300W これら商品の電源dbがどのサイトで調べても 情報がありません。どなたかご存知な方が いらっしゃれば、教えていただけませんでしょうか。 挙げた商品以外で、静かなスリムケースがある場合、 教えて頂ければなと思います。 よろしくお願いします。

  • 包摂(subsumption)

    やや筋違いかもしれませんが,プログラミング,論理学,数学(?)の境目のような疑問です. 一階述語論理の演算に包摂(subsumption)という演算がありますが,この定義が今ひとつわかりません.ある本によると「論理式Aが論理式Bを包摂するとは,ある代入θがあってAθ⊆Bとなることだ」と書いてありました.しかし2つの論理式の包含関係というのは,どういう意味なのでしょうか?つまりAθもBも論理式であるわけですが,その間に⊆という演算が成立するということは,どいういう意味なのでしょう?A,Bをtrueにするインスタンスの集合という観点からの包含関係なのでしょうか?

  • UMLの開発現場での使われ方

    情報の勉強超初心者です。 教科書のUMLの説明が6ページに及んでいて 標準化までの歴史や それぞれの図の説明が 書いてあるのですが 下記質問です。 1.UMLは毎日の開発現場で必ず使われるものでしょうか。 一般的でしょうか。 2.図の種類がたくさんありますが  どの図とどの図が一番使われているでしょうか。もしくは 開発者にとってとくにどの図が大変便利でしょうか。 3.図を書面におとすときには それぞれの図に たとえば ユースケース図だとか オブジェクト図というように 図の種類を表記するのでしょうか。 4.開発者の人は最初は こうした図の書き方を何か月くらい勉強 するのでしょうか。もしくは実務で自然に覚えるのでしょうか。 よろしくお願いします。