より分かりやすい ユースケースモデルを作る ユースケースモデル第3回(最終回) より分かりやすい ユースケースモデルを作る 慶應義塾大学 大岩研究室 WEBアプリケーション研究会 第4回サブゼミ
GOAL 複雑なイベントフローが与えられた時、 アクティビティ図を使って明らかにすることができるようになる
Objective イベントフローが与えられた時、アクティビティ図を書けるようになる アクティビティに適切な名前をつけられるようになる アクティビティ図で分岐を使えるようになる アクティビティ図で適切なときにレーンを使えるようになる アクティビティ図で並行に仕事をすることを書けるようになる ユースケースとアクティビティ図の関係を説明できるようになる ユースケースとシナリオの関係を説明できる ワークフロー、イベントフロー、メインフロー、サブフローの違いを説明できる ・「図を書けるようになる」ということは、概念を理解するのは含まれます。
先週の復習 自動販売機で「購買者」アクタが「商品を買う」ユースケース イベントフロー ①利用者は、お金を投入する ②利用者は、買うジュースを確定する ③利用者は、商品を受け取る ④利用者は、おつりを受け取る
アクティビティー図 開始状態 アクティビティ (アクション) 遷移 終了状態 対応している ①利用者は、お金を投入する 商品を受け取る 買う商品を確定する おつりを受け取る ①利用者は、お金を投入する アクティビティ (アクション) ②利用者は、買うジュースを確定する ③利用者は、商品を受け取る 「はじめに」 じゃあ、これをアクティビティ図で書いてみましょう。 単に文章を図にしただけで、あまり嬉しくないですね。 これなら文章で書いても十分に分かります。 「質問」 「ヒント」 「期待しない回答」 「期待される回答」 遷移 ④利用者は、おつりを受け取る 終了状態
イベントフローで明らかでないところ これを 買いたい商品の金額になるまで うまく書く方法は ないものか? ①利用者は、お金を投入する ②利用者は、買うジュースを確定する ③利用者は、商品を受け取る ④利用者は、おつりを受け取る 「繰り返し」や「分岐」しているものを書きたくなりますよね!
分岐とガード条件 分岐点 ガード条件 「解説」 ・開始状態と終了状態 …先週やりましたね。ユースケースに必要なものって何ですか? …先週やりましたね。ユースケースに必要なものって何ですか? …目覚し時計で「アラームを鳴らす」 …どこから始まり、どこで終わるかを明らかにする。 …他のアクティビティ図との境界を明らかにする。 アクティビティ図はフローチャートに似ていて、なじみやすいので、だいたい見て分かると思います。 ・アクティビティ …Q:角が丸い四角は、これ何だと思います? …A:人間の仕事やシステムの処理 ・遷移 …Q:この矢印があると何が分かる? …A:アクティビティを実行する順番が分かる ・分岐点 …Q:この菱形があると何が分かります? …A:条件によって処理の内容を変えることが分かる ・ガード条件 …Q:この各カッコがあると何が分かります? …A:この条件を満たす場合に、遷移する 初めて見ても、どの要素も何のために書くか分かりますね。 アクティビティ図の基本はこれだけです。今日の授業の80%は終了しました。 ここでのポイントは、ワークフローがアクティビティ図で分かりやすく書ける、ということです。
ここまでのまとめ アクティビティ図とは ユースケース文書のイベントフローを分かりやすく書くために使うことができる 仕事の流れを記述するもの フローチャートに似ている 状態遷移図とは見た目は似てるけど中身は違う ユースケース文書のイベントフローを分かりやすく書くために使うことができる 特に、分岐や、繰り返しを明らかにするのに役に立つ
アクティビティ図の効果的な使い方 アクティビティ図は補助的に使う 典型的な使用箇所 ビジネスの業務フロー ユースケースのイベントフロー システムのアルゴリズム
用語を整理する ちがいを説明 できますか? ワークフロー イベントフロー メインフロー サブフロー ユースケース シナリオ
紛らわしいフローを整理しよう 一般的に使われる用語 ユースケースで使われる用語 ワークフロー イベントフロー メインフロー サブフロー 何かの仕事の手順を表現したもの ユースケースで使われる用語 イベントフロー サービスを実現するためにアクタとシステムがするやり取りを手順として表現したもの メインフロー イベントフローの中で、一般的なフロー。特に重要なフロー。 サブフロー イベントフローの中で、一般的ではないフロー。例外的なフロー
フロー図解 ワークフロー メインフロー サブフロー イベントフロー(ユースケース)
ユースケースとシナリオ 具体化 抽象化 ユースケース 商品を買う シナリオ Aさんは、のどが渇いたので、近くの ①利用者は、お金を投入する ②利用者は、買うジュースを確定する ③利用者は、商品を受け取る ④利用者は、おつりを受け取る 商品を買う 抽象化 シナリオ Aさんは、のどが渇いたので、近くの コンビニの前にある自動販売機に コーラを買いに出かけました。… Bさんは、夏のある日、テニスを 2時間して、のどが渇いたので、 受付の横にある自動販売機に ポカリスエットを買いに出かけました。…
アクタの仕事とシステムの仕事 先ほどの例 システムを入れた例 ①利用者は、お金を投入する ②利用者は、買う商品を確定する ③利用者は、商品を受け取る ④利用者は、おつりを受け取る システムを入れた例 ①利用者は、お金を投入する ②システムは、投入金額を表示する ③利用者は、買う商品を確定する ④システムは、商品を出す ⑤利用者は、商品を受け取る ⑥システムは、おつりを出す。 ⑦利用者は、おつりを受け取る
アクタの仕事とシステムの仕事 アクタの仕事と システムの仕事が 明らかでない。 主語は誰ですか? お金入れると、自動販売機はどうしますか?
複数の人が仕事をする 自動販売機システムの「商品を買う」イベントフロー レーン レーンを使うと、 複数のアクタの仕事を明らかにできる 利用者 システム レーンを使うと、 複数のアクタの仕事を明らかにできる (この場合、システム全体は アクタとして捉えることができる) 「説明」 ・レーンとは、アクティビティを責任という観点でグループ化したもの ・責任ということは、アクティビティは2つのレーンにまたがってはいけない。誰の責任か分かりにくいから。 ・外部システムもレーンになりうる 「まとめ」 ・なんでもかんでもレーンをつけろとは言ってない ・ビジネスの業務フローを記述するのに使うことが多い …アクティビティ図は誰でもなじみやすいので、UMLの知識のないクライアントとも話しやすい
複数の人が仕事をする、まとめ 複数のアクタが仕事をするときに、誰の仕事かを明らかにするために、「レーン」を使う。 レーンはいくつでも書ける。 今は、アクタごとにレーンにしています。 将来は、オブジェクトごとにレーンにしたりします。
並列に仕事をする 注文を配送システムに 送っている間に、 クレジット番号を入力 できればいいのに!
並列に仕事をする フォーク ジョイン 同期バー
並列に仕事をする、まとめ アクティビティー図において、基本的には、手順を明らかにするために使われるが、同時に行いたい時には、「同期バー」を利用して、並列に行われることを明らかにする。 2人が一緒に同時に仕事をする場合。 2人が同時に仕事をし始めると、同期を取る必要がある。(先に終わったほうは、後に終わる人を待つ。)→必ずジョインすること!