45
システム地図を描く システム地図で要件定義を効率的に 2015/2/18 Relationship driven requirement analysis RDRA(ラドラ)

Rdra in 東京

Embed Size (px)

Citation preview

システム地図を描く

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

Relationship driven requirement analysis ⇒ RDRA(ラドラ)

2

わたしは…㈱バリューソース

代表取締役 社長神崎 善司[email protected]要件定義の散歩道:https://www.facebook.com/youkennotsubotwitter:@zenzengood

普段は要件定義のコンサルテーションセミナー開催(要件定義、モデリング)「要件のツボ」の開発

要件定義との関係は25年ほど前からオブジェクト指向を中心にシステム開発全般に関わる15年ほど前から上流工程を中心としたコンサルティングを行うその間一貫してモデル中心で行うその経験を活かしてモデルを使った要件定義の手法をまとめる

RDRAの背景

RDRAはいかにつくられたか

4

いつまでたってもシステムの全体像が見えてこない

議論が直ぐに袋小路に入って先に進まない

分析という名の転記作業ばかりを行っている

会議が毎回ループして先に進まない

ものすごいドキュメントが出来てくるが誰もシステムの目的、役割が分からない

このようなことはないですか?

進め方や要件定義書の書き方の議論ばかりで本題に入れない

5

じゃあどうする?

みんなで考える その場でまとめ 理解する

プロジェクターに資料を映しながらみんなで議論する

図的な表現を使用する

考え → 合意し → 説明できる

方向性が固まるまでは個人作業は非効率

アイディアを視覚化し共有する

考える 合意する 理解する そして説明可能になる

6

じゃあどうする?

議論を積み上げて要件としてまとめる

合意を積み上げていき議論に一貫性を持たせる

要件定義に筋道をつける

メンバーの方向性を合わせる 私はこう思います….

この言葉が続くようだと合意が得られていない証拠

7

より混乱を少なく要件定義を行うためには……

★顧客をリードする

★議論を積★議論を積み上げる

★方向性を合わせる

★構造化、抽象化しながら分析する

★視覚化し共有する★ゴールを明確にする

ゴールを示し、そのための道筋を明らかにする。そして対象を視覚化する。そして対象を構造化、抽象化して議論を積み上げながら要件を形にする。

要件分析のプロセス

要件分析のフレームワーク

今回はかなり端折っていますが…

要件定義の枠組み

上流工程での混乱を減らすために要件定義の枠組みが必要

要件分析フレームワーク

9

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

システム

もの

サービス

機能

データ

機能

機能

利害関係者

ユーザ

外部システム

業務

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

システムを取り巻く環境

システム

システム

要件定義書

10

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

システム

もの

サービス

機能

データ

機能

機能

利害関係者

ユーザ

外部システム

業務

•その機能が使用するデータは?•システムに必要な機能は?•その時の入出力情報は?•システムとの接点は?•どのようにシステムは使われるのか?•どのような人、外部システムと関わるのか?•このシステムの目的(価値)は?

11

もの

サービス

システム価値

もの サービス利害関係者

ユーザ

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

システム外部環境

外部システム

システム

機能

データ

機能

機能

利害関係者

ユーザ

外部システム

システムシステム

システム境界

機能データ

機能

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

要件定義の構造

12

システム価値

もの サービス

利害関係者

ユーザ

要求

価値

外部システム

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

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

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

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

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

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

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

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

システム外部環境

システムシステム

機能データ

機能

システム境界

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

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

RDRA全体像

UseCase

UseCase

UseCase

UseCase

UseCase

データモデル

システム境界

イベント一覧

イベントルール化

入出力情報

業務フロー

業務に関わる概念

関心 イベントデータ

情報

要求

各アクティビティでは概念にもとづいて作業を進める

機能モデル

ユーザ利害関係者

外部システム

cus tom コンテキ スト

地域観光情 報発信サイト

サイト 運営 者

情 報利用者

情報提供者

外部 情報サイト

旅行 者

情報を収集する対象の外部サイト

定点カメラ

cus tom コンテキ スト

地域観光情 報発信サイト

サイト 運営 者

情 報利用者

情報提供者

外部 情報サイト

旅行 者

情報を収集する対象の外部サイト

定点カメラ

cd 初期要望 モデル

新しいサービスを開始したい

広告収入を増やしたい

小規模店舗が新しい市場だ

顧客へのサービスを向上させたい

難しい操作のシステムをいれるのは嫌だ

顧客とダイレクトにつなぎたい

荷物の状態を知りたい

メールで状況を知らせて欲しい

Act or1Acto r2

Ac t or3

cd 初期要望 モデル

新しいサービスを開始したい

広告収入を増やしたい

小規模店舗が新しい市場だ

顧客へのサービスを向上させたい

難しい操作のシステムをいれるのは嫌だ

顧客とダイレクトにつなぎたい

荷物の状態を知りたい

メールで状況を知らせて欲しい

Act or1Acto r2

Ac t or3

ad アクティ ビ ティ

Xxxx Yyyy Zzzzz

X xxx x X xx xx

開始

X xx xxX xx xx

X xx xx X xx x

X x xx

X x xx xX xx x

終了

ad アクティ ビ ティ

Xxxx Yyyy Zzzzz

X xxx x X xx xx

開始

X xx xxX xx xx

X xx xx X xx x

X x xx

X x xx xX xx x

終了

an aly sis 利用シー ン

情報利 用者

(from コンテキストモデル)

来月、北海道に旅行を予定しているAさん。行き先の情報をネットで下調べすることにした。後半の何日かは札幌で宿泊するつもりなので、近郊の小樽にも足を伸ばしてみようと思った。ただ、小樽以外にも行きたいところは多く、あまり長い時間はとれないので、まずは絶対に外せない見どころの情報を示してくれるサイトを探すことにした。宿泊予約はこの下調べの後で決めることにした。予定が立ったらネットでホテルに予約を入れておこう。

見どころスポットの一覧を示したサイトを見つけ、内容をチェック。観て周るスポットの候補を挙げていく。限られた時間内でできるだけいろいろ楽しみたいので、行き先ごとに近くのお店や観光スポットなどもチェックしておくことにした。

旅に役立つ便利情報を入手したい

(from 要求モデル)

旅の見どころを知りた い

(from 要求モデル)

旅先で手軽に情報を入手したい

