要求/ユースケース
2022年7⽉21⽇
浅海智晴
クラウドアプリケーションのための
オブジェクト指向分析設計講座
第13回
作業分野
第1部 基本編の構成
• 概論 [第1回]
• 開発プロセス [第2回]
• 基本モデル [第3回]
• 静的モデル(1) [第4回]
• 静的モデル(2) [第5回]
• 動的モデル [第6回]
• 協調モデル [第7回]
• 関数モデル [第8回]
• 物理モデル [第9回]
• 作業分野 [第10回]
• ビジネス・モデリング [第11回]
• 要求 [第12回]
• 要求/ユースケース [第13回]
• 分析 [第14回]
• 作業分野
• 設計 [第15回]
• 実装 [第16回]
• テスト [第17回]
• アプリケーション・アーキテクチャ [第18回]
• ドメイン・モデル [第19回]
• アプリケーション・モデル [第20回]
• プレゼンテーション・モデル [第21回]
• ケーススタディ[第22回]
• 要求モデル [第23回]
• 分析モデル [第24回]
• 設計モデル [第25回]
• 実装 [第26回]
• テスト [第27回]
SimpleModeling2021
• オブジェクト指向分析設計での共通範囲
• UML/UP
• 本講座で使⽤するUMLプロファイル
• プロファイル:SimpleModeling2021 (SM2021)
• オブジェクト指向分析設計の基本からの拡張部を明確化
• アジャイル開発
• Communication
• Embrace Change
• Travel Light
• Scaling
• クラウド・アプリケーション
• モデル駆動開発
SM2021
Travel Light
Embrace Change
Cloud
Model-Driven
Scaling
原理 (Principle)
• Agail Software Development [ASD]
• SRP (The Single Responsibility Principle)
• OCP (The Open-Close Principle)
• LSP (The Liskov Substitution Principle)
• …
• GRASP (General Responsibility Assignment Software Patterns or Principals)
• Low Coupling
• High Cohesion
• …
• Writing Effective Use Cases [WEUC]
• Scope
• …
パターン (Pattern)
• Design Patterns [DP]
• Observer, Strategy, …
• Domain Driven Design [DDD]
• Ubiquitous Language, Intention-
Revealing Interfaces, …
• Analysis Patterns [AP]
• Party, Quantity, …
• Pattern-Oriented Software
Architecture [POSA]
• Layers, Pipes and Filters, …
• Patterns of Enterprise
Application Architecture [PEAA]
• Unit of Work, Data Transfer Object,
…
• Enterprise Integration Patterns
[EIP]
• Message Bus, Aggregator, …
• Patterns for Effective Use
Cases [PEUC]
• CompleteSingleGoal,
VerbPhraseName, …
• AntiPatterns [AnP]
• Stovepipe System, Analysis
Paralysis, …
内容
• ユースケースの位置づけ
• ユースケース駆動開発
• ユースケース・モデル
• ユースケースの実⽤技術
• フィーチャー・モデル
• ユースケース作成⼿順
ユースケースの位置づけ
第10回 作業分野
作業分野とモデルの関係 第10回 作業分野
ソフトウェア要求仕様の構造
SM2021
SM2021
要求モデルとユースケース
物語系モデル
• ユースケース
• XP(アジャイル開発)
• ユーザー・ストーリー
• UX (User Experience)
• ペルソナ
• シナリオ
関連技術
• UCD (User Centered Design)
• 魅⼒的で効率的なUXを作成する⽅法は、ユーザー中⼼設計と呼ばれる。
ユーザー中⼼設計の概念は⾮常に単純である。製品を開発する際には、
ユーザーをあらゆる段階で考慮に⼊れる。
• The Elements of User Experience
• UX (User Experience)
• エンドユーザーと会社、そのサービス、およびその製品とのやり取り
(interaction)のすべての側⾯を包含したもの。
• Nielsen Norman Group
• https://www.nngroup.com/articles/definition-user-experience/
物語系モデルの関係
ユースケース駆動開発
ユースケース駆動開発
開発計画
• ユースケースを開発の単位として開発を進める。
• ユースケースの優先度=利⽤者にとって重要なゴールの優先度
• ユースケース単位で⾒積もり
• FP(Function Point)法
• 外部⼊⼒、外部出⼒、外部照合、内部論理ファイル、外部インタフェース、画⾯
などの要因ごとに重み付けをつけた総和で⼯数/期間を⾒積もる
• UP(Use Case Point)法
• アクター、ユースケースなどの要因ごとに重み付けをつけた総和で⼯数/期間を
⾒積もる
ユースケース→コラボレーション→インタラクション
第14回 分析
第7回 協調モデル
UI(User Interface)
• ユースケースはアクターとシステム間のインタラクションを記
述するものなので、インタラクションがUIの候補になる
• ユースケースがモデル化するユーザーのゴール(⽬標)やインタ
ラクションで受け渡されるデータがUI設計の⼊⼒になる
ユースケースとUIプロトタイプ
• 要求ワークフローでユースケースの代わりにUIプロトタイプ
(モックアップ)を使⽤するアプローチもある
• UIが中⼼の開発では有効だが、サービス開発には以下の問題が
ある
• ユースケースより作成⼯数がかかる
• UIから直接⾒えてこない処理が開発計画/⾒積りから抜けてしまう
• バッチ、イベント駆動処理、管理画⾯など
• UIができたことで、システムがすぐに完成できるように顧客に錯覚を
与えてしまう
• ユースケースのシナリオをUIモックアップで作成するアプロー
チは有効
マニュアル
• ユースケースは利⽤者がゴールを達成するための、システムと
の対話のシーケンスを記述する
• 利⽤者のゴールと、ゴールに⾄るまでの対話のシーケンスを、
利⽤者向けの⽇本語で記述するとユーザー・マニュアルとなる
テスト
• ユースケースのシナリオを、システムで実現できることをテス
トする
• ユースケースのシナリオをAPIの呼び出し列でテスト・ケース化
• UIを除いたサービス処理部で⾃動テスト化できると望ましい
• レグレッション・テスト、受け⼊れテストなど
ユースケース・モデル
ユースケース (Use Case)
• アクターに観察可能な価値の結
果をもたらす、システムが実⾏
する⼀連のアクション(変異
(variant) を含む)の記述。
• 要求モデルの中核
• 振る舞いの契約
• アクターにとって価値のある物
語を定義
• 脚本からシナリオ分析でユース
ケースを実現するアプリケー
ション・モデルを抽出する
第7回 協調モデル
ユースケース図 (Use Case Diagram)
• ユースケース
• 要求をアクターが⽬標を達成す
る物語として記述
• 脚本が重要
• アクター
• システム外のオブジェクト
• 物語の配役
• サブジェクト
• システム内の機能
• 物語の舞台
第7回 協調モデル
ユースケース記述
• ユースケースの構造、挙動をテキ
スト形式で記述
• UMLで標準のユースケース記述仕
様は定義されていない
• 本講座で使⽤するユースケース記
述
• 基本仕様、詳細仕様、脚本で構成
• 最⼩構成はユースケース名&あらす
じ
• 後続のモデリングに有益な情報を必
要に応じて定義していく
• 分析中毒(Analysis Paralysis)に注意
• ユースケース図はユースケース記
述集の⽬次
第7回 協調モデル
第7回 協調モデル
ユースケース間の関係
第7回 協調モデル
ユースケース/汎化
第7回 協調モデル
ユースケース/include
第7回 協調モデル
ユースケース/extend
第7回 協調モデル
ユースケースの実⽤技術
『Writing Effective Use Cases』
『Patterns for Effective Use Cases』など
Writing Effective Use Cases
• スコープ
• Enterprise, System, SubSystem
• ゴールレベル
• Summary, User Goal, Subfunction
• アクター種別
• 事前条件
• トリガー
• 保証
アクターの種類
• プライマリ・アクター
• ユースケースの主役になるアクター
• サポーティング・アクター
• プライマリ・アクターの⽬的を達成する⼿助けをするアクター
• ステークホルダー
• ユースケースになんらかの利害関係を持つアクター
• SuD (System under Design)
• 開発対象のシステム
• 内部アクター
• システム内で動作するアクター
• ホワイトボックス・ユースケースで使⽤
Patterns for Effective Use Cases [PEUC]
開発パターン
• 開発チーム
• 開発プロセス
• 編集
構造パターン
• ユースケース関係
• ユースケース・セット
• ユースケース
• シナリオ
• ステップ
PEUCの代表的パターン
• CompleteSingleGoal
• ユースケースは単⼀の完結したゴールを持つ
• VerbPhraseName
• ユースケースは動詞のフレーズの名前になる
• ScenarioPlusFragments
• ユースケースはメインシナリオにフラグメントを追加した構造にする
• DetectableConditions
• シナリオには検出可能な条件を記述する
• ActorIntentAccomplished
• シナリオ・ステップはアクターの意図した達成が得られるようにする
• TechnologyNeutral
• シナリオ・ステップはテクノロジー中⽴にする
フィーチャー・モデル
SM2021
フィーチャー
• クライアントに価値がある関数の⼩さな断⽚
• 2週間以内に実装できる粒度
• <action> <result> <object>の形式で記述
• 例: Calculate the total of a sale
• ユースケースの以下の問題に対応するため補完的に⽤いる
• ユースケースの作成⼯数は⽐較的⼤きいので、単純なユースケースは
ユースケースとしてモデル化せず、フィーチャーとしてモデル化
• 例:エンティティの管理画⾯
ユースケース作成⼿順
【⼊⼒】ビジネス・モデリングの成果物
• ビジョン宣⾔
• コンテキスト・モデル
• ビジネス・ユースケース図
• ビジネス・ユースケース記述
【⾷堂予約システム】ビジネス・ユースケース図
第11回 ビジネス・モデリング
【⾷堂予約システム】ビジネス・ユースケース記述
• ユースケース名: ⼊店予約して⼊店する
• プライマリ・アクター: 利⽤者
• あらすじ: ランチでお店が満杯だったので、予約システムに登録をし
て、空きができたことをSMSで取得後に、再度お店に⾏き⼊店した。
• シナリオ:
1. ランチでお店に⾏ったところ満杯だった
2. 予約システムに会員アプリで登録してその場を離れた
3. SMSで通知があったで、会員アプリを⾒たところ⼊店の順番が近づいてい
ることが分かった
4. お店についた頃にSMSで再度通知があって、⼊店が可能になっていること
が分かった
5. お店についてホール係にアプリ画⾯を⾒せると⼊店できた
第11回 ビジネス・モデリング
【⼊⼒】要求の成果物
• ビジョン宣⾔
• コンテキスト・モデル
• 要求
• ⾮機能要求
• エンティティ・モデル
• ⽤語集
• 状態機械モデル
• ルール・モデル
• 規則集
【⾷堂予約システム】コンテキスト・モデル 第12回 要求
【⾷堂予約システム】機能要求
ID 優先度 サブジェクト 機能
1 Must ⾷堂予約システム ⼊場待ちの予約ができる
2 Should ⾷堂予約システム ⼀定の時間前にリマインダのメッセージを送付
3 Could ⾷堂予約システム 送付時間を管理画⾯で設定可能
4 Could ⾷堂予約システム リマインダメッセージを管理画⾯で設定可能
第12回 要求
【⾷堂予約システム】⽤語集
⽤語 クラス ステレオ
タイプ
意味
予約システム 開発対象のシステム。(SuD: System under
Development)
利⽤者 User actor ⾷堂に⾷事に来た顧客
ホール係 Staff actor ⾷堂のホール係
⽀配⼈ ⾷堂の管理者
予約 Reservation business
event
予約の総称
⼊店予約 EnterRservation business
event
⼊店の予約。昼⾷時の待ち⾏列のエントリーに使⽤
する。
テーブル予約 TableReservation business
event
テーブルの予約。コース料理の予約の場合に使⽤で
きる。
テーブル Table resource テーブル。予約対象になる。
第12回 要求
【⾷堂予約システム】ビジネス・ルール(兼 規則集)
• 案内通知⼿段はメール、SMS、PUSHから選べる
• ⼊店申請の2組前になった時に案内通知を⾏う
• 案内通知の⽂⾯を管理コンソールで編集できる
• ⼊店可能になったら案内通知を⾏う
• 案内通知の⽂⾯を管理コンソールで編集できる
• ⼊店可能後10分後に案内通知を⾏う
• 案内通知の⽂⾯を管理コンソールで編集できる
• ⼊店申請は⼊店受付してから30分でキャンセルになる
• キャンセル時に案内通知を⾏う
• 案内通知の⽂⾯を管理コンソールで編集できる
第12回 要求
【⾷堂予約システム】ユースケース図
【⾷堂予約システム】ユースケース図/ホール係、運営
フィーチャー
ID 優先度 名前
F0001 B リマインダメッセージの送信時間ルールを変更する
まとめ
• ユースケースの位置づけ
• ユースケース駆動開発
• ユースケース図はユースケース記述の集まりの⽬次
• ユースケース記述にアクターが体験する物語を記述
• フィーチャーでユースケースの補完するとよい
参考⽂献
• The Unified Modeling Language Reference
Manual, 2nd (Rumbaugh他, 2004)
• The Unified Modeling Language User Guide,
2nd (Booch他, 2004)
• The Unified Software Development Process
(Jacobson他, 1999)
• The Object Constraint Language, 2nd (Warmer
他, 2003)
• UML 2 and the Unified Process: Practical
Object-Oriented Analysis and Design (Arlow
他, 2005)
• OMG Unified Modeling Language Version 2.5
(OMG, 2015)
• 上流⼯程UMLモデリング (浅海, 2008)
• Writing Effective Use Cases (Cockburn,
2000)
• Patterns for Effective Use Cases
(Adolph他, 2003)
• Java Modeling in Color With Uml:
Enterprise Components and Process
(Coad他, 1999)
• Usability Engineering (Nielsen, 1993)
• The User Is Always Right: A Practival
Guide to Creating and Using Personas
for the Web (Mulder他, 2007)
• The Elements of User Experience, 2nd
(Garrett, 2011)

要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】