SlideShare a Scribd company logo
要求/シナリオ
2022年8⽉18⽇
浅海智晴
クラウドアプリケーションのための
オブジェクト指向分析設計講座
第14回
作業分野
第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回]
• テスト [第28回]
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, …
内容
• ユースケースの位置づけ
• オブジェクト指向とシナリオ
• シナリオの考え⽅
• シナリオ・ステップ
• シナリオの構造
ユースケースの位置づけ
第13回 要求/ユースケース
作業分野とモデルの関係 第10回 作業分野
SM2021
要求モデルとユースケース 第13回 要求/ユースケース
オブジェクト指向とシナリオ
ユースケース仕様とシナリオの関係
• ユースケースは協調モデル
• 利⽤者とシステム間のインタラクションをモデル化
• ユースケース仕様で定義するもの
• ゴール
• CompleteSingleGoal [PEUC]
• システムの状態遷移(事前条件→事後条件)
• 失敗条件
• (理想的には)状態遷移は発⽣しない
• シナリオはこれらの仕様を叶える物語の脚本
• シナリオ分析
• 分析でシナリオ分析を⾏うので、シナリオ分析が可能な精度のシナリオに
なっている必要がある
シナリオの考え⽅
SVOで考える
• モノ・コト分析
• モノが存在している
• コトが発⽣することでモノの状態が遷移していく
• シナリオ分析
• シナリオをSVOで捉えていくことで、オブジェクト・モデルとの接続
が容易になる
SVOで考える/関連
SVOで考える/関連クラス
シナリオからクラス図へ
シナリオ・ステップ
シナリオ・ステップ
• シナリオの各⾏
• 本講座では以下のマーキングを⾏う
• ⽤語はボールド体
• 規則は
• ユースケースの参照は下線
• SVOの形式を意識する
• PreciseAndReadable [PEUC]
• システークホルダーが読みやすいように簡潔に、シナリオ分析ができるように精密に
• ActorIntentAcommplished [PEUC]
• シナリオ・ステップはアクターの意図した達成が得られるようにする
• ユースケースは協調モデル
• シーケンス図でモデル化することも可能
• ステークホルダーとの共有、モデル記述の⼿間を避けるの要件から⽇本語で記述する
シナリオ→⽤語集→クラス図
シナリオ→規則集→クラス図
シナリオとシーケンス図
ActorIntentAcommplished [PEUC]
(シナリオ・ステップはアクターの意図した達成が得
られるようにする)
シナリオの構造
シナリオの構造
• オブジェクト・モデルとの関係
• ⽤語 ‒ エンティティ
• 規則 ‒ ルール
• ユースケース内の関係
• 代替パス
• 例外パス
• ユースケース間の関係
• 汎化
• Include
• Extend
• ScenarioPlusFragments [PEUC]
• ユースケースはメインシナリオにフラグメントを追加した構造にする
• 分析中毒(Analysis Paralysis)に注意
ユースケース内の関係
• 代替パス
• 主シナリオの⼀部を代替
• ユースケース全体の結果は変わらない
• 更新系のユースケースの場合、システムの状態は変更される
• 失敗パス
• 主シナリオが失敗時に分岐
• ユースケースは失敗の結果になる
• 更新系のユースケースの場合でも、システムの状態は変更されない(の
が理想)
• ExhaustiveAlternatives [PEUC]
• ユースケース内のすべての代替パスと失敗パスを網羅する
代替パスと失敗パス
ユースケース間の関係
第7回 協調モデル
第13回 要求/ユースケース
ユースケース/汎化
第7回 協調モデル
第13回 要求/ユースケース
ユースケース/include
第7回 協調モデル
第13回 要求/ユースケース
ユースケース/extend
第7回 協調モデル
第13回 要求/ユースケース
ユースケースのincludeとextend
ユースケースの汎化
ScenarioPlusFragments [PEUC]
• メインシナリオと断⽚の組み合わせでユースケースを作成する
• 同じゴール、同じ状態遷移(事前状態→事後状態)を持つユース
ケースは⼀つにまとめたい
• CompleteSingleGoal [PEUC]
• ユースケースは単⼀の完結したゴールを持つ
• 汎化、拡張点を明確にしたい
• DetectableConditions [PEUC]
• シナリオには検出可能な条件を記述する
ユースケース・インスタンス
• ユースケースに具体的な条件を設定して具象化したもの
• 例: 複数のクレジットカードを登録している利⽤者がクレジットカード
の決済に失敗した時にリカバリして購⼊を⾏う
• 製品の推しポイント、気になる例外事項などはユースケース・
インスタンスとして定義して、ユースケースに漏れがないかを
確認する
• まず、ユースケース・インスタンス群を作成し、ここからユー
スケースを抽出、仕上げていくアプローチもよい
SM2021
要求モデルの構成
SM2021
まとめ
• PreciseAndReadable [PEUC]
• システークホルダーが読みやすいように簡潔に、シナリオ分析ができ
るように精密に
• シナリオはSVOで考える
• オブジェクト指向分析との連続性
• ScenarioPlusFragments [PEUC]
• ユースケースはメインシナリオにフラグメントを追加した構造にする
• 分析中毒(Analysis Paralysis)に注意
• ユースケース・シナリオ、ユースケース&あらすじ、ユースケース&
シナリオ、フィーチャーを適材適所で使い分ける
参考⽂献
• 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)

More Related Content

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

Similar to 要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】 (20)

要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】
要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】
要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】
 
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】
 
静的モデル(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第5回】
静的モデル(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第5回】静的モデル(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第5回】
静的モデル(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第5回】
 
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
 
分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
 
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
 
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
 
ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】
ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】
ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】
 
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
 
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
 
動的モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第6回】
動的モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第6回】動的モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第6回】
動的モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第6回】
 
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
 
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
 
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
 
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
 
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
 
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
 
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
 
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
 
Cedec2012 ai-contest-design-patterns-principles
Cedec2012 ai-contest-design-patterns-principlesCedec2012 ai-contest-design-patterns-principles
Cedec2012 ai-contest-design-patterns-principles
 

More from Tomoharu ASAMI

More from Tomoharu ASAMI (6)

Cloud Native CBD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第35回】
Cloud Native CBD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第35回】Cloud Native CBD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第35回】
Cloud Native CBD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第35回】
 
アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】
アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】
アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】
 
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
 
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
 
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
 
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
 

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