シリーズ: モデルベース要件定義手法RDRA
- 要件定義手法RDRAの概要と全体像
- RDRAによる要件定義の進め方〜第1フェーズ:枠組みを作る
- RDRAによる要件定義の進め方〜第2フェーズ:要件を組み立てる
- RDRAによる要件定義の進め方〜第3フェーズ(1):システムレイヤーの要素同士を関連付ける
- RDRAによる要件定義の進め方〜第3フェーズ(2):矛盾を解消し、整合性を高める(本記事)
- RDRAの成果物と設計プロセスとの連携
- RDRA Agentの紹介(近日公開予定)
- RDRAと見積(近日公開予定)
TRACERYプロダクトマネージャーの haru です。
RDRAは、システムを構成する要素同士の関係(Relationship)を定義することで、システム全体の構造を明確に捉え、可視化できる点が大きな特徴です。
下図は、「RDRA定義・分析Sheet」におけるシート間の関連を示しています。

RDRAには、システムを構成する要素同士の関係定義の整合性を自動的にチェックする仕組みが用意されています。
この仕組みにより、定義漏れや参照ミスといった不整合を早期に発見し、要件定義の精度を高めることができます。
さらに、ユースケースとアクター、外部システム、情報の関係を一つの表で確認できる仕組みも備えています。
これにより、要素同士の関連を俯瞰しながら、定義内容を体系的に見直すことができます。
本記事では、不整合を検出する仕組みと、要素間の関係を俯瞰する仕組みについて説明します。
不整合を検出する仕組み(「✖不整合」シート)
シート間の関連やシート内の関係定義に不整合がある場合は、「✖不整合」シートに一覧として表示されます(下図)。

「✖不整合」シートは、大きく次の2種類の不整合検出に分類されます。
- 参照された名前が定義されていない
- 定義されているが「BUC」シートで参照されていない
前者では4種類の不整合を、後者では1種類の不整合を検出します(下表)。
参照された名前が定義されていない
| 区分 | 不整合内容 |
|---|---|
| 他シートで未定義なものをBUCシートで参照しているもの | BUCシートから参照しているアクター、外部システム、情報、条件が、定義元のシートに存在しない。 |
| 情報シート | 情報シートから参照している状態モデル、バリエーション、情報*1が、定義元のシートに存在しない。 |
| 状態シート | 状態シートから参照しているユースケース、状態*2が、定義元のシートに存在しない。 |
| 条件シート | 条件シートから参照している状態モデル、バリエーションが、定義元のシートに存在しない。 |
定義されているが「BUC」シートで参照されていない
| 区分 | 不整合内容 |
|---|---|
| 定義されているが「BUC」シートで参照されていないもの | アクターシート、外部システムシート、情報シート、条件シートに定義されている要素が、BUCシートから参照されていない。 |
それぞれの区分の詳細については、以下で説明します。
「参照された名前が定義されていない」不整合
BUCシート、情報シート、状態シート、条件シートから参照している要素が、定義元のシートに存在しない場合に検出します。
以下では、4つの不整合チェックについて説明します。
他シートで未定義なものをBUCシートで参照しているもの
「BUC」シートでは、ユースケースや業務フローの「アクティビティ」に関連する要素として、他シートに定義されている要素名を参照します*3。
ここで参照した要素名が、該当するシートに定義されていない場合の不整合を検出します。対象となるシートは以下のとおりです。
- 「アクター」シート
- 「外部システム」シート
- 「情報」シート
- 「条件」シート

情報シート
「情報」シートでは、情報要素同士の関連に加え、状態遷移モデルやバリエーションとの関連も定義します。
- 情報要素同士の関連(「情報」シート内の参照)
- 情報の遷移を表す状態遷移モデルへの参照(「状態」シートへの参照)
- 情報の分類を示すバリエーションへの参照(「バリエーション」シートへの参照)
これらの参照先として指定した要素名が、定義元のシートに存在しない場合に不整合を検出します。

状態シート
「状態」シートでは、要素同士の関連として、以下の内容を定義します。
- 状態から遷移先の状態への関連(「状態」シート内の参照)
- 状態遷移に関わるユースケースへの参照(「BUC」シートへの参照)

条件シート
「条件」シートでは、ビジネスルールに基づく判定に用いる判定軸として、次の要素との関連を定義します。
- バリエーション(「バリエーション」シートへの参照)
- 状態モデル(「状態」シートへの参照)

「参照された名前が定義されていない」不整合の解消方法
「他シートで未定義なものをBUCシートで参照しているもの」、「情報シート」、「状態シート」、「条件シート」の不整合は以下の方法で解消します。
- 不整合を検出したシート(BUC、情報、状態、条件のいずれか)で参照している要素名が、定義元のシートに存在するかを確認し、原因に応じて修正する
- 不整合を検出したシートで参照している要素名が誤っている場合 → 不整合を検出したシートを修正する
- 定義元のシートに要素が定義されていない場合(または定義元シートの要素名が誤っている場合) → 定義元のシートを修正する
定義されているが、参照されていない
既に説明した他の4つの区分とは性質が異なり、定義した要素が実際のユースケースの中で使用されているかを確認するチェックです。
定義された要素が他のシートから参照されていない場合、その要素はシステムのユースケースや業務の中で使用されておらず、システムに関係のない不要な定義である可能性があります。
「定義されているがBUCシートで参照されていない」不整合
「BUC」シートでは、アクター、外部システム、情報、条件などを定義する各シート(定義元シート)で定義された要素名を参照します。
この不整合チェックでは、定義元シートで定義されているにもかかわらず、BUCシートから参照されていない要素を検出します。
これにより、次のような内容を確認できます。
- システムで使用されないアクター、外部システム、情報、条件が定義されている
- 業務やユースケースの洗い出しが十分に行われていない

「定義されているが「BUC」シートで参照されていない」不整合の解消
「定義されているが「BUC」シートで参照されていない」場合の不整合は以下の方法で解消します。
- 定義元シートで定義されている要素名に該当する要素が、「BUC」シートで使用されているかを確認する(参照名称の不一致の確認)
- 「BUC」シートの参照名が誤っている場合は、「BUC」シートを修正する
- 定義元シートの要素名が誤っている場合は、定義元シートの要素名を修正する
- 定義元シートで定義されている要素名が、「BUC」シートで使用されていない場合(参照名称の不一致ではない場合)
- 「BUC」シートで参照する必要がある場合は、参照を追加する
- 「BUC」シートで参照する必要がない場合は、定義元シートの定義を削除する
要素間の関係を俯瞰する仕組み(「UC_PIVOT」シート)
「✖不整合」シートの不整合を解消したら、「UC_PIVOT」シート(下図)を参照し、ユースケースを軸に定義全体を俯瞰しながら、定義全体の妥当性を確認します。

「UC_PIVOT」シートは、ユースケースと各要素の関係を、横軸と縦軸の2つの視点で確認します。
横軸は、ユースケースおよびビジネスユースケース単位での確認です。どのようなアクターや外部システムが関係し、どのような情報を扱うかを把握できます。
縦軸は、アクター、外部システム、情報などの各要素を軸に、どのユースケースやビジネスユースケースと関係しているかを確認します。
例えば、上記のピボットテーブルでは、アクターの「会員」を軸に見ると、「貸出期限を確認する」「予約図書を取り置く」「貸出(ビジネスユースケース)」と関係していることが分かります。
ユースケースの欄が空白の場合は、該当のアクターが業務フローの中でシステムのユースケースとは関係せず、アクティビティのみと関係していることを示しています。
最後に
RDRAでは、システムを構成する要素同士の関係を定義することで、システム全体の構造を明確に捉えます。しかし、要素同士の関係が増えるほど、定義漏れや参照ミスといった不整合が発生しやすくなります。
本記事で紹介した「✖不整合」シートは、そうした不整合を自動的に検出し、修正すべき箇所を明確にするための仕組みです。これにより、要素間の参照関係の誤りや、定義された要素が実際のユースケースで使用されていないといった問題を早期に発見できます。
また、「UC_PIVOT」シートを利用することで、ユースケースを軸に、アクター・外部システム・情報などの要素との関係を俯瞰的に確認できます。これにより、個々の定義だけでは見えにくい関係の偏りや抜け漏れを把握し、定義全体の妥当性を見直すことができます。
このように、不整合の検出と全体俯瞰の仕組みを組み合わせることで、RDRAでは要件定義の整合性と網羅性を高めることができます。
シリーズのここまでで、RDRAによる要件定義の進め方の各フェーズを説明しました。
次回の記事では、RDRAで作成した成果物が設計プロセスとどのようにつながるのかを解説します。
参考書籍
*1:情報シート内に定義
*2:状態シート内に定義
*3:RDRAによる要件定義の進め方〜第2フェーズ:要件を組み立てるのアクター、外部システムを関連付ける、情報をユースケースに関連付ける、条件をユースケースに関連付けるを参照のこと。

