Rdra4 dddワークショップ
-
Upload
zenji-kanzaki -
Category
Engineering
-
view
242 -
download
0
Transcript of Rdra4 dddワークショップ
![Page 1: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/1.jpg)
RDRAワークショップ
システム地図で要件定義を効率的に 2017/4/18
Relationship driven requirement analysis ⇒ RDRA(ラドラ)
![Page 2: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/2.jpg)
2
要件定義には何を定義すればいいのか
システム
もの
サービス
機能
データ
機能
機能
利害関係者
ユーザ
外部システム
業務
RDRAでは「要件定義の対象をシステムとシステムを取り巻く環境」と考える
システムを取り巻く環境
システム
要件定義書
![Page 3: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/3.jpg)
3
要件定義では何が定義されないといけないのか
システム
もの
サービス
機能
データ
機能
機能
利害関係者
ユーザ
外部システム
業務
•その機能が使用するデータは?
•システムに必要な機能は?
•その時の入出力情報は?
•システムとの接点は?
•どのようにシステムは使われるのか?
•どのような人、外部システムと関わるのか?
•このシステムの目的(価値)は?
![Page 4: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/4.jpg)
4
もの
サービス
システム価値
もの サービス利害関係者
ユーザ
要件定義の構造を定義する
システム外部環境
外部システム
システム
機能
データ
機能
機能
利害関係者
ユーザ
外部システム
システム
システム境界
機能データ
機能
•システム価値
•システム外部環境
•システム境界
•システム
要件定義の構造
![Page 5: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/5.jpg)
5
システム価値
もの サービス
利害関係者
ユーザ
要求
価値
外部システム
要件分析の枠組み1.【システムの価値】を捉える
•対象業務に関わる人を洗い出す•関係する外部システムを洗い出す•要求を捉える
2.【システム外部環境】を捉える
•対象業務の流れを捉える•対象業務に関わる概念を明らかにする•システムの利用シーンを明らかにする
3.【システム境界】を捉える
•ユーザインターフェースを明らかにする•外部システムとのインターフェースを明らかにする
4.【システム】を定義する
•機能を明らかにする•データを明らかにする•ドメインの構造を把握する
システム外部環境
システム
機能データ
機能
システム境界
![Page 6: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/6.jpg)
要件分析の枠組みにモデルを当てはめる
システム価値からシステムの機能とデータを求める手段としてUMLを拡張したモデルを利用する
![Page 7: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/7.jpg)
7
コンテキストモデルからシステム境界まで
1.対象業務に関わる人と外部システムを把握する
clas s システムコンテキスト
業務名
<<システム>>Xxxxシステム
システム主体者1システム主体者2
システム主体者3
システム主体者4
業務主体者5
外部システム
コンテキストモデル
要求モデル
外部システム
人(アクター)
システム
要求要求
要求
2.下記関係者の要求を把握する
4.業務の中でシステムが関わる部分を把握する
3.業務を組み立てる
uc ユースケース
XxxxをYyyyする
XxxxをWwwwする
UuuuをLl l lする
システム主体者1
システム主体者2
システム主体者3
システム主体者4
KkkkkをXする
OをOnnnnする
業務モデル
対象業務に関わる人と外部システムを要件定義の起点とする
イベントモデル
プロトコルモデル
5.外部システムとのイベントを捉える
6.外部システムとのプロトコルを整理
同じように利用シーンからユースケースを導き出す
![Page 8: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/8.jpg)
8
ユースケースから機能、データまで
システム
7.ユースケースに関わるユーザーインターフェーズを洗い出す
uc ユースケース
XxxxをYyyyする
XxxxをWwwwする
UuuuをLl l lする
システム主体者1
システム主体者2
システム主体者3
システム主体者4
KkkkkをXする
OをOnnnnするイベントモデル
プロトコルモデル
8.ユースケースを実現する機能を洗い出す
cus t om 画面モデル
<<画面>>商品登録画面
- 商品名- 取引先- 荷姿- 発注単位- 商品カテゴリ
<<画面>>販売状況照会
- 月- 商品カテゴリ
<<画面>>発注登録
- 商品- 発注日- 発注数量- 入荷予定日
<<画面>>商品説明
- 商品カテゴリ
<<画面>>カート処理
- 受注番号
<<画面>>受注照会
- 顧客名- 受注日
商品売上詳細
- 商品- 売上数量- 売上金額
詳細説明
- 商品説明
カート内商品
- 商品- 数量
<<画面>>決済処理
- 顧客名- 住所- 決済方法
受注商品
- 商品- 受注数量
画面帳表モデル
act 機能モデル
<<funct ion>>Uuuu機能
<<funct ion>>Zz z z機能
<<funct ion>>Xxxx機能
<<funct ion>>Yyyyy機能
機能モデル
act 機能モデル
<<funct ion>>Uuuu機能
<<funct ion>>Zz z z機能
<<funct ion>>Xxxx機能
<<funct ion>>Yyyyy機能
clas s データモデル2
<<datamodel>>AAAXxxx
- xxx11: int- xxx12: int- xxx13: int
Xxxx
<<datamodel>>AAAXxxx1
- x1xx11- x1xx12- x1xx13
<<datamodel>>AAAYyyy
- yyy1- yyy2- yyy3
Uuuu
- uuu1- uuu2- uuu3
<<datamodel>>AAAJj j j
- jjj1- jjj2- jjj3
<<datamodel>>AAAOooo
- eeee1: int- eeee2: int- eeee3: int
Xxxx
<<datamodel>>AAAXxxx2
- x2xx1- x2xx2- x2xx3
XxxxXxxx3
- x3xx1- x3xx2- x3xx3
データモデル
9.アクションを機能に対応付ける
画面・ユースケースモデル
ユースケースモデル
機能モデル
システム境界
10.データを洗い出す
11.機能とデータを付き合わせる
機能複合モデル
![Page 9: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/9.jpg)
9
システム価値 システム外部環境 システム境界 システム
UC:ユーケース
RDRA for DDD
コンテキスト
利用シーン
業務フロー
イベント
機能複合モデル
要求
状態
プロトコル
オプション
オプション
UC
情報or
情報
画面
イベント
「システム境界」の詳細化と「システムの分析」は開発側に任す
9
データではなく情報
ユースケースを安定させるために「情報」を活用
状態遷移をユースケースに対応させてもよい
業務フローか利用シーンのどちらか
業務フローか利用シーンごとに機能複合モデルを作る
情報の構造化はしなくてよい、構造化はドメインモデルで行う
現場で認識している状態を明示することが大事
ビジネスユースケースと捉えてもよい
![Page 10: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/10.jpg)
10
RDRA for DDD システム地図
要件としての整合性、網羅性を確保する
システム地図の構成要素
画面
ユースケース
情報
外部システム
イベント
利用シーン
10
![Page 11: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/11.jpg)
グループ演習システム地図を作る
「空き会議室の有効活用」 「適切な値段と場所で会議室を借りたい」
このニーズをマッチングするサイト
![Page 12: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/12.jpg)
12
RDRA Map Maker
Drag&Drop
右ボタン
②新規作成 ④別ビューに追加
Drag&Drop
③新規作成
新規アイコンの追加 アイコンの追加①メニューから追加②パレットからDrag&Dropで追加③右ボタンで追加
ビューにアイコンを追加④別ビューに追加
⑤追加位置マーカー
メニュー、ショートカットでのアイコン追加の場合の追加位置を示す
⑥連続追加ダイアログ行単位でアイコンを連続追加する
⑦アイコンの変更・削除
右ボタンのコンテキストメニューからアイコンの変更・削除を行う
⑧関連線を引く矢印からDrag&Dropで線を引く
⑤追加位置マーカー
⑥連続追加ダイアログアイコン種類
⑦アイコンの変更・削除
⑧関連線を引く
![Page 13: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/13.jpg)
13
RDRA Map Maker
新しいビューの追加ビュー
新しいビューの追加
複数ビューの管理一つのモデルを複数のビューで見る
![Page 14: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/14.jpg)
14
貸会議室.com
貸会議室.com 貸主会議室利用者
会議室登録
サービス利用申請
利用料振込
利用状況照会
会員登録
審査
公開
会議室検索
精算
会議室予約
予約確定メール
会議室利用 管理
決済代行支払 入金 要求:
空いている会議室を有効利用したい
要求:
リーズナブルな価格で会議室を借りたい
要求:
会議室を安く貸し出す場を提供する
![Page 15: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/15.jpg)
15
貸会議室.com システム地図
![Page 16: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/16.jpg)
16
演習の進め方 システム地図
システム価値 アクター 外部システム
システム外部環境 利用シーン
システム境界 ユースケース 画面 イベント
システム 情報
要求でコントロールする 要求で方向性を決める
![Page 17: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/17.jpg)
17
要求側と開発側でのモデルイメージ
17
要求側:広く浅く分析するためのモデル
開発側:深く分析するためのモデル
要件定義 受入テスト
開発計画 プロト プロト 分析設計実装テスト
分析設計実装テスト
分析設計実装テスト
分析設計実装テスト
分析設計実装テスト
プロト
ドメインロバストネス図
機能連携図
UC
状態
状態遷移図
コンテキスト業務フロー
要求 利用シーン
ビジネスルール
XXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXX
シナリオ
XXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXX
シナリオ
要求側
開発側
![Page 18: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/18.jpg)
18
RDRA for DDD システム地図
要件としての整合性、網羅性を確保する
システム地図の構成要素
画面
ユースケース
情報
外部システム
イベント
利用シーン
18
![Page 19: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/19.jpg)
付録:EAを使って要件を定義する
![Page 20: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/20.jpg)
20
RDRAテンプレート RDRAで作成する一連のモデルをパッケージとして用意
メニュー用のダイアグラムを用意
レビュー用のダイアグラムも用意
![Page 21: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/21.jpg)
21
RDRAプロファイル
RDRAのダイアグラムに特化したアイコンを集めたツールバーが用意されている
クイックリンクも用意されている
クイックリンク
![Page 22: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/22.jpg)
22
clas s データモデル
取引先
- 名前- 締め日
商品
- 発注単位- 追加発注禁止
オーダー商品
- 数量
出荷情報
- 出荷番号- 出荷日
オーダー情報
- オーダーID- オーダー日- 数量- 決済方法
送り先情報
- 送り先名- 郵便番号- 住所- 電話番号
出荷指示情報
- 出荷予定日- 入荷待ちの有無
入金情報
- 入金日- 入金者名- 金額
パッケージ
- 商品名- 荷姿- 商品カテゴリ- 単価
*
0..11
1
1
11
1
*
オーダー商品
EAを使ったRDRA
cus t om 画面モデル
<<画面>>商品登録画面
- 商品名- 取引先- 荷姿- 発注単位- 商品カテゴリ
<<画面>>販売状況照会
- 月- 商品カテゴリ
<<画面>>商品説明
- 商品カテゴリ- 商品名- 商品説明- 価格
<<画面>>カート処理
- オーダーID
<<画面>>オーダー照会
- 顧客名- オーダー日- 状態
商品売上詳細
- 商品名- 売上数量- 売上金額
詳細説明
- 商品説明
カート内商品
- 商品名- 数量
<<画面>>決済処理
- 顧客名- 住所- 決済方法
受注商品
- 商品名- 数量
<<画面>>オーダー取り消し
- オーダーID
uc ユースケースモデル
商品販売サイト
<<入荷システム>>入荷商品を登録する
<<出荷システム>>出荷を完了する
<<出荷システム>>出荷を指示する
オーダーを照会する
商品を登録する
商品を説明する
<<入荷システム>>商品を発注する
販売状況を照会する
オーダー部門
営業
物流
顧客
オーダーを取り消す
オーダーを完了する
商品を受注する
入金額を補正する
<<出荷システム>>オーダー状況の確認
する
新規受注を確認する
出荷予定を確認する
act オーダー業務
商品購入
入金確認
出荷指示
出荷完了指示
開始
終了
オーダー確認
支払い
出荷業務
入金額の差違
入金の差違の解消
オーダー取り消し
オーダー継続
配達完了メール通知待ち
オーダー完了登録
オーダー状況の確認
メール確認
入金額と請求額が一致する
入金額と請求額の差違がある
キャンセル
キャンセルしない
Step By Step
![Page 23: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/23.jpg)
23
1.システムに関わるアクターと外部システムを求める
A-23
コンテキストモデルシステム価値
システム外部環境
システム境界
システム
もの
サービス
利害関係者
ユーザ
システムを取り巻く一番外側を定義する・システムの目的役割・アクター・外部システム
目的・役割
責務
役割
目的・役割
要件定義の出発点としてアクターと外部システムを洗い出す
最終的にシステムに関わるアクターと外部システムを全て洗い出し、システムの目的を明らかにする
モデリングのヒント:最初は関わりがあると思われるアクターと外部システムを全て出す。
システムの目的は最初は漠然としたものでもよい。徐々に明らかにする
![Page 24: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/24.jpg)
24
2.要求を捉える
A-
24
コンテキストモデルシステム価値
システム外部環境
システム境界
システム
ものサービス
利害関係者ユーザ
要求を以下の3つに分類・要望:ヒアリングしたもの・機能要求:機能の要求として整理したもの・非機能要求:非機能の要求として整理したもの・要件:ステークホルダーが把握するもの
目的・役割
要求
要求
要求モデル
要求を明らかにする。・顧客からのヒアリング結果を要望として洗い出す。・粒度や網羅性を考えながら整理したものを要求として分類する。・ステークホルダーが認識すべきものを要件として整理する。要求モデルは要求の整理がメインの作業となる。
モデリングのヒント:ヒアリングしたものはそのまま加工せずに要望として洗い出す。
他のモデル作成中に「何々できること」のようにシステムとして実現すべき事が明らかになったときは要求として追加する
![Page 25: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/25.jpg)
25
3.システムを利用する環境を明らかにする(業務モデル)
A-
25
コンテキストモデル
システム価値
システム外部環境
システム境界
システム
利害関係者
ユーザ
洗い出したアクターを意識しながら業務を設計する。・アクティビティ・情報・業務上の条件
目的・役割
業務モデル
業務
責務
価値
レーン レーン
システムに関わる業務を明らかにする。業務にはそれを行うことで得られる価値があるので、それを意識して作成する。その価値が最終的にシステムの目的・役割につながる。
モデリングのヒント:作業の平行性を意識する。
入力等の負荷がかかる作業は受益者負担が好ましい。
作業の分岐条件はビジネスルールとなる。
![Page 26: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/26.jpg)
26
4.業務上に存在する概念を整理する(概念モデル)
A-
26
システム価値
システム外部環境
システム境界
システム
利害関係者
ユーザ
構造的な概念についてクラス図で表現する。
全ての概念ではなく重要なものだけを記述する
概念モデル
概念
概念業務
システムを取り巻く環境の中で使われている概念を明らかにする。概念が異なるとシステムの機能も異なる
モデリングのヒント:概念のうち構造的なものが概念モデルの対象となる。モデルとして整理するのが難しい場合は用語集として整理する。他のモデルで該当概念について記述する場合は概念モデル内の用語を使用する
![Page 27: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/27.jpg)
27
5.システムとの接点を明らかにする(ユースケース)
A-
27
システム価値
システム外部環境
システム境界
システム
利害関係者
ユーザ
業務モデルの各アクティビティの中でシステムとの接点がユースケースとなる。
利用シーンを具体化したものがユースケースとなる
業務モデル 利用シーンモデル
コピー
ユースケースモデル
コピー
中間モデル中間モデル
中間モデルで作成したユースケースを集める
システムが使われる環境をベースに、システムとの接点をユースケースで表す。
この手法のユースケースはアクターとの接点に限定する
モデリングのヒント:主語と動詞を明確にする「XXXをZZZZする」のような形式
システムとの接点を明らかにする。ソフトウェアの機能ではない。
![Page 28: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/28.jpg)
28
6.入出力情報を明らかにする(画面・帳表モデル)
A-
28
システム価値
システム外部環境
システム境界
システム
画面・帳表モデル
ユースケースモデル
状況を捉える状況を捉える
中間モデルで作成した入出力情報を集める
ユースケースとつなげて入出力情報を捉える。同時にユースケースに繋がるアクティビティ、利用シーンを考慮に入れる
ユーザーインターフェースの入出力情報を明らかにする。
そのために画面と帳表で扱う情報を洗い出す。
モデリングのヒント:画面や帳表のレイアウトは別途標準を規定してから作成する。
顧客とは画面のラフスケッチで打ち合わせする
![Page 29: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/29.jpg)
29
7.外部システムとのやりとりを明らかにする(イベント)
A-
29
コンテキストモデル
システム価値
システム外部環境
システム境界
システム
洗い出した外部システムから導き出す。
受信、送信に分かれるが自分のシステムを中心に受信送信を分類する。
目的・役割
イベントモデル
外部システム
通信電文などの資料
外部システムとのやりとりをイベントモデルとして整理する。外部システムが既存のシステムの場合は通信電文などの資料を元に整理する。外部システムとの役割分担が分かるような主要なイベントを洗い出す。
モデリングのヒント:受信、送信の細かな情報に落ち込まないようにする。主要な情報に着目する。
![Page 30: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/30.jpg)
30
8.イベントをルール化する(プロトコルモデル)
A-
30
システム価値
システム外部環境
システム境界
システム
洗い出したイベントをトリガーに結びつけ整合性を合わせる
トリガーの結果行われることを作用として洗い出す状態、トリガー作用
イベントモデル
外部システム
プロトコルモデル
トリガー/作用
イベントをトリガーに対応させる
通信電文などの資料
機能モデル:機能
作用を機能に対応させる
外部システムとのやりとりに必要なイベントを網羅的に出すためにステートマシン図を使って整理する。外部システムとの間で共有する状態を洗い出す。状態として表現することで網羅的に表現が可能になる。その状態間の遷移にイベントを当てはめ、イベントの網羅性を確保する。
サービスの提供で状態を持たないイベントの場合はこのモデルに対応させない
モデリングのヒント:設計段階では厳密さが要求されるが、要件定義段階では外部システムとの役割が分かればよい
![Page 31: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/31.jpg)
31
9.システムで使うデータを明らかにする(データモデル)
A-
31
システム価値
システム外部環境
システム境界
画面・帳表モデルの項目、業務フロー上の情報、イベントモデルのイベント毎の情報からデータモデルを作成する
業務モデル画面・帳表モデル イベントモデル
データモデル
システム
データ
機能
機能
システムで使用するデータを明らかにする。
ここでのデータはビジネス的に必要なデータであり、仕組み上必要なデータは含めない。つまり、システムにとって必要なデータは何かを明らかにする
モデリングのヒント:DB設計を意識しない。
ビジネス上必要なデータを明らかにする
![Page 32: Rdra4 dddワークショップ](https://reader030.fdocument.pub/reader030/viewer/2022021507/58f9ad0e760da3da068b9473/html5/thumbnails/32.jpg)
32
10.システムに必要な機能を明らかにする(機能モデル)
A-
32
システム価値
システム外部環境
システム境界
機能を導出するためには以下の3つの情報と対応づけて洗い出す・ユースケース・イベント・トリガー/作用
データモデル
システム 機能モデル
ユースケースモデル
機能複合モデル
データ 機能機能
UC
機能
プロトコルモデル
アクション
ドメインモデル
ユースケースを実現するソフトウェアとしての「機能」とプロトコルモデルの遷移上の作用に対応する「機能」を洗い出す。また、それらの機能がどのようにデータとドメインオブジェクトを操作するかを機能複合モデルで表現する