rdra4 dddワークショップ

32
RDRAワークショップ システム地図で要件定義を効率的に 2017/4/18 Relationship driven requirement analysis RDRA(ラドラ)

Upload: zenji-kanzaki

Post on 21-Apr-2017

244 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: Rdra4 dddワークショップ

RDRAワークショップ

システム地図で要件定義を効率的に 2017/4/18

Relationship driven requirement analysis ⇒ RDRA(ラドラ)

Page 2: Rdra4 dddワークショップ

2

要件定義には何を定義すればいいのか

システム

もの

サービス

機能

データ

機能

機能

利害関係者

ユーザ

外部システム

業務

RDRAでは「要件定義の対象をシステムとシステムを取り巻く環境」と考える

システムを取り巻く環境

システム

要件定義書

Page 3: Rdra4 dddワークショップ

3

要件定義では何が定義されないといけないのか

システム

もの

サービス

機能

データ

機能

機能

利害関係者

ユーザ

外部システム

業務

•その機能が使用するデータは?

•システムに必要な機能は?

•その時の入出力情報は?

•システムとの接点は?

•どのようにシステムは使われるのか?

•どのような人、外部システムと関わるのか?

•このシステムの目的(価値)は?

Page 4: Rdra4 dddワークショップ

4

もの

サービス

システム価値

もの サービス利害関係者

ユーザ

要件定義の構造を定義する

システム外部環境

外部システム

システム

機能

データ

機能

機能

利害関係者

ユーザ

外部システム

システム

システム境界

機能データ

機能

•システム価値

•システム外部環境

•システム境界

•システム

要件定義の構造

Page 5: Rdra4 dddワークショップ

5

システム価値

もの サービス

利害関係者

ユーザ

要求

価値

外部システム

要件分析の枠組み1.【システムの価値】を捉える

•対象業務に関わる人を洗い出す•関係する外部システムを洗い出す•要求を捉える

2.【システム外部環境】を捉える

•対象業務の流れを捉える•対象業務に関わる概念を明らかにする•システムの利用シーンを明らかにする

3.【システム境界】を捉える

•ユーザインターフェースを明らかにする•外部システムとのインターフェースを明らかにする

4.【システム】を定義する

•機能を明らかにする•データを明らかにする•ドメインの構造を把握する

システム外部環境

システム

機能データ

機能

システム境界

Page 6: Rdra4 dddワークショップ

要件分析の枠組みにモデルを当てはめる

システム価値からシステムの機能とデータを求める手段としてUMLを拡張したモデルを利用する

Page 7: Rdra4 dddワークショップ

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ワークショップ

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ワークショップ

9

システム価値 システム外部環境 システム境界 システム

UC:ユーケース

RDRA for DDD

コンテキスト

利用シーン

業務フロー

イベント

機能複合モデル

要求

状態

プロトコル

オプション

オプション

UC

情報or

情報

画面

イベント

「システム境界」の詳細化と「システムの分析」は開発側に任す

9

データではなく情報

ユースケースを安定させるために「情報」を活用

状態遷移をユースケースに対応させてもよい

業務フローか利用シーンのどちらか

業務フローか利用シーンごとに機能複合モデルを作る

情報の構造化はしなくてよい、構造化はドメインモデルで行う

現場で認識している状態を明示することが大事

ビジネスユースケースと捉えてもよい

Page 10: Rdra4 dddワークショップ

10

RDRA for DDD システム地図

要件としての整合性、網羅性を確保する

システム地図の構成要素

画面

ユースケース

情報

外部システム

イベント

利用シーン

10

Page 11: Rdra4 dddワークショップ

グループ演習システム地図を作る

「空き会議室の有効活用」 「適切な値段と場所で会議室を借りたい」

このニーズをマッチングするサイト

Page 12: Rdra4 dddワークショップ

12

RDRA Map Maker

Drag&Drop

右ボタン

②新規作成 ④別ビューに追加

Drag&Drop

③新規作成

新規アイコンの追加 アイコンの追加①メニューから追加②パレットからDrag&Dropで追加③右ボタンで追加

ビューにアイコンを追加④別ビューに追加

⑤追加位置マーカー

メニュー、ショートカットでのアイコン追加の場合の追加位置を示す

⑥連続追加ダイアログ行単位でアイコンを連続追加する

⑦アイコンの変更・削除

右ボタンのコンテキストメニューからアイコンの変更・削除を行う

⑧関連線を引く矢印からDrag&Dropで線を引く

⑤追加位置マーカー

⑥連続追加ダイアログアイコン種類

⑦アイコンの変更・削除

⑧関連線を引く

Page 13: Rdra4 dddワークショップ

13

RDRA Map Maker

新しいビューの追加ビュー

新しいビューの追加

複数ビューの管理一つのモデルを複数のビューで見る

Page 14: Rdra4 dddワークショップ

14

貸会議室.com

貸会議室.com 貸主会議室利用者

会議室登録

サービス利用申請

利用料振込

利用状況照会

会員登録

審査

公開

会議室検索

精算

会議室予約

予約確定メール

会議室利用 管理

決済代行支払 入金 要求:

空いている会議室を有効利用したい

要求:

リーズナブルな価格で会議室を借りたい

要求:

会議室を安く貸し出す場を提供する

Page 15: Rdra4 dddワークショップ

15

貸会議室.com システム地図

Page 16: Rdra4 dddワークショップ

16

演習の進め方 システム地図

システム価値 アクター 外部システム

システム外部環境 利用シーン

システム境界 ユースケース 画面 イベント

システム 情報

要求でコントロールする 要求で方向性を決める

Page 17: Rdra4 dddワークショップ

17

要求側と開発側でのモデルイメージ

17

要求側:広く浅く分析するためのモデル

開発側:深く分析するためのモデル

要件定義 受入テスト

開発計画 プロト プロト 分析設計実装テスト

分析設計実装テスト

分析設計実装テスト

分析設計実装テスト

分析設計実装テスト

プロト

ドメインロバストネス図

機能連携図

UC

状態

状態遷移図

コンテキスト業務フロー

要求 利用シーン

ビジネスルール

XXXXXXXXXXXXXXXXX

XXXXXXXXXXXXXXXXX

シナリオ

XXXXXXXXXXXXXXXXX

XXXXXXXXXXXXXXXXX

シナリオ

要求側

開発側

Page 18: Rdra4 dddワークショップ

18

RDRA for DDD システム地図

要件としての整合性、網羅性を確保する

システム地図の構成要素

画面

ユースケース

情報

外部システム

イベント

利用シーン

18

Page 19: Rdra4 dddワークショップ

付録:EAを使って要件を定義する

Page 20: Rdra4 dddワークショップ

20

RDRAテンプレート RDRAで作成する一連のモデルをパッケージとして用意

メニュー用のダイアグラムを用意

レビュー用のダイアグラムも用意

Page 21: Rdra4 dddワークショップ

21

RDRAプロファイル

RDRAのダイアグラムに特化したアイコンを集めたツールバーが用意されている

クイックリンクも用意されている

クイックリンク

Page 22: Rdra4 dddワークショップ

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ワークショップ

23

1.システムに関わるアクターと外部システムを求める

A-23

コンテキストモデルシステム価値

システム外部環境

システム境界

システム

もの

サービス

利害関係者

ユーザ

システムを取り巻く一番外側を定義する・システムの目的役割・アクター・外部システム

目的・役割

責務

役割

目的・役割

要件定義の出発点としてアクターと外部システムを洗い出す

最終的にシステムに関わるアクターと外部システムを全て洗い出し、システムの目的を明らかにする

モデリングのヒント:最初は関わりがあると思われるアクターと外部システムを全て出す。

システムの目的は最初は漠然としたものでもよい。徐々に明らかにする

Page 24: Rdra4 dddワークショップ

24

2.要求を捉える

A-

24

コンテキストモデルシステム価値

システム外部環境

システム境界

システム

ものサービス

利害関係者ユーザ

要求を以下の3つに分類・要望:ヒアリングしたもの・機能要求:機能の要求として整理したもの・非機能要求:非機能の要求として整理したもの・要件:ステークホルダーが把握するもの

目的・役割

要求

要求

要求モデル

要求を明らかにする。・顧客からのヒアリング結果を要望として洗い出す。・粒度や網羅性を考えながら整理したものを要求として分類する。・ステークホルダーが認識すべきものを要件として整理する。要求モデルは要求の整理がメインの作業となる。

モデリングのヒント:ヒアリングしたものはそのまま加工せずに要望として洗い出す。

他のモデル作成中に「何々できること」のようにシステムとして実現すべき事が明らかになったときは要求として追加する

Page 25: Rdra4 dddワークショップ

25

3.システムを利用する環境を明らかにする(業務モデル)

A-

25

コンテキストモデル

システム価値

システム外部環境

システム境界

システム

利害関係者

ユーザ

洗い出したアクターを意識しながら業務を設計する。・アクティビティ・情報・業務上の条件

目的・役割

業務モデル

業務

責務

価値

レーン レーン

システムに関わる業務を明らかにする。業務にはそれを行うことで得られる価値があるので、それを意識して作成する。その価値が最終的にシステムの目的・役割につながる。

モデリングのヒント:作業の平行性を意識する。

入力等の負荷がかかる作業は受益者負担が好ましい。

作業の分岐条件はビジネスルールとなる。

Page 26: Rdra4 dddワークショップ

26

4.業務上に存在する概念を整理する(概念モデル)

A-

26

システム価値

システム外部環境

システム境界

システム

利害関係者

ユーザ

構造的な概念についてクラス図で表現する。

全ての概念ではなく重要なものだけを記述する

概念モデル

概念

概念業務

システムを取り巻く環境の中で使われている概念を明らかにする。概念が異なるとシステムの機能も異なる

モデリングのヒント:概念のうち構造的なものが概念モデルの対象となる。モデルとして整理するのが難しい場合は用語集として整理する。他のモデルで該当概念について記述する場合は概念モデル内の用語を使用する

Page 27: Rdra4 dddワークショップ

27

5.システムとの接点を明らかにする(ユースケース)

A-

27

システム価値

システム外部環境

システム境界

システム

利害関係者

ユーザ

業務モデルの各アクティビティの中でシステムとの接点がユースケースとなる。

利用シーンを具体化したものがユースケースとなる

業務モデル 利用シーンモデル

コピー

ユースケースモデル

コピー

中間モデル中間モデル

中間モデルで作成したユースケースを集める

システムが使われる環境をベースに、システムとの接点をユースケースで表す。

この手法のユースケースはアクターとの接点に限定する

モデリングのヒント:主語と動詞を明確にする「XXXをZZZZする」のような形式

システムとの接点を明らかにする。ソフトウェアの機能ではない。

Page 28: Rdra4 dddワークショップ

28

6.入出力情報を明らかにする(画面・帳表モデル)

A-

28

システム価値

システム外部環境

システム境界

システム

画面・帳表モデル

ユースケースモデル

状況を捉える状況を捉える

中間モデルで作成した入出力情報を集める

ユースケースとつなげて入出力情報を捉える。同時にユースケースに繋がるアクティビティ、利用シーンを考慮に入れる

ユーザーインターフェースの入出力情報を明らかにする。

そのために画面と帳表で扱う情報を洗い出す。

モデリングのヒント:画面や帳表のレイアウトは別途標準を規定してから作成する。

顧客とは画面のラフスケッチで打ち合わせする

Page 29: Rdra4 dddワークショップ

29

7.外部システムとのやりとりを明らかにする(イベント)

A-

29

コンテキストモデル

システム価値

システム外部環境

システム境界

システム

洗い出した外部システムから導き出す。

受信、送信に分かれるが自分のシステムを中心に受信送信を分類する。

目的・役割

イベントモデル

外部システム

通信電文などの資料

外部システムとのやりとりをイベントモデルとして整理する。外部システムが既存のシステムの場合は通信電文などの資料を元に整理する。外部システムとの役割分担が分かるような主要なイベントを洗い出す。

モデリングのヒント:受信、送信の細かな情報に落ち込まないようにする。主要な情報に着目する。

Page 30: Rdra4 dddワークショップ

30

8.イベントをルール化する(プロトコルモデル)

A-

30

システム価値

システム外部環境

システム境界

システム

洗い出したイベントをトリガーに結びつけ整合性を合わせる

トリガーの結果行われることを作用として洗い出す状態、トリガー作用

イベントモデル

外部システム

プロトコルモデル

トリガー/作用

イベントをトリガーに対応させる

通信電文などの資料

機能モデル:機能

作用を機能に対応させる

外部システムとのやりとりに必要なイベントを網羅的に出すためにステートマシン図を使って整理する。外部システムとの間で共有する状態を洗い出す。状態として表現することで網羅的に表現が可能になる。その状態間の遷移にイベントを当てはめ、イベントの網羅性を確保する。

サービスの提供で状態を持たないイベントの場合はこのモデルに対応させない

モデリングのヒント:設計段階では厳密さが要求されるが、要件定義段階では外部システムとの役割が分かればよい

Page 31: Rdra4 dddワークショップ

31

9.システムで使うデータを明らかにする(データモデル)

A-

31

システム価値

システム外部環境

システム境界

画面・帳表モデルの項目、業務フロー上の情報、イベントモデルのイベント毎の情報からデータモデルを作成する

業務モデル画面・帳表モデル イベントモデル

データモデル

システム

データ

機能

機能

システムで使用するデータを明らかにする。

ここでのデータはビジネス的に必要なデータであり、仕組み上必要なデータは含めない。つまり、システムにとって必要なデータは何かを明らかにする

モデリングのヒント:DB設計を意識しない。

ビジネス上必要なデータを明らかにする

Page 32: Rdra4 dddワークショップ

32

10.システムに必要な機能を明らかにする(機能モデル)

A-

32

システム価値

システム外部環境

システム境界

機能を導出するためには以下の3つの情報と対応づけて洗い出す・ユースケース・イベント・トリガー/作用

データモデル

システム 機能モデル

ユースケースモデル

機能複合モデル

データ 機能機能

UC

機能

プロトコルモデル

アクション

ドメインモデル

ユースケースを実現するソフトウェアとしての「機能」とプロトコルモデルの遷移上の作用に対応する「機能」を洗い出す。また、それらの機能がどのようにデータとドメインオブジェクトを操作するかを機能複合モデルで表現する