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) (単行本)
井上 樹 (著)
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
その本は持っていないため、読み方の問題なのか、本の記述の問題かはわかりませんが、
「必ず必要か」というのは、おそらく「定義の依存関係」についての説明のつもりではないでしょうか。
use caseの定義が別のuse caseに依存している=「定義上で必要」であることと、「実行時に動く」ことは違うかと。
仕様上、<<inclute>>は、base use case(含む側)がincluded use case(含まれる側)に依存していて、
特定の場所で(部品として)included use caseの処理を含むものという定義です。
(主に共通利用を目的としているため、実行が無条件でも条件付でも無関係です)
一方、<<extend>>の定義では、base use caseは、特定のextension point(拡張点)により
extension use caseが挿入されるとなっていて、extension use caseに依存せず、base use caseが独立しています。
※参照:"UML 2.0 Infrastructure Specification"/"UML 2.0 Superstructure Specification" (OMGの仕様書)
つまり、base use caseがincluded use caseを<<include>>した場合、
base use caseはincluded use caseの処理(結果)に依存します。
逆に、extension use caseがbase use caseを<<extend>>する場合、
extension use caseが、base use case(の拡張点)に依存します。
言い換えると、base use caseは、<<include>>においては依存する側ですが、
<<extend>>においては依存される側で、これが根本の違いです。
しかし、規定にあるのはここまでで、あらわすところは「定義の依存性」であり、
「実際に呼ばれるか否か」という問題はUMLの表記から外れた固有の用法だと思います。
で、この例に立ち返ると、私自身は本を持っていないため、
筆者の考えるシステム自体については回答できませんが
(設計上の選択肢なので正解はないと思います)
一般論で、<<extend>は「追加フローへの分岐」などに使うとされます。
この観点で見れば、おそらく現金支払いがAとすると、
カード支払いがDというのは、教科書的な代替フローの例かと思います。
# 現金の持ち合わせ云々は、特に規定がなければここでは無関係です。
そして、<<include>>は「関数呼び出し」と表されることがあります。
もしも、AがDを<<include>>する場合、AがDに依存します。
逆にAがDに<<extend>>されるとすると、DがAに依存します。
そのシステムにおいて、A(貸し出し)とD(新規会員登録)の依存関係はどうなっていますか。
繰り返しになりますが、extendでもincludeでも設計次第という関係はありえます。
しかし、依存の方向が逆になるため両立はしません。
システムではどちらか相応しい方を決めて、それをUML等を用いて規定します。
依存の方向性から捕らえてみるとどうでしょうか。
# 私見ですが、選択基準として、<<include>>は閉じていて、<<extend>>は開いていると思ってます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
法人事業概況書の書き方について
-
預金通帳の「AD」「CD」の意味は?
-
ファームバンキング(FB)の勘定...
-
現金を取り扱ってる経理の方へ
-
口座開設費用の科目は?
-
会費の返金の際の仕訳
-
勘定科目を教えてください!
-
建物を新築する時の仮住まい代金
-
ゴルフ大会を開催して徴収した...
-
鉄道会社の流動比率が低い理由は?
-
残余財産分配時の仕訳について
-
振込手数料の差額は「雑益」で...
-
UMLのユースケース図における「...
-
仕訳を教えてください
-
レジ 入金と出金が合わない場合
-
仕訳:銀行口座を解約した場合
-
記帳漏れしていた時に処理につ...
-
弥生会計での債務免除益入力に...
-
下取りしたときの処理
-
振込の仕訳、この方法で正しい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
預金通帳の「AD」「CD」の意味は?
-
会費の返金の際の仕訳
-
鉄道会社の流動比率が低い理由は?
-
ゴルフ大会を開催して徴収した...
-
残余財産分配時の仕訳について
-
口座開設費用の科目は?
-
ファームバンキング(FB)の勘定...
-
現金を切手でもらった時の処理...
-
うちの会社には指定の作業着が...
-
立て替えた費用の現金出納帳の...
-
法人事業概況書の書き方について
-
生活費が50000円足らない...
-
人工代の仕訳について
-
仕訳を教えてください
-
振込手数料の差額は「雑益」で...
-
出金伝票の書き方について(か...
-
個人事業者同士が共同で借りた...
-
システム使用料の勘定科目
-
仕訳:銀行口座を解約した場合
-
電気料金の戻りか収益か
おすすめ情報