(from 要求モデル)

地元のバスなどは利用の仕方がよくわからないので、離れた地点間の移動にはタクシーを利用しようか。でも、お金もかかるし、今回は駅と運河周辺を歩いて散策するだけにするか。歩き疲れたときの休憩場所やトイレを利用できる場所などもあらかじめ調べておくことに。

効率重視で観て周るだけでは団体ツアーみたいで物足りないので、1箇所だけ、ちょっと変わった場所を予定に組み入れたいと思った。そういった情報はやはり地元の人に教えてもらおうと、地元の個人ブログやタウン情報サイトなどを参考にあちこち調べてみる。自分が小樽に行く日に、町ぐるみのイベントが企画されていることがわかった。ブログからは、ほかにもいろいろと面白そうな情報が見つかりそうな気もするけれど、小樽だけにそれほどこだわる理由もなく、このあたりやめることにした。

こうしてひととおりの情報を集めたが、旅先でパソコンを見ることはできない。必要な情報は紙に印刷しておくことにした。かさばるけれど仕方がない。携帯でサイトをチェックすることもできないではないが、携帯端末のパワーでパソコン用のページを見るのには時間がかかるし、パケット代も馬鹿にならない。なにより、旅先では情報収集に煩わされることなく旅そのものを楽しみたい。万事に用意周到なAさん、行き先の電話番号や念のためWebサイトのアドレスもコピーして、自分の携帯アドレスにメールしておいた。どうしても必要になったら、このメールから必要な情報にアクセスできるだろう。

天気、気温、景色など、いま現在の状況を見たい

(from 要求モデル)

いま現在の小樽の状況として、天気、気温のほか、スキー場などに設置した定点カメラを制御して、画像を取り出すこともできる。

an aly sis 利用シー ン

情報利 用者

(from コンテキストモデル)

来月、北海道に旅行を予定しているAさん。行き先の情報をネットで下調べすることにした。後半の何日かは札幌で宿泊するつもりなので、近郊の小樽にも足を伸ばしてみようと思った。ただ、小樽以外にも行きたいところは多く、あまり長い時間はとれないので、まずは絶対に外せない見どころの情報を示してくれるサイトを探すことにした。宿泊予約はこの下調べの後で決めることにした。予定が立ったらネットでホテルに予約を入れておこう。

見どころスポットの一覧を示したサイトを見つけ、内容をチェック。観て周るスポットの候補を挙げていく。限られた時間内でできるだけいろいろ楽しみたいので、行き先ごとに近くのお店や観光スポットなどもチェックしておくことにした。

旅に役立つ便利情報を入手したい

(from 要求モデル)

旅の見どころを知りた い

(from 要求モデル)

旅先で手軽に情報を入手したい

(from 要求モデル)

地元のバスなどは利用の仕方がよくわからないので、離れた地点間の移動にはタクシーを利用しようか。でも、お金もかかるし、今回は駅と運河周辺を歩いて散策するだけにするか。歩き疲れたときの休憩場所やトイレを利用できる場所などもあらかじめ調べておくことに。

効率重視で観て周るだけでは団体ツアーみたいで物足りないので、1箇所だけ、ちょっと変わった場所を予定に組み入れたいと思った。そういった情報はやはり地元の人に教えてもらおうと、地元の個人ブログやタウン情報サイトなどを参考にあちこち調べてみる。自分が小樽に行く日に、町ぐるみのイベントが企画されていることがわかった。ブログからは、ほかにもいろいろと面白そうな情報が見つかりそうな気もするけれど、小樽だけにそれほどこだわる理由もなく、このあたりやめることにした。

こうしてひととおりの情報を集めたが、旅先でパソコンを見ることはできない。必要な情報は紙に印刷しておくことにした。かさばるけれど仕方がない。携帯でサイトをチェックすることもできないではないが、携帯端末のパワーでパソコン用のページを見るのには時間がかかるし、パケット代も馬鹿にならない。なにより、旅先では情報収集に煩わされることなく旅そのものを楽しみたい。万事に用意周到なAさん、行き先の電話番号や念のためWebサイトのアドレスもコピーして、自分の携帯アドレスにメールしておいた。どうしても必要になったら、このメールから必要な情報にアクセスできるだろう。

天気、気温、景色など、いま現在の状況を見たい

(from 要求モデル)

いま現在の小樽の状況として、天気、気温のほか、スキー場などに設置した定点カメラを制御して、画像を取り出すこともできる。

cd 業務概念モデル

Ww ww

Dddd

Eee e

Ttttt

Ttttt1 Tttt2 Tttt3

*+Xxx

0..1+Ssss

* 1

1

cd 業務概念モデル

Ww ww

Dddd

Eee e

Ttttt

Ttttt1 Tttt2 Tttt3

*+Xxx

0..1+Ssss

* 1

1

ud ユースケー ス

X xxxをYyyyする

X xxxをW wwwする

UuuuをLl l lする

Actor1

Act or2

Actor3

Actor4

ud ユースケー ス

X xxxをYyyyする

X xxxをW wwwする

UuuuをLl l lする

Actor1

Act or2

Actor3

Actor4

ui 画面

Screen1

Sc reen2

Screen3

Screen4

Sc reen5

ui 画面

Screen1

Sc reen2

Screen3

Screen4

Sc reen5

st m イベント一覧

タイムアウト

一周完了

停止

制御終了

制御終了

操作開始

移動終了

移動開始

電源オフ 電源オン

コンテキスト モデル: :定点 カメラ

st m イベント一覧

タイムアウト

一周完了

停止

制御終了

制御終了

操作開始

移動終了

移動開始

電源オフ 電源オン

コンテキスト モデル: :定点 カメラ

cd データモデ ル

X xxx

- xxx11: int- xxx12: int- xxx13: int

X xxx1

- x1xx11: - x1xx12: - x1xx13:

Yyyy

- yyy1: - yyy2: - yyy3:

Uuuu

- uuu1: - uuu2: - uuu3:

J j j j

- jjj1: - jjj2: - jjj3:

Oooo

X xxx2

- x2xx1: - x2xx2: - x2xx3:

X xxx3

- x3xx1: - x3xx2: - x3xx3:

*

0..1

*

ffff

1

1+ppppp

cd データモデ ル

X xxx

- xxx11: int- xxx12: int- xxx13: int

X xxx1

- x1xx11: - x1xx12: - x1xx13:

Yyyy

- yyy1: - yyy2: - yyy3:

Uuuu

- uuu1: - uuu2: - uuu3:

J j j j

- jjj1: - jjj2: - jjj3:

Oooo

X xxx2

- x2xx1: - x2xx2: - x2xx3:

X xxx3

- x3xx1: - x3xx2: - x3xx3:

*

0..1

*

ffff

1

1+ppppp

act 機能モデル

<<fu nct io n>>Uuuu機能

<< funct ion>>Zzzz機能

<< funct ion>>X xxx機能

<<fu nct io n>>Yyyyy機能

act 機能モデル

<<fu nct io n>>Uuuu機能

<< funct ion>>Zzzz機能

<< funct ion>>X xxx機能

<<fu nct io n>>Yyyyy機能

s m 状態

Sta te1

St a te2

開始

St at e3

St at e4

終了

St at e5

St a te6

St a te7

履歴

s m 状態

Sta te1

St a te2

開始

St at e3

St at e4

終了

St at e5

St a te6

St a te7

履歴

15

act アクティビ ティ

システム主体者1 システム主体者2 システム主体者3

X xxxx7 X xxxx4

開始

X xxxx5

X xxxx6

X xxxx8

X xxx1

X xxx2

X xxxx9X xxx3

終了

システム主体者1

act アクティビ ティ

システム主体者1 システム主体者2 システム主体者3

X xxxx7 X xxxx4

開始

X xxxx5

X xxxx6

X xxxx8

X xxx1

X xxx2

X xxxx9X xxx3

終了

システム主体者1

act アクティビ ティ

システム主体者1 システム主体者2 システム主体者3

X xxxx7 X xxxx4

開始

X xxxx5

X xxxx6

X xxxx8

X xxx1

X xxx2

X xxxx9X xxx3

終了

システム主体者1

act アクティビ ティ

システム主体者1 システム主体者2 システム主体者3

X xxxx7 X xxxx4

開始

X xxxx5

X xxxx6

X xxxx8

X xxx1

X xxx2

X xxxx9X xxx3

終了

システム主体者1

コンテキストモデルからシステム境界まで

1.対象業務に関わる人と外部システムを把握する

class システムコンテキスト

業務名

<<システム>>Xxxx システム

システム主体者1システム主体者2

システム主体者3

システム主体者4

業務主体者5

外部システム

class システムコンテキスト

業務名

<<システム>>Xxxx システム

システム主体者1システム主体者2

システム主体者3

システム主体者4

業務主体者5

外部システム

コンテキストモデル

cus t om 機能要求

新しいサービスを開始したい

広告収入を増やしたい

小規模店舗が新しい市場だ

顧客へのサービスを向上させたい

難しい操作のシステムをいれるのは嫌だ

顧客とダイレクトにつなぎたい

XXXXXXXXXXXXXX

YYYYYYYYYYYYYYY

システム主体者1システム主体者2

システム主体者3

cus t om 機能要求

新しいサービスを開始したい

広告収入を増やしたい

小規模店舗が新しい市場だ

顧客へのサービスを向上させたい

難しい操作のシステムをいれるのは嫌だ

顧客とダイレクトにつなぎたい

XXXXXXXXXXXXXX

YYYYYYYYYYYYYYY

システム主体者1システム主体者2

システム主体者3

要求モデル

外部システム

人(アクター)

システム

要求要求

要求

2.下記関係者の要求を把握する

4.業務の中でシステムが関わる部分を把握する

3.業務を組み立てる

uc ユ ースケー ス

X xxxをYyyyす る

X xxxを Wwwwする

UuuuをLl l l す る

システム主体者1

システム主体者2

システム主体者3

システム主体者4

Kkkk kをXする

Oを Onnnnす る

uc ユ ースケー ス

X xxxをYyyyす る

X xxxを Wwwwする

UuuuをLl l l す る

システム主体者1

システム主体者2

システム主体者3

システム主体者4

Kkkk kをXする

Oを Onnnnす る

act アクティ ビティ

システム主体者1 システム主体者2 システム主体者3

X xxxx7 X xxxx4

開始

X xxxx5

X xxxx6

X xxxx8

X xxx1

X xxx2

X xxxx9X xxx3

終了

システム主体者1

act アクティ ビティ

システム主体者1 システム主体者2 システム主体者3

X xxxx7 X xxxx4

開始

X xxxx5

X xxxx6

X xxxx8

X xxx1

X xxx2

X xxxx9X xxx3

終了

システム主体者1

業務モデル

act 入荷業務

発注処理

営業

物流

入荷商品の確認

入荷処理

開始

終了

発注処理

<<入荷システム>>入荷登録

在庫切れ  在庫補充の発注

新規商品の発注

act 入荷業務

発注処理

営業

物流

入荷商品の確認

入荷処理

開始

終了

発注処理

<<入荷システム>>入荷登録

在庫切れ  在庫補充の発注

新規商品の発注

対象業務に関わる人と外部システムを要件定義の起点とする

s tm 状態

State1

St ate2

開始

St ate3

St ate4

終了

Stat e5

State 6

Stat e7

ユースケース名と対応をとることもできる

St ate8

Sta te9

<<Use Case>>

eeeeee [ff<1000]

XxxxをWwwwする[aaa=234]

s tm 状態

State1

St ate2

開始

St ate3

St ate4

終了

Stat e5

State 6

Stat e7

ユースケース名と対応をとることもできる

St ate8

Sta te9

<<Use Case>>

eeeeee [ff<1000]

XxxxをWwwwする[aaa=234]

stm イベント一覧

タイムアウト

一周完了

停止

制御終了

制御終了

操作開始

移動終了

移動開始

電源オフ 電源オン

コンテキストモデル::定点カメラ

stm イベント一覧

タイムアウト

一周完了

停止

制御終了

制御終了

操作開始

移動終了

移動開始

電源オフ 電源オン

コンテキストモデル::定点カメラ

イベントモデル

プロトコルモデル

5.外部システムとのイベントを捉える

6.I/Fとのプロトコルを整理

同じように利用シーンからユースケースを導き出す

16

ユースケースから機能、データまで

システム

7.ユースケースに関わるユーザーインターフェーズを洗い出す

uc ユ ースケース

X xxxを Yyyyする

X xxxを Wwwwする

Uuuuを Ll l l する

システム主体者1

システム 主体者2

システム主体者3

システム主体者4

Kkkkkを Xする

Oを Onnnnする

uc ユ ースケース

X xxxを Yyyyする

X xxxを Wwwwする

Uuuuを Ll l l する

システム主体者1

システム 主体者2

システム主体者3

システム主体者4

Kkkkkを Xする

Oを Onnnnする

s tm 状態

State1

St ate2

開始

St ate3

St ate4

終了

Stat e5

State 6

Stat e7

ユースケース名と対応をとることもできる

St ate8

Sta te9

<<Use Case>>

eeeeee [ff<1000]

XxxxをWwwwする[aaa=234]

s tm 状態

State1

St ate2

開始

St ate3

St ate4

終了

Stat e5

State 6

Stat e7

ユースケース名と対応をとることもできる

St ate8

Sta te9

<<Use Case>>

eeeeee [ff<1000]

XxxxをWwwwする[aaa=234]

stm イベント一覧

タイムアウト

一周完了

停止

制御終了

制御終了

操作開始

移動終了

移動開始

電源オフ 電源オン

コンテキストモデル::定点カメラ

stm イベント一覧

タイムアウト

一周完了

停止

制御終了

制御終了

操作開始

移動終了

移動開始

電源オフ 電源オン

コンテキストモデル::定点カメラ

イベントモデル

プロトコルモデル

8.ユースケースを実現する機能を洗い出す

cus tom 画面モデル

<<画面>>商品登録画面

- 商品名- 取引先- 荷姿- 発注単位- 商品カテゴリ

<<画面>>販売状況照会

- 月- 商品カテゴリ

<<画面>>発注登録

- 商品- 発注日- 発注数量- 入荷予定日

<<画面>>商品説明

- 商品カテゴリ

<<画面>>カート処理

- 受注番号

<<画面>>受注照会

- 顧客名- 受注日

商品売上詳細

- 商品- 売上数量- 売上金額

詳細説明

- 商品説明

カー ト内商品

- 商品- 数量

<<画面>>決済処理

- 顧客名- 住所- 決済方法

受注商品

- 商品- 受注数量

cus tom 画面モデル

<<画面>>商品登録画面

- 商品名- 取引先- 荷姿- 発注単位- 商品カテゴリ

<<画面>>販売状況照会

- 月- 商品カテゴリ

<<画面>>発注登録

- 商品- 発注日- 発注数量- 入荷予定日

<<画面>>商品説明

- 商品カテゴリ

<<画面>>カート処理

- 受注番号

<<画面>>受注照会

- 顧客名- 受注日

商品売上詳細

- 商品- 売上数量- 売上金額

詳細説明

- 商品説明

カー ト内商品

- 商品- 数量

<<画面>>決済処理

- 顧客名- 住所- 決済方法

受注商品

- 商品- 受注数量

uc ユ ースケー ス&画面

受注照会

商品登録

商品説明&受注

発注処理

販売状況照会

オーダ ー管理

営業

物流

顧客

<<画面>>商品登録画面

- 商品名- 取引先- 荷姿- 発注単位- 商品カテゴリ

<<画面>>販売状況照会

- 月- 商品カテゴリ

<<画面>>発注登録

- 商品- 発注日- 発注数量- 入荷予定日

<<画面>>商品説明

- 商品カテゴリ

<<画面>>カー ト処理

- 受注番号

<<画面>>受注照会

- 顧客名- 受注日

<<画面>>決済処理

- 顧客名- 住所- 決済方法

オーダー 取り消しオーダー 取り消し

- 受注番号

uc ユ ースケー ス&画面

受注照会

商品登録

商品説明&受注

発注処理

販売状況照会

オーダ ー管理

営業

物流

顧客

<<画面>>商品登録画面

- 商品名- 取引先- 荷姿- 発注単位- 商品カテゴリ

<<画面>>販売状況照会

- 月- 商品カテゴリ

<<画面>>発注登録

- 商品- 発注日- 発注数量- 入荷予定日

<<画面>>商品説明

- 商品カテゴリ

<<画面>>カー ト処理

- 受注番号

<<画面>>受注照会

- 顧客名- 受注日

<<画面>>決済処理

- 顧客名- 住所- 決済方法

オーダー 取り消しオーダー 取り消し

- 受注番号

画面帳表モデル

act 機能モデル

<<funct ion>>Uuuu機能

<<funct ion>>Zzzz機能

<<funct ion>>X xxx機能

<<funct ion>>Yyyy y機能

act 機能モデル

<<funct ion>>Uuuu機能

<<funct ion>>Zzzz機能

<<funct ion>>X xxx機能

<<funct ion>>Yyyy y機能

機能モデル

act 機能モデル

<<funct ion>>Uuuu機能

<<funct ion>>Zzzz機能

<<funct ion>>X xxx機能

<<funct ion>>Yyyy y機能

act 機能モデル

<<funct ion>>Uuuu機能

<<funct ion>>Zzzz機能

<<funct ion>>X xxx機能

<<funct ion>>Yyyy y機能

c la s s データ モデ ル2

<<datamodel>>AAAX xxx

- xxx11: int- xxx12: int- xxx13: int

Xxxx

<<datamodel>>AAAX xxx1

- 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>>AAAX xxx2

- x2xx1- x2xx2- x2xx3

Xxxx

X xxx3

- x3xx1- x3xx2- x3xx3

c la s s データ モデ ル2

<<datamodel>>AAAX xxx

- xxx11: int- xxx12: int- xxx13: int

Xxxx

<<datamodel>>AAAX xxx1

- 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>>AAAX xxx2

- x2xx1- x2xx2- x2xx3

Xxxx

X xxx3

- x3xx1- x3xx2- x3xx3

データモデル

uc 機能モデ ル

X xxxをW wwwする

<<datamodel>>AAAJ j j j

- jj j1- jjj2- jjj3

<<datamodel>>AAAOooo

- eeee1: int- eeee2: int- eeee3: int

<<datamodel>>AAAX xxx

- xxx11: int- xxx12: int- xxx13: int

Xxxx

<<datamodel>>AAA Xxx x1

- x1xx11- x1xx12- x1xx13

<<funct ion>>Xxxx機能 <<funct ion>>

Yyyyy機能

<<funct ion>>Zzzz機能

<<funct ion>>Uuuu機能

triger

CRUD CRUD

RCRU

CRU

uc 機能モデ ル

X xxxをW wwwする

<<datamodel>>AAAJ j j j

- jj j1- jjj2- jjj3

<<datamodel>>AAAOooo

- eeee1: int- eeee2: int- eeee3: int

<<datamodel>>AAAX xxx

- xxx11: int- xxx12: int- xxx13: int

Xxxx

<<datamodel>>AAA Xxx x1

- x1xx11- x1xx12- x1xx13

<<funct ion>>Xxxx機能 <<funct ion>>

Yyyyy機能

<<funct ion>>Zzzz機能

<<funct ion>>Uuuu機能

triger

CRUD CRUD

RCRU

CRU

9.アクションを機能に対応付ける

画面・ユースケースモデル

ユースケースモデル

機能モデル

システム境界

10.データを洗い出す

11.機能とデータを付き合わせる

機能複合モデル

17

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

コンテキスト

利用シーン

業務

イベント

プロトコル

ユースケース

概念

画面・帳表

機能

ドメイン

データ

要求

機能複合モデル

利用シーン&UC

業務&UC

UC:ユーケース

UC&画面

UC&機能

関係ダイアグラム全ての情報をつなげる

18

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

コンテキスト

利用シーン

業務

イベント

プロトコル

ユースケース

概念

画面・帳表

機能

ドメイン

データ

要求

機能複合モデル

利用シーン&UC

業務&UC

UC:ユーケース

UC&画面

UC&機能

関係ダイアグラム

結局モデルで何を表現しているのか

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

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

その時の入出力情報は?

システムとの接点は?

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

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

このシステムの目的は?

19

要件の精度を高める

問い 検証内容

Q101要求の元となる関係者にはどのような人がいるか

コンテキスト

□背景要件定義を網羅的に進めるためにその出発点となる関係者を洗い出す必要がある□確認ポイント・全ての関係者がアクターとして洗い出されているか・システムに関わらないが業務に関わるアクターも含まれているか・アクター同士の関係が示されているか・アクターは役割の名前がついているか・アクターの責務が明確になっているか

Q102どのような外部システムと連携するのか

コンテキスト

□背景外部システムとの連携もシステム化範囲を決めるための入り口になり、外部インターフェースの策定の出発点になる□確認ポイント・外部システムはもれなく洗い出されているか・今後の調査の候補も洗い出されているか・外部システムの役割が明確になっているか

Q103どのような機能要求があるか、それは誰(ロール)が要求しているのか

要求モデル

□背景システムが提供する機能として押さえておくべき事、方向性を要求、要件として示し、以後の各モデル策定の指針にする□確認ポイント・検証可能な表現で記述されているか・要求の粒度は揃っているか・要求のもれだぶりはないか・HowではなくWhatとして記述されているか Howは非機能要求として洗い出されているか・各ロールに応じた要求が洗い出されているか

問い ダイアグラム 懸念事項

利用シーンには必ずユースケースが結びついているか

利用シーン 利用シーンに結びつくユースケースがない場合はユースケースが抜けている可能性がある。

利用シーンには必ずアクターが結びついている

利用シーン 利用シーンに結びつくアクターが無い場合は必要なアクターが抜けている可能性がある

ユースケースには必ずアクティビティが結びついているか

ユースケース ユースケースに関わるアクティビティがない場合は必要なアクティビティが抜けている可能性がある。

ユースケースには必ず利用シーンが結びついているか

ユースケース ユースケースに関わる利用シーンがない場合は必要な利用シーンが抜けている可能性がある。

ユースケースに結びついていない画面は無いか

ユースケース ユースケースは画面か帳表、もしくは機能、データのどれかと結びついているはず。

ダイアグラムの検証ポイント

整合性をあわせるポイント

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

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

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

21

実際のモデル EAで作成した場合

pkg マイルストーン3

コンテキスト

+ 営業承認者

+ 営業担当者

+ 物流担当者

+ 経理

+ B2B_基幹システム

販売管理

+ 業務フロー

+ ユースケース

+ 画面・帳票

+ イベント

+ プロトコル

+ 機能モデル

債権管理

+ ユースケース

+ イベント

+ 画面・帳票

+ 機能

購買管理

+ 画面・帳票

+ 業務フロー

+ ユースケース

+ 機能モデル

債務管理

会計システム

在庫管理

仕入登録

発注依頼

入金計上

出荷指示

売上計上

売上登録

支払計上

入荷通知

仕入計上

入荷通知

act 業務&UC

営業 物流 経理

見積書作成

受注登録

出庫作業

開始

終了

見積承認

見積フォロー

営業承認者

営業担当者

受注承認

請求書発行 入金確認

督促状の発行

開始

見積もりを登録する

起票を 承認する

入金を確認する

<<在庫管理>>商品を出庫する

請求書を作成する

出荷指示

出荷指示する

受注残を照会する

督促状を 発行する検収登録検収を登録する

フォローを 記録する

物販の場合は出荷指示

サービスの場合は顧客サービス設定を行う

顧客サービスを 設定する

納品を確認する

受注を登録する

終了

顧客サービスの設定

受注残高を確認

<<include>>

<<include>>

uc 販売管理

受注を 登録する

(from ユースケース)

<<在庫管理>>

在庫引当をする

(from ユースケース)

<<在庫管理>>

在庫引当を 取り消す

出荷指示する

(from ユースケース)

<<在庫管理>>

商品を 出庫する

(from ユースケース)

売上を計上する

(from ユースケース)

請求書を作成する

(from ユースケース)

入金を 確認する

債権の消込を 行う

受注残を照会する

受注を 消し込む

見積もりを 登録する

(from ユースケース)

<<在庫管理>>

在庫を 確認する

見積もりを消し込む

(from ユースケース)

入金を 計上する

起票を承認する

(from ユースケース)

督促状を 発行する

フォローを 記録する

顧客サービスを設定する

納品を確認する

概要

・顧客からの見積もり依頼を受ける

・顧客の過去の受注情報を照会する

・顧客の見積もり情報を登録する

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

act 業務フロー

営業 物流 経理

見積書作成

受注登録

出庫作業

開始

終了

見積承認

見積フォロー 営業承認者

営業担当者

受注承認

請求書発行

入金確認

督促状の発行

開始出荷指示

検収登録物販の場合は出荷指示

サービスの場合は顧客

サービス設定を行う

終了

顧客サービスの設定

受注残高を 確認

キャンセル

終了

[サービスの場合][物販の場合]

class CRUDモデル

<<機能>>会計計上

<<機能>>出荷情報取

<<機能>>売上データ作成

<<機能>>見積登録

<<機能>>見積消込

<<機能>>受注登録

<<機能>>受注消込

<<機能>>承認登録

出荷指示

- 受注番号- 出荷指示日- 出荷指示番号

受注

- 受注番号- 受注日- 得意先- 合計金額- 消費税額- 値引額

受注明細

- 商品- 数量- 単価- 金額- 備考

決済情報

- 決済方法- 決済方法別詳細情報

納品先情報

- 住所- 連絡先

見積もり

- 見積番号- 見積日- 得意先- 消費税額- 値引額

見積明細

- 商品- 数量- 単価- 金額- 備考

<<機能>>出荷指示

<<機能>>顧客サービル設定

<<機能>>納品登録

出荷指示明細

- 受注番号- 商品- 出荷日- 数量- 納品日

顧客サービス

- 受注番号- 得意先- サービス開始日- サービス終了日- サービス種類

<<機能>>出庫確認

<<CRUD>>

<<U>>

<<R>>

<<R>>

<<R>>

<<CRUD>>

<<RU>>

<<CRUD>>

<<CRUD>>

<<CRUD>>

<<U>>

<<U>>

<<CRUD>>

<<R>>

<<R>>

<<CRUD>>

<<R>>

<<CRUD>>

<<CRUD>>

<<U>>

<<R>>

<<CRUD>>

uc 販売管理_UC&機能

受注を登録する

<<在庫管理>>

在庫引当をする

<<在庫管理>>

在庫引当を取り消す

出荷指示する

<<在庫管理>>

商品を出庫する

売上を 計上する請求書を作成する

入金を確認する

債権の消込を行う

受注残を 照会する

受注を消し込む

見積もりを登録する

<<在庫管理>>

在庫を確認する

見積もりを消し込む

入金を計上する

起票を承認する

督促状を発行する

<<機能>>受注登録 <<機能>>

見積消込

<<機能>>見積登録

<<機能>>受注消込

<<機能>>承認登録

<<機能>>会計計上

<<機能>>売上データ作成

<<機能>>出荷情報取得

<<機能>>督促情報作成

<<機能>>出荷指示

顧客サービスを 設定する

フォローを記録する

納品を確認する

<<機能>>顧客サービス設定

<<機能>>フォロー登録

<<受信>>出庫通知

<<受信>>納品通知

<<機能>>出庫確認

<<機能>>入金登録

<<機能>>納品登録

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>><<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

clas s 画面・帳票

未出荷分を受

注残とする

見積登録

- 見積番号- 見積日- 得意先- 合計金額- 消費税額- 値引額

受注登録

- 受注番号- 受注日- 得意先- 合計金額- 消費税- 値引き

出荷指示

- 出荷指示ID- 受注番号- 出荷指示日

受注残照会

- 受注番号- 得意先

伝票承認

- 伝票番号- 承認状態- 承認者

見積明細

- 商品- 数量- 単価- 金額- 備考

受注明細

- 商品- 数量- 単価- 備考

出荷指示明細

- 商品- 出庫済数量

在庫管理システムからのイ

ベントの分析により出荷処

理の詳細が分かってきた

見積フォロー登録

- フォロー日- フォロー担当者- 見積番号

顧客サービス設定

- 受注番号- サービス- 開始- 停止

納品登録

- 出荷指示ID- 納品日

検収登録

- サービスID- 検収日- 検収担当

uc 販売管理_UC&画面

在庫管理

受注を登録する

<<在庫管理>>

在庫引当をする

<<在庫管理>>

在庫引当を取り消す

出荷指示する

<<在庫管理>>

商品を出庫する

<<在庫管理>>商品を入庫する

<<購買管理>>

商品を 発注する

売上を計上する

請求書を作成する

入金を確認する

債権の消込を行う

受注残を照会する

受注を消し込む

見積もりを登録する

<<在庫管理>>

在庫を確認する

見積もりを消し込む

入金を計上する

起票を承認する

在庫照会

在庫引当

在庫引当取消

督促状を 発行する

検収を登録する

売上計上基準が出荷基準の

場合は出庫タイミングで計

上、検収基準の場合は、検

収確認のタイミングで計上

見積登録

- 見積番号- 見積日- 得意先- 合計金額- 消費税額- 値引額

受注登録

- 受注番号- 受注日- 得意先- 合計金額- 消費税- 値引き

出荷指示

- 出荷指示ID- 受注番号- 出荷指示日

受注残照会

- 受注番号- 得意先

請求書

督促状

入金登録

伝票承認

- 伝票番号- 承認状態- 承認者

フォローを記録する

見積フォロー登録

- フォロー日- フォロー担当者- 見積番号

顧客サービスを設定する

顧客サービス設定

- 受注番号- サービス- 開始- 停止

納品を確認する 納品登録

- 出荷指示ID- 納品日

検収登録

- サービスID- 検収日- 検収担当

受注照会

- 受注番号- 受注日- 得意先- 合計金額- 消費税- 値引き

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

stm プロトコル

受注

[受注]

[入金]

物販

開始見積済

見積フォロー済

未入金

入金あり

一部入金済 全部入金済

受注済

サービス提供

サービス提供中

サービス提供終了

終了

出庫待ち 出庫中 出庫済み

検収済

納品済

[納品確認が不要]

出庫指示 [在庫有り]

入金通知 [請求残=入金額]

受注登録

受注登録

入金通知 [請求額=入金額]

入庫 [在庫あり]

顧客サービス設定[開始指示]

出荷指示[在庫なし]

出庫通知 [未出荷分なし]

サービス利用[ワンタイム契約]

出庫通知 [未出荷分あり]

見積フォロー登録

[検収が必要ない]

顧客サービス設定[停止指示]

検収登録 [検収が必要な場合]

納品登録 [納品確認が必要]

入金通知 [請求額>入金額]売上情報登録

act イベント

<<受信>>出庫通知

<<送信>>出庫指示

<<受信>>納品通知

在庫管理

在庫引当情報

- 受注番号- 商品- 数量

<<送信>>在庫引当

<<受信>>在庫引当取

出庫指示を

受け付ける

出庫したこと

を通知する

受領書を受け取り

納品を確認したこ

とを通知する

在庫を引き

当てる

引き当てた在庫を取

り消す

出荷指示情報

- 受注番号- 出荷指示日- 出荷指示番号

出荷指示明細情報

- 受注番号- 商品- 出荷希望日- 数量- 納品日

出庫商品情報

- 受注番号- 商品- 出荷日- 数量

uc コンテキスト

B2B_基幹システム

営業担当者

物流担当者 経理

営業承認者

在庫管理

(from 基幹システム)

会計システム

(from 基幹システム)

class データモデル

債権管理

販売管理

受注

- 受注番号- 受注日- 得意先- 合計金額- 消費税額- 値引額

見積もり

- 見積番号- 見積日- 得意先- 消費税額- 値引額

納品先情報

- 住所- 連絡先

決済情報

- 決済方法- 決済方法別詳細情報

出荷指示

- 受注番号- 出荷指示日- 出荷指示番号

受注明細

- 商品- 数量- 単価- 金額- 備考

入金

- 入金日- 入金元- 入金額

見積明細

- 商品- 数量- 単価- 金額- 備考 商品

- 商品CD- 商品名- 単価- 商品カテゴリ

取引先

- 取引先CD- 取引先名

請求

- 請求日- 請求先- 請求金額

取引先決済情報

- 決済方法- 決済方法別詳細情報

取引先納品先情報

- 住所- 連絡先

取引先別単価

- 商品CD- 取引先CD- 取引先別単価

出荷指示明細

- 受注番号- 商品- 出荷日- 数量- 納品日

顧客サービス

- 受注番号- 得意先- サービス開始日- サービス終了日- サービス種類

22

システム地図 EA版c lass 関連モデル

オーダー部門

(from 運用時コンテキ

スト)

システム部門

(from 運用時コンテキ

スト)

営業

(from 運用時コンテキ

スト)

物流

(from 運用時コンテキ

スト)

経営者

(from 運用時コンテキ

スト)

顧客

(from 運用時コンテキ

スト)

運用時コンテキスト::入荷システム

運用時コンテキスト::出荷システム

運用時コンテキスト::決済システム

(from ユースケースモデル)

オーダーを取り消す

(from ユースケースモデル)

オーダーを完了する

(from ユースケースモデル)

オーダーを照会する

(from ユースケースモデル)

オーダー状況の確認する

(from ユースケースモデル)

入荷商品を登録する

(from ユースケースモデル)

入金額を補正する

(from ユースケースモデル)

出荷を完了する

(from ユースケースモデル)

出荷を指示する

(from ユースケースモデル)

商品を受注する

(from ユースケースモデル)

商品を発注する

(from ユースケースモデル)

商品を登録する

(from ユースケースモデル)

商品を説明する

(from ユースケースモデル)

販売状況を照会する

画面モデル::オーダー取り消し

- オーダーID

画面モデル::オーダー照会

- 顧客名- オーダー日- 状態

画面モデル::カート処理

- オーダーID

画面モデル::商品売上詳細

- 商品名- 売上数量- 売上金額

画面モデル::商品登録画面

- 商品名- 取引先- 荷姿- 発注単位- 商品カテゴリ

画面モデル::商品説明

- 商品カテゴリ- 商品名- 商品説明- 価格

画面モデル::決済処理

- 顧客名- 住所- 決済方法

入金通知

(from イベントモデル)

<<受信>>出荷完了

通知

(from イベントモデル)

<<送信>>出荷指示

(from イベントモデル)

オーダー取り消し

(from アクター関連機能)

カート処理

(from アクター関連機能)

受注照会

(from アクター関連機能)

商品登録

(from アクター関連機能)

商品説明

(from アクター関連機能)

決済情報登録

(from アクター関連機能)

発注登録

(from アクター関連機能)

販売状況照会

(from アクター関連機能)

入金登録

(from 外部システム関連機能)

出荷完了記録

(from 外部システム関連機能)

出荷指示通知

(from 外部システム関連機能)

発注消し込み

(from 外部システム関連機能)

データモデル::オーダー商品

- 数量 データモデル::オーダー情報

- オーダーID- オーダー日- 数量- 決済方法

データモデル: :パッケージ

- 商品名- 荷姿- 商品カテゴリ- 単価

データモデル: :入金情報

- 入金日- 入金者名- 金額

データモデル::出荷情報

- 出荷番号- 出荷日

データモデル::出荷指示情報

- 出荷予定日- 入荷待ちの有無

データモデル::取引先

- 名前- 締め日

データモデル::商品

- 発注単位- 追加発注禁止

データモデル::送り先情報

- 送り先名- 郵便番号- 住所- 電話番号

{なし}<<CRUD>>{なし}

1

1

1

受信データ

{なし}

<<R>>

{なし}

{なし}

<<R>>

{なし}

<<C>>

{なし}

出荷予定を確認する

{なし}

{なし}送信情報

{なし}

{なし}

<<CRUD>>

{なし}

<<R>>

1

1

{なし}<<CRUD>>{なし}

{なし}

新規受注を確認する

{なし}

*オーダー商品

*

1

{なし}

<<C>>

{なし}

0..1

<<R>>

複数のダイアグラムで作成したものを1枚のダイアグラムに集めるとシステム地図になる

23

システム地図 RDRA Map Maker

24

モデルの追加

Drag&Drop

右ボタン

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

Drag&Drop

③新規作成

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

右ボタンで追加メニュー「add/XXX」

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

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

⑥連続追加ダイアログ行単位でアイコンを連続追加する「メニュー/ModelForm」

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

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

⑤追加位置マーカー

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

⑦アイコンの変更・削除

⑧関連線を引く

25

Viewの操作新しいビューの追加

新しいビューの追加

ダブルクリックで編集モードに

26

その他操作

表示領域に合わせて拡大縮小

View上に存在するものは「黒」存在しないものは「青」で表示される

27

複数ビュービュー複数ビューの管理

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

選択されたモデルの一覧を表示

28

貸会議室.com

貸会議室.com

会社の空き会議室貸します

貸主会議室利用者

会議室登録

サービス利用申請

利用料振込

利用状況照会

会員登録

審査

公開

会議室検索

精算

会議室予約

予約確定メール

会議室利用 管理

決済代行支払 入金 要求:空いている会議室を有効利用したい

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

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

29

貸会議室.com システム地図コンテキスト

アクター外部システム

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

システム機能データ

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

30

システム地図を素早く作成するポイント方針

粒度を合わせる関連を使って説明できること

テクニック細かいルールはビジネスルールとして別に書き出す今回は切り分けだけ行い詳細化しない

ビジネスルールの整理分類

アクターの分類サービスの分類取引形態の分類決済方法の分類

組合せ上記サービスの組み合わせ

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

32

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

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

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

33

RDRAプロファイル

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

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

クイックリンク

34

cla s s データモデル

取引先

- 名前- 締め日

商品

- 発注単位- 追加発注禁止

オーダー商品

- 数量

出荷情報

- 出荷番号- 出荷日

オーダー情報

- オーダーID- オーダー日- 数量- 決済方法

送り先情報

- 送り先名- 郵便番号- 住所- 電話番号

出荷指示情報

- 出荷予定日- 入荷待ちの有無

入金情報

- 入金日- 入金者名- 金額

パッケージ

- 商品名- 荷姿- 商品カテゴリ- 単価

*

0..11

1

1

11

1

*

オーダー商品

EAを使ったRDRA

cust om 画面モデル

<<画面>>商品登録画面

- 商品名- 取引先- 荷姿- 発注単位- 商品カテゴリ

<<画面>>販売状況照会

- 月- 商品カテゴリ

<<画面>>商品説明

- 商品カテゴリ- 商品名- 商品説明- 価格

<<画面>>カート処理

- オーダーID

<<画面>>オーダー照会

- 顧客名- オーダー日- 状態

商品売上詳細

- 商品名- 売上数量- 売上金額

詳細説明

- 商品説明

カート内商品

- 商品名- 数量

<<画面>>決済処理

- 顧客名- 住所- 決済方法

受注商品

- 商品名- 数量

<<画面>>オーダー取り消し

- オーダーID

uc ユースケースモデル

商品販売サイト

<<入荷システム>>入荷商品を登録する

<<出荷システム>>出荷を完了する

<<出荷システム>>出荷を指示する

オーダーを照会する

商品を登録する

商品を説明する

<<入荷システム>>商品を発注する

販売状況を照会する

オーダー部門

営業

物流

顧客

オーダーを取り消す

オーダーを完了する

商品を受注する

入金額を補正する

<<出荷システム>>オーダー状況の確認

する

新規受注を確認する

出荷予定を確認する

act オーダー業務

商品購入

入金確認

出荷指示

出荷完了指示

開始

終了

オーダー確認

支払い

出荷業務

入金額の差違

入金の差違の解消

オーダー取り消し

オーダー継続

配達完了メール通知待ち

オーダー完了登録

オーダー状況の確認

メール確認

入金額と請求額が一致する

入金額と請求額の差違がある

キャンセル

キャンセルしない

Step By Step

35

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

A-35

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

システム外部環境

システム境界

システム

もの

サービス

利害関係者

ユーザ

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

目的・役割

責務

役割

目的・役割

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

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

モデリングのヒント:最初は関わりがあると思われるアクターと外部システムを全て出す。システムの目的は最初は漠然としたものでもよい。徐々に明らかにする

36

2.要求を捉える

A-36

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

システム外部環境

システム境界

システム

ものサービス

利害関係者ユーザ

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

目的・役割

要求

要求

要求モデル

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

モデリングのヒント:ヒアリングしたものはそのまま加工せずに要望として洗い出す。他のモデル作成中に「何々できること」のようにシステムとして実現すべき事が明らかになったときは要求として追加する

37

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

A-37

コンテキストモデル

システム価値

システム外部環境

システム境界

システム

利害関係者

ユーザ

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

目的・役割

業務モデル

業務

責務

価値

レーン レーン

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

モデリングのヒント:作業の平行性を意識する。入力等の負荷がかかる作業は受益者負担が好ましい。作業の分岐条件はビジネスルールとなる。

38

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

A-38

システム価値

システム外部環境

システム境界

システム

利害関係者

ユーザ

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

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

概念モデル

概念

概念業務

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

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

39

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

A-39

システム価値

システム外部環境

システム境界

システム

利害関係者

ユーザ

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

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

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

コピー

ユースケースモデル

コピー

中間モデル中間モデル

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

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

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

モデリングのヒント:主語と動詞を明確にする「XXXをZZZZする」のような形式システムとの接点を明らかにする。ソフトウェアの機能ではない。

40

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

A-40

システム価値

システム外部環境

システム境界

システム

画面・帳表モデル

ユースケースモデル

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

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

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

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

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

モデリングのヒント:画面や帳表のレイアウトは別途標準を規定してから作成する。顧客とは画面のラフスケッチで打ち合わせする

41

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

A-41

コンテキストモデル

システム価値

システム外部環境

システム境界

システム

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

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

目的・役割

イベントモデル

外部システム

通信電文などの資料

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

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

42

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

A-42

システム価値

システム外部環境

システム境界

システム

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

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

イベントモデル

外部システム

プロトコルモデル

トリガー/作用

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

通信電文などの資料

機能モデル:機能

作用を機能に対応させる

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

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

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

43

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

A-43

システム価値

システム外部環境

システム境界

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

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

データモデル

システム

データ

機能

機能

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

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

モデリングのヒント:DB設計を意識しない。ビジネス上必要なデータを明らかにする

44

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

A-44

システム価値

システム外部環境

システム境界

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

データモデル

システム 機能モデル

ユースケースモデル

機能複合モデル

データ 機能機能

UC

機能

プロトコルモデル

アクション

ドメインモデル

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

45

その他 大事なことなぜUMLを使うのか

混乱を防ぐためには合意を取って議論を積み重ねることが大事合意のためには

みんなで考え みんなで理解し みんなで共有する視覚化がその第1歩

議論を積み重ねるためには同じ表現方法で洗練化する

次から次に新しい資料を作らない

複雑な構造は図的な表現方法が有効様々な視点から物事を整理出来る

言葉よりも端的に表現できる 自然言語は曖昧になりやすい

要件定義を個人毎の並行作業として進めていませんか?なぜ平行性を高めるといけないのか

システムの方向性をいつまでたっても決められないシステムとして組み立てていかない