TRACERY Lab.(トレラボ)

TRACERY開発チームが、要件定義を中心として、システム開発で役立つ考え方や手法を紹介します。

RDRAによる要件定義の進め方〜フェーズ1:枠組みを作る

シリーズ: モデルベース要件定義手法RDRA

  • 要件定義手法RDRAの概要と全体像
  • RDRAによる要件定義の進め方〜フェーズ1:枠組みを作る(本記事)
  • RDRAによる要件定義の進め方〜フェーズ2:要件を組み立てる(近日公開予定)
  • RDRAによる要件定義の進め方〜フェーズ3:整合性・網羅性を確認し精度を上げる(近日公開予定)
  • RDRAの成果物と設計フェーズとの連携(近日公開予定)
  • RDRA Agentの紹介(近日公開予定)
  • RDRAと見積(近日公開予定)

TRACERYプロダクトマネージャーの haru です。

RDRAによる要件定義は、要件を個別に整理するのではなく、まず全体の構造を明らかにし、その上で要素同士の関係性を定義しながら段階的に具体化していく点に特徴があります。

そのため、要件定義は主に次の3つのフェーズに分けて進めます。

  • フェーズ1:枠組みを作る(議論の土台作り)
  • フェーズ2:要件を組み立てる
  • フェーズ3:整合性・網羅性を確認し、精度を高める(要件定義の仕上げと仕様化の準備)

なかでもフェーズ1は、後続フェーズで扱う要件の方向性やスコープを定める重要な段階です。

ここで認識のずれや抜け漏れがあると、以降の要件定義全体に影響を及ぼします。

本記事では、このフェーズ1に焦点を当て、RDRAを用いて枠組みをどのように構築していくのかを具体的に説明します。

フェーズ1の進め方の概要と目的

フェーズ1では、RDRAモデルの枠組みとなる要素を定義します。

  • システム価値レイヤー
    • 機能要求、非機能要求
    • アクター
    • 外部システム
  • システム外部環境レイヤー
    • 業務
    • ビジネスユースケース(BUC)
    • アクティビティ
  • システム境界レイヤー
    • ユースケース(UC)
  • システムレイヤー
    • 情報
    • 状態

フェーズ1の進め方の概要

定義は、システム価値レイヤーから始め、システム外部環境レイヤー、システム境界レイヤー、システムレイヤーの順に、左から右へ進めます。

フェーズ1の目的は議論の土台を作ること

フェーズ1の目的は、システム化対象となる業務全体とシステム化の範囲を早期に可視化し、関係者間で共通認識を形成するための「議論の土台」を整えることです。

そのため、このフェーズでは詳細な正確さには踏み込まず、後続フェーズでの精緻化を前提として、対象となる要素を漏れなく洗い出すことを重視します。

参考書籍『RDRA3.0 ハンドブック: 根拠を持った要件定義を素早く正確に』では、フェーズ1は時間をかけすぎず、スピーディーに要素を洗い出すことを重視すると述べられています。そのため、以下のような目安で時間を配分することが推奨されています(下表)。

フェーズ 内容 時間の割合 1か月(20日)の場合
1 枠組みを作る 10% 2日
2 要件を組み立てる 60% 12日
3 整合性・網羅性を確認し精度を上げる 30% 6日

システム価値レイヤーを定義する

第1フェーズでは、システム価値レイヤーを構成するすべての要素(機能要求、非機能要求、アクター、外部システム)を対象とします。

これら、システムが「何の価値を提供するのか」を表す要素を最初に明らかにすることで、以降の要件定義を進めるための明確な起点を定めます。

システム価値レイヤーを定義する

機能要求、非機能要求を記載する

要件定義の開始時点で、すでに明らかになっている機能要求および非機能要求を、「機能要求」シートと「非機能要求」シートに記載します。

これら2つのシートに記載された内容は、他のRDRAシートとは関係付けられず、RDRA Graphにも反映されません。

本シートの目的は、要件定義を進める過程において、開発にあたり前提となっている大きな要求を立ち戻って確認できるようにすることです。

具体的な機能要求は、RDRAの他のシート(例:「BUC」シートにおけるユースケースや画面)として定義されるため、本シートには詳細な要求は記載しません。

そのため、システムが目指すべき方向性を示す観点から、特に重要な要求のみに絞って記載します。

機能要求、非機能要求をリストアップする

上図の「機能要求」シート、「非機能要求」シートの「アクター」には、ヒアリングなどで要求を出したアクターの名前を記載します。

アクターをリストアップする

システムに関わる人の役割(アクター)を「アクター」シートに定義します。

アクターをリストアップすることで、後続の定義において、業務やアクティビティについて、誰の役割として行われるものか、システムで支援すべき作業か、どの立場の利用を想定したユースケースかを判断できるようになります。

アクターをリストアップする

外部システムをリストアップする

関係する外部システムを「外部システム」シートに記載します。

第1フェーズでは詳細なインターフェース設計には踏み込まず、社内の他システムや外部サービスとの連携有無と関係性を整理します。

これにより、どの機能を自システムで担い、どの機能を外部システムに委ねるのかを判断できるようになり、後続のユースケース定義や外部インターフェースの検討を円滑に進められるようになります。

外部システムをリストアップする

システム外部環境レイヤーを定義する

第1フェーズでは、システム外部環境レイヤーを構成するすべての要素(業務、ビジネスユースケース、アクティビティ)を対象とします。

ただし、第1フェーズの目的は、システムの全体像を明らかにし、関係者間で共通認識を形成するための「議論の土台」を整えることにあるため、すべての要素を正確に洗い出す必要はありません。

業務やビジネスユースケースを洗い出すことで、システム化対象のスコープがおおよそ把握できれば、このフェーズの目的は達成できます。

システム外部環境レイヤーを定義する

業務、ビジネスユースケースを洗い出す

システム化の対象となる「業務」と、その業務を構成する「ビジネスユースケース」を、「BUC」シートの「業務」列と「BUC」列に定義します(下図)。

BUC」シートは、RDRAによる要件定義のコアとなるシートです。

業務、ビジネスユースケースを洗い出す

ここでいう1つの「業務」とは、部署や課やチームなどの組織単位で担われる業務のまとまりを指します。

ビジネスユースケースは業務フローを表す単位であり、1つのビジネスユースケースは1つの業務フローに対応します。

アクティビティを洗い出す

ビジネスユースケース(1つの業務フロー)を構成する「アクティビティ」を洗い出し、「BUC」シートの「アクティビティ」列に記載します(下図)。

アクティビティとは、業務フローの中で実行される個々の作業や行動を指します。

アクティビティを洗い出すことで、1つのビジネスユースケースが、業務フローを一連の目的を持った流れとして過不足なく表しているかを確認できます。

その結果、ビジネスユースケースが大きすぎる場合は分割し、細かすぎる場合は統合することで、後続フェーズに進むための粒度を揃えられます。

アクティビティを洗い出す

システム境界レイヤーを定義する

第1フェーズでは、システム境界レイヤーの要素として、ユースケース(UC)を対象とします。

ユースケースを洗い出すことで、どの業務をシステムでサポートするのかが明らかになり、システム化の範囲を可視化できます。

システム境界レイヤーを定義する

ユースケースのリストアップ

業務フローを構成するアクティビティのうち、システムを使用するアクティビティに対してユースケースを定義し、「BUC」シートの「UC」列に記載します(下図)。

「アクティビティ」列の右隣にユースケースを記載することで、当該アクティビティに対応するユースケースであると定義されます。

ユースケースのリストアップ

システムレイヤーを定義する

第1フェーズでは、システムレイヤーの要素として、情報および状態を対象とします。

「情報」とは、システムが扱う概念的なデータおよびそれらの関係を指します。

「状態」とは、業務上管理すべき情報が取り得る状態*1を指します。

ここでは、業務、ビジネスユースケース、業務フロー(アクティビティ)、ユースケースを洗い出す過程で現れた概念を、「情報」や「状態」として整理し、一覧化します。

詳細な構造や厳密な定義には踏み込まず、まずはシステムで扱う対象を把握することを重視します。

これにより、システムがどのようなデータを扱うのかという観点からシステムの輪郭が明確になります

また、業務は状態の変化を前提に進むため、状態を整理することで、業務とシステムの関係性を捉えられるようになります。

システムレイヤーを定義する

情報のリストアップ

システムで扱うデータを「情報」シートに記載します(下図)。

シート内の「コンテキスト」とは、同じ役割を持つ情報、状態、条件、バリエーションをまとめる単位です。

システムの特定領域(ドメイン)におけるシステムレイヤーの要素を整理し、まとめて管理するために利用します。ドメイン駆動設計における「区切られた文脈(Bounded Context)」を想定すると、設計プロセスへつなげやすくなります。*2

情報のリストアップ

状態のリストアップ

状態を、「状態」シートに記載します(下図)。

状態のリストアップ

最後に:第1フェーズの成果物の全体像

第1フェーズの成果物の全体像を下図に示しました。

第1フェーズの成果物の全体像

フェーズ1では、企画プロセスで検討された内容を前提に、「要求の確認」と「業務要件定義」を重点的に進めます。

これは、RDRAにおけるシステム価値レイヤーおよびシステム外部環境レイヤーに相当します。

また、業務要件定義からシステム要件定義へとつなぐために、システム境界レイヤーとしてユースケースを抽出し、あわせて情報状態を洗い出すことで、システム全体の輪郭を明らかにしました。

これらの作業を通じて、要件定義全体の前提となる「枠組み」が定まります。フェーズ1で行っているのは要件を細かく詰めることではなく、システムの価値、業務の全体像、システム化の範囲を構造として整理し、関係者間で共有可能な状態を作ることです。

この段階では、正確さや完成度よりも、後続フェーズで議論を進めるための共通の前提を揃えることを重視します。

フェーズ1で認識のずれやスコープの誤りを残したまま進むと、フェーズ2以降で要件を精緻化しても、手戻りや判断の迷いが生じやすくなります。

続くフェーズ2では、フェーズ1で整えた枠組みを前提として、「システム要件定義」を中心に要件を具体化していきます。

具体的には、次のような作業を通じて、要件同士の関係性を明確にしていきます。

  • ユースケースの詳細化(画面、イベント、情報、条件、タイマーの抽出とユースケースへの関連付け)
  • システムレイヤーの詳細化(情報、状態、条件、バリエーションの定義)
  • アクターと画面の関連付け(どのUIからアクターが操作するかを定義する)
  • 外部システムとイベントの関連付け(外部システムと外部インターフェースの関連付け)

次回は、フェーズ2の進め方を説明します。

参考書籍

この記事を書いた人
haru

佐藤治夫。株式会社ビープラウド代表取締役社長。TRACERYのプロダクトマネージャー。エンジニアとして活動を始めて以来、モデリングを中心としたソフトウェアエンジニアリングを実践している。Xアカウント: https://x.com/haru860

要件定義手法RDRAの概要と全体像

シリーズ: モデルベース要件定義手法RDRA

  • 要件定義手法RDRAの概要と全体像(本記事)
  • RDRAによる要件定義の進め方〜フェーズ1:枠組みを作る
  • RDRAによる要件定義の進め方〜フェーズ2:要件を組み立てる(近日公開予定)
  • RDRAによる要件定義の進め方〜フェーズ3:整合性・網羅性を確認し精度を上げる(近日公開予定)
  • RDRAの成果物と設計フェーズとの連携(近日公開予定)
  • RDRA Agentの紹介(近日公開予定)
  • RDRAと見積(近日公開予定)

TRACERYプロダクトマネージャーの haru です。

要件定義は、システム開発の成否を左右する重要なプロセスです。しかし実務では、一定のフォーマットや手順に沿って整理していても、要件同士の関係性が十分に可視化されなかったり、関係者ごとに解釈がずれたり、設計段階で手戻りが発生したりと、多くの課題が生じがちです。

筆者は2020年から実プロジェクトで RDRA を活用してきました。いまでは、RDRAを使う前にどのように要件定義を進めていたのか思い出せないほど、日々の実務に深く根付き、なくてはならない手法になっています。要件の整理・構造化・合意形成が自然に進み、要件定義の質とスピードは大きく向上しました。

RDRA(ラドラ)(Relationship Driven Requirement Analysis)は、要件同士の関係性を構造的に整理し、ビジネスとシステムを一体として可視化するための要件定義手法です。関係者間で共通の前提と構造を共有しながら要件を具体化できるため、認識齟齬や手戻りの少ない開発を実現できます。

本記事では、RDRAの基本的な考え方から、V字モデルにおける位置付け、4つのレイヤー構造、さらに実務を支える各種ツールまで、RDRAの全体像を体系的に解説します。

RDRAの概要

RDRAは「Relationship Driven Requirement Analysis」の略で、株式会社バリューソースの神崎善司氏が提唱する要件定義手法です。

システムを構成する要素同士の関係(Relationship)を定義することで、システム全体の構造を明確に捉え、可視化することができます。

要件を構造的に捉えることの価値

要件を構造的に捉えることの価値は、要件を個々の点としてではなく、「関係性によって意味づけられた全体構造」として整理できる点にあります。

RDRAでは、要素同士の関係を起点に要件を定義するため、個々の機能やルールがどの要素と結び付いているのかを明確にしながら、要件を積み上げていくことができます。

その結果、要件の抜け漏れや重複、矛盾といった問題を要件定義の早い段階で発見しやすくなり、「なぜこの要件が必要なのか」「この要件がなくなると何が困るのか」といった説明も、論理的に行えるようになります。

これは、後工程での手戻りや、完成後に「使われないシステム」になるリスクを下げることに直結します。

さらに、変更や追加が発生した場合でも、関係性をたどることで影響範囲を把握できるため、感覚や経験に頼らない判断が可能になります。

その結果、開発者・業務担当者・意思決定者の間で共通の理解を持ちながら議論でき、要件定義における合意形成を安定して進められます。

システム開発全体(V字モデル)での位置づけ

RDRAは要件定義の手法であり、主にV字モデルにおける要件定義(業務要件定義、システム要件定義)に位置付けられます(下図)。

RDRAのシステム開発全体(V字モデル)での位置づけ

RDRAでは、企画プロセスで整理された事業の背景や狙い、要求を入力として受け取り、「システム価値レイヤー」で定義します。

業務要件定義の内容は、「システム外部環境レイヤー」、システム要件定義の内容は、「システム境界レイヤー」「システムレイヤー」の二つで定義します。

RDRAのレイヤーについては、後述します。

また、RDRAの成果物は、要件を関係性を含んだ構造として表現しているため、要件定義の後プロセスである基本設計に対しても、「なぜその機能が必要なのか」という意図を保ったまま情報を引き渡すことができます。

その結果、要件定義と設計の間で起こりがちな解釈のズレや属人化を防ぎ、V字モデル全体を通した一貫性のある開発を支える役割を果たします。

RDRAの全体像

RDRAの全体像を下図に示します。

RDRAの全体像

RDRAは4つのレイヤーで構成されます。以降では、各レイヤーの役割と、それぞれを構成する要素やモデルについて説明します。

システム価値レイヤー

システムが実現すべき価値に着目します。「このシステムは誰にとって、どのような価値を提供するか」を明らかにします。

要素 説明
要求 機能要求、非機能要求。システムで何を実現するか。
アクター システムを利用する人や組織の役割。
外部システム 連携が必要な既存システムや外部サービス。

システムレイヤーの要素を取りまとめるためのモデルには、以下のようなものがあります。

モデル 説明
アクター群 同じ役割をもつアクターをまとめる。 業務・BUCとの関わりを、俯瞰的な視点で見ることができる。
外部システム群 同じ役割をもつ外部システムをまとめる。業務・BUCとの関わりなど、俯瞰的な視点で見ることができる。

システム外部環境レイヤー

システムがどのように使われるかを表します。「誰が何の業務を行い、その結果どんな価値を提供するか」を業務フローとして示します。

要素 説明
業務 ビジネスの最上位のまとまり。例:販売管理や在庫管理など。
ビジネスユースケース(BUC) 業務フローの単位。
アクティビティ 人やシステムが行う仕事の単位。

システム境界レイヤー

ユーザーや他の外部システムがシステムとどう関わるかを示します。システムとのインターフェースを明確にします。

要素 説明
ユースケース(UC) システムが提供する具体的な機能単位。
画面 UI(画面や帳票等)
イベント 外部のシステムとのインターフェース。
タイマー ビジネス上の締切や実行タイミング。
情報 ユースケースから参照する。システムレイヤーの節を参照のこと
条件 ユースケースから参照する。システムレイヤーの節を参照のこと

システムレイヤー

システム内部を表現します。

要素 説明
情報 システムが扱う概念的なデータとその関係。
状態 業務上管理すべき対象のとりえる状態(「注文」の状態の例:「受注済」、「出荷準備中」など)。
条件 業務上またはシステム上のビジネスルール。
バリエーション ビジネス上認識している区分や種別。「会員ステータス」の例:「プラチナ」「ゴールド」「シルバー」

システムレイヤーの要素を取りまとめるためのモデルには、以下のようなものがあります。

モデル 説明
コンテキスト 同じ役割をもつ情報、状態、条件、バリエーションをまとめる。システムの特定領域(ドメイン)のシステムレイヤーの要素をまとめて管理する単位として利用できる
情報モデル 複数の「情報」をひとつのモデルにまとめたもの
状態モデル 複数の「状態」と、それらの間の遷移をまとめて定義したモデル

RDRAのモデルを定義するためのツール

RDRAには、目的に応じて複数のツールが用意されています。それぞれの役割と関係性を、下図に示します。

RDRAのモデルを定義するためのツール

RDRAによる要件定義作業の中心となるのが、「RDRA定義・分析Sheet」です。(図書館管理システムのサンプル

このシートでは、システムを構成する要素と、それらの関係性を表形式で整理・定義します。要件を関係性とともに構造化して記述することで、RDRAモデルの基盤となる情報を一元的に管理できます。

さらに、シートで定義した内容をグラフィカルなモデルとして視覚的に俯瞰するためのツールが「RDRA Graph」です。個々の要素のトレーサビリティ集約した単位での凝集度や結合度の把握など、さまざまな視点から定義情報を分析し、定義の精度を上げることができます。

RDRA Graphは「関連データシート」のデータをクリップボードにコピーし、シート内のリンクから起動できます。

RDRA Graphの画面が起動されたら、ヘッダメニューの「OBJECT LIST」や「DIAGRAM」からモデルを参照してください。なお、RDRA Graphで表示したモデルは参照専用です。

RDRA Graphの画面

また、LLMを活用してモデルの叩き台を生成する支援ツールとして、「RDRA ZeroOne」と「RDRA Agent」が用意されています。「RDRA ZeroOne」はWeb画面から、「RDRA Agent」はCLIから実行でき、RDRA形式のモデルデータを自動生成します。

これらのツールで生成したテキストデータを「RDRA定義・分析Sheet」に取り込むことで、要件を一から手作業で整理する負担を大幅に削減でき、要件定義の初期立ち上げを高速化できます。その結果、検討や、分析、合意形成といった本質的な作業に、より多くの時間を充てることが可能になります。

まとめ

本記事では、RDRAの基本的な考え方から、V字モデルにおける位置付け、4つのレイヤー構造、そして実務を支える各種ツールまで、RDRAの全体像を解説しました。

RDRAの本質は、要件を個別の項目として管理するのではなく、要素同士の関係性を軸にシステム全体を一つの構造として捉える点にあります。これにより、要件の抜け漏れや矛盾を早期に発見できるだけでなく、「なぜ必要なのか」を説明可能な、納得感のある要件定義を行えるようになります。

筆者自身、2020年から複数の実プロジェクトでRDRAを継続的に活用してきましたが、企画から設計へと情報を一貫した形で引き継ぎやすいため、解釈のズレや属人化を防ぎ、後戻りの少ない開発を実現できています。

また、GoogleSheet・RDRAGraph・LLMツールを組み合わせることで、構造化と可視化、そして自動生成を両立し、要件定義のスピードと品質を同時に高められる点も大きな強みです。

要件定義を「作業」ではなく「構造を設計するプロセス」として捉え直したい方にとって、RDRAは有効な選択肢の一つです。

次回からは、図書館システムのサンプルを題材に、RDRAの詳細について順を追って確認していきます。

tracery.jp

参考書籍

この記事を書いた人
haru

佐藤治夫。株式会社ビープラウド代表取締役社長。TRACERYのプロダクトマネージャー。エンジニアとして活動を始めて以来、モデリングを中心としたソフトウェアエンジニアリングを実践している。Xアカウント: https://x.com/haru860

V字モデルの各レイヤー(要件定義、運用テスト・システムテスト編)

シリーズ: システム開発の基礎

TRACERYプロダクトマネージャーの haru です。

この記事ではV字モデルのレイヤーのうち、「要件定義」プロセスと「運用テスト」「システムテスト」プロセスについて説明します。

V字モデルの各レイヤーの説明は以下の記事を参照してください。

tracery.jp

V字モデル上の「要件定義」と「運用テスト」「システムテスト」

業務/システムで、何を実現するかということに焦点を当てたWhatのレイヤーでは、「要件定義」プロセスと「運用テスト」プロセス、「システムテスト」プロセスを実施します。

Whatのレイヤーは、V字モデルのWhyレイヤー(企画のプロセスがある)の下にあり、「企画」プロセスで定めた「Why」を実現するためのレイヤーです。

V字モデル上の「要件定義」プロセスと「運用テスト」「システムテスト」プロセス

V字モデルでは、右側のプロセスが左側のプロセスの検証を行う役割を果たします。

要件定義は、大きく次の2つに分類されます。

  • 業務要件定義:事業の目的を達成するために、業務として「何を・どのように行うか」を明確にし、業務の目的・手順・ルールを整理する。
  • システム要件定義:業務要件を実現するために、システムとして「どのような機能・性能・制約で支援するか」を具体的に定める。

これら2つの要件定義は、開発後のテストプロセス(運用テスト、システムテスト)と対応します。

業務要件に基づいて実際の運用を確認するのが運用テスト、システム要件に基づいて動作を検証するのがシステムテストです。

それぞれの特徴を以下に整理します。

テスト名 主な観点 主な実施者
運用テスト - 業務要件の観点から、業務が実際に問題なく運用できるかを確認
- 操作手順や運用ルール、帳票・通知など業務成果物を検証
- 業務担当者
- ビジネス側責任者
システムテスト - システム要件の観点から、システム全体が仕様どおりに動作するかを確認
- 機能、性能、セキュリティなど非機能面も含めて検証
- システム開発者
- 品質保証担当者

運用テストとシステムテストは、本番稼働前の最終テストです。

特に、実運用に近い環境でテストを実施することで、環境差による不具合や想定外の業務上の問題を早期に発見しやすくなります(下図)。

運用テストとシステムテストの違い

以下、それぞれのプロセスを説明します。

要件定義プロセス

以下の図に、要件定義プロセスの全体像を示しました。要件定義は、大きく業務要件定義システム要件定義に分類されます(下図)。

要件定義プロセス

要件定義プロセスについては、『要件定義とはそもそも何か』の連載で説明していますので、詳細をご参照ください(以下は連載の第1回です)。

tracery.jp

運用テストプロセス

運用テストは、業務要件の観点から、業務が実際に問題なく運用できるかを確認します。

操作手順や運用ルール、帳票・通知など業務成果物を検証します。

ビジネス側が開発側に依頼した開発内容を検証するためという目的も含まれるので、『受け入れテスト』と呼ぶこともあります。

運用テストの観点

運用テストの目的は、業務要件定義で定めた業務の流れやルールが、システム上で正しく再現され、実際の運用として成立しているかを確認することです。

主に次の観点からテストを実施します。

  • 業務フローに沿って、システムを用いながら業務を一連の手順として遂行できるか
  • ユースケース(システムを利用する具体的な場面)において、想定どおりの操作・結果が得られるか

これらの業務観点に加え、運用全体の妥当性を確認するため、以下の観点からも検証します。

  • 事業要件が実際に満たされ、業務を通じて事業上の価値が発揮されているか
  • システム要件(機能要件・非機能要件)が、運用に必要な品質レベルを満たしているか

これらを総合的に確認することで、システムが業務運用を安全かつ確実に支える状態にあるかを最終的に評価します。

運用テストプロセスの観点

システムテストプロセス

システムテストは、システム要件の観点から、システム全体が仕様どおりに動作し、期待した品質を満たしているかを確認します。

機能要件・非機能要件をもとに、画面操作やバッチ処理、外部システムとの連携などを総合的に検証します。

開発側が作成したシステムが要件定義書どおりに実装されているかを確認する工程であり、システムの完成度と品質を保証する役割を担います。

システムテストプロセスの観点

システムテストの目的は、システム要件定義で定めた機能・性能・制約が、システム全体として統合的に動作し、要求どおりの品質を備えていることを確認することです。 開発工程の最終段階として、システムの完成度と運用準備性を総合的に検証します。

主に次の観点からテストを実施します。

  • システム要件(機能要件・非機能要件)が、運用に耐えうる品質水準を満たしているか
  • ハードウェア、ネットワーク、外部システム、ソフトウェアなど、関連要素が相互に連携し、全体として安定して動作するか

これらのシステム観点に加えて、運用フェーズでの実効性を確認するため、次の視点からも検証を行います。

  • 想定した業務フローやユースケースに沿って、利用者が業務を正確かつ効率的に遂行できるか
  • システムの稼働により、業務上求められる成果や情報が確実に得られるか

これらを総合的に検証することで、システムが要件定義段階で期待された品質を満たし、業務運用に移行できる状態であることを確信する段階が、システムテストです。

システムテストプロセスの観点

最後に

この記事では、V字モデルにおける「要件定義」プロセスと、「運用テスト」「システムテスト」プロセスの関係について解説しました。

「要件定義」プロセスは、システム開発において何を作るのか(What)を明確にします。

これに対応して、「運用テスト」は業務要件が実際の運用で満たされているかを、業務担当者が最終的に確認するプロセス、「システムテスト」はシステム要件が仕様どおり実現されているかを、開発者が最終的に検証するプロセスです。

運用に耐えうるシステムをリリースするためには、業務担当者の視点(業務が確実に遂行できるか)と、システム開発者の視点(システムが安定して動作するか)の双方からテストを実施することが不可欠です。

そのうえで、業務・システムが連携し、事業要件を満たしながら持続的に価値を生み出す状態を目指すことが重要です。

次回の記事では、V字モデルにおける「基本設計」プロセスと「結合テスト」の関係を説明します。

tracery.jp

この記事を書いた人
haru

佐藤治夫。株式会社ビープラウド代表取締役社長。TRACERYのプロダクトマネージャー。エンジニアとして活動を始めて以来、モデリングを中心としたソフトウェアエンジニアリングを実践している。Xアカウント: https://x.com/haru860

要件定義と設計の関係を体系的に理解する【全体像まとめ】

シリーズ: 要件定義とはそもそも何か

TRACERYプロダクトマネージャーの haru です。

システム開発において、要件定義と設計は密接に連動するプロセスです。

要件定義で整理された「何を作るか(What)」という要件を基に、設計では「どのように実現するか(How)」を具体化していきます。

本記事では、これまでの連載で解説してきた内容を整理し、要件定義と各種設計(ソフトウェアアーキテクチャ設計、クラス設計、データベース設計、画面・API・バッチ処理設計)との関係を体系的に説明します。

要件定義と設計の関係、全体像

下図に、本連載で説明してきた要件定義と設計の関係を示します。

要件定義と設計の関係、全体像

要件定義の目的とゴールは『設計プロセスを円滑に進めるための明確で具体的なインプットを提供すること』です。

以降で要件定義で作成された成果物をもとに、ソフトウェアアーキテクチャ設計、クラス設計、データベース設計、画面・API・バッチ処理設計といった各設計にどのようにつなげていくのかを順に解説します。

要件定義とソフトウェアアーキテクチャ設計の関係

ソフトウェアアーキテクチャは、システム構成図に示された各アプリケーションの構造を設計したものです。

コンポーネント間の連携方法、モジュールの責務分割、データの流れなど、ソフトウェア内部の構造を体系的に設計します。

この設計は、単に機能を実現するだけでなく、保守性・性能効率性・使用性・セキュリティといった非機能要件を実現することを目的とします。

適切なアーキテクチャ設計により、将来的な拡張や変更への柔軟性、安定した運用性が確保されます。

要件定義とソフトウェアアーキテクチャ設計の関係

詳しくは、以下の記事をご参照ください。

tracery.jp

要件定義とクラス設計の関係

クラスは、システム内で扱う「対象(オブジェクト)」を表現する基本単位です。

対象の性質を示す属性と、その動作を定義するメソッドによって構成されます。

クラス図は、これらのクラス同士の構造や関係を可視化したもので、システムの静的な設計構造を理解するための重要な設計図です。

その中でも、業務の中で扱う実体(顧客・注文・商品など)とその関係、業務ルールや振る舞いを表現したものを「ドメインモデル」と呼びます。

ドメインモデルは、システムが再現すべき業務の仕組みを明確にし、設計全体の中核となるモデルです。

これを適切に設計することで、業務ロジックが整理され、変更や拡張にも強い構造を実現できます。

また、ドメインモデルは要件定義と密接に結びついています。

要件定義で作成された成果物から、クラス・属性・メソッドの候補を抽出できます。

たとえば、概念モデル機能要件からはクラスや属性を、ロバストネス図状態遷移図からはメソッドや状態変化を導き出します。

このようにして、要件の意図をクラス図(ドメインモデル)として構造化し、業務の仕組みをシステム上で再現できる形に具体化していきます。

要件定義とクラス設計の関係

詳しくは、以下の記事をご参照ください。

tracery.jp

要件定義とデータベース設計の関係

データベース設計(ER図)は、クラス図を基盤として体系的に進めることができます。

クラス図で定義されたクラスのうち、永続化が必要なものをテーブルとして設計し、属性やリレーションを具体的なスキーマに落とし込みます。

また、要件定義で作成された成果物(概念モデル機能要件の記述、状態遷移図)は、クラス設計に反映されるだけでなく、データベース設計にも密接に関わります。

これらの要件の意図が、データ構造や制約設計にまで意図通りに反映されているかを検証することが欠かせません。

さらに、データベース設計では、性能効率、データ品質、セキュリティ、保守性といった非機能要件を十分に考慮する必要があります。

これらが軽視されると、応答遅延、データ不整合、情報漏えい、改修コストの増大など、運用上の重大な問題を引き起こすリスクが高まります。

要件定義とデータベース設計の関係

詳しくは、以下の記事をご参照ください。

tracery.jp

要件定義と画面設計、API設計、バッチ処理設計の関係

画面設計API設計バッチ処理設計はいずれも、要件定義で作成された機能要件非機能要件一覧システム構成図を基に進めます。

これらの設計では、システム構成図に示された技術要素(プログラミング言語、ミドルウェア、フレームワークなど)や通信方式を設計のベースとして進めます。 そのうえで、機能要件非機能要件に定義された条件を満たすよう、処理内容・性能・セキュリティ・運用性などの観点から設計を具体化します。

処理の入力・処理・出力を設計する際には、設計プロセスで作成されたクラス図(ドメインモデル)やER図を参照し、処理とデータの整合を確保します。

また、画面設計API設計バッチ処理設計を進める過程で、クラスや属性・メソッドの追加・修正、テーブルやカラムの追加・修正などが発生する場合は、クラス設計やDB設計にフィードバックし、全体の設計を精緻化していきます。

要件定義と画面設計、API設計、バッチ処理設計の関係

詳しくは、以下の記事をご参照ください。

tracery.jp

tracery.jp

tracery.jp

システムの視座から業務・事業の視座へ

設計、特に画面やAPI、バッチ処理といった機能単位の設計をする際には、その機能がどのような業務で利用され、誰の課題を解決し、事業全体としてどのような価値を生み出すのかまでを見通すことが重要です。

つまり、システムの視座*1から業務の視座へ、さらに事業の視座へと移動し、考えることが求められます(下図)。

これにより、事業の成果や顧客価値*2の創出につながるシステムを設計できるようになります。

業務、事業の視座へ移動する

視座を移動するためには、要件定義の重要ポイント〜要望・要求・要件を見極める - TRACERY Lab.(トレラボ)で説明したように、以下の2つの問いが有効です。

  • ユースケースはなにか?(業務レベルの視座に引き上げる問い)
  • その機能によって解決される問題や生まれる価値はなにか?(事業レベルの視座に引き上げる問い)

最後に

本連載で示したように、プロセスと成果物の関係を俯瞰し、頭の中に地図のように描いておくと、開発を進める中で「どの情報が足りないのか」「どの工程に戻るべきか」を素早く判断できるようになります。

それは、部分最適に陥らず、プロジェクト全体を見渡して判断する力につながります。

今回で「要件定義とはそもそも何か」全18回の連載は完結です。

本連載では、要件定義の考え方や進め方を体系的に整理し、現場で実践するための道筋を示してきました。

要件定義は、システム開発の成否を左右する重要なプロセスです。

この連載の内容が、皆さまのプロジェクトをより確かな成果へ導く一助となることを願っています。

この記事を書いた人
haru

佐藤治夫。株式会社ビープラウド代表取締役社長。TRACERYのプロダクトマネージャー。エンジニアとして活動を始めて以来、モデリングを中心としたソフトウェアエンジニアリングを実践している。Xアカウント: https://x.com/haru860

*1:物事を認識する時の立場のこと

*2:「アウトカム」ということが多い。

要件定義のプロセスと成果物を体系的に理解する【全体像まとめ】

シリーズ: 要件定義とはそもそも何か

TRACERYプロダクトマネージャーの haru です。

要件定義を成功させるためには、プロセス全体を見渡して理解することが重要です。

どのような情報を集め、どのような成果物を用意すべきかを明確にすることで、作業の抜け漏れを防ぎつつ、要件定義を入出力の観点で一貫して管理できます。

これにより、進捗や成果を数値や成果物で客観的に確認でき、関係者間の認識を揃えながらプロセス全体を確実にコントロールできるようになります。

本記事では、「要件定義とはそもそも何か」シリーズで解説してきた内容を整理し直し、要件定義プロセスの流れと成果物の位置づけを体系的に紹介します。

要件定義の流れ、全体像

下図に、本連載で説明してきた要件定義の流れを示します。

要件定義全体の流れ

本連載では、説明をわかりやすくするために、既存システムがすでに稼働しており、その機能追加や改修を行う場合を対象としています。

なお、本連載では扱いませんでしたが、システムを新規に構築する場合には、ステークホルダーや業務構成を一覧化し、外部システムを含めた全体像を明確に整理することから始めるとよいでしょう。

以降で、本連載で紹介した要件定義の流れを順に説明します。

要望から要件へ。事業・業務・システムで全体像を整理する

システム開発では、まずステークホルダーから要望をヒアリングします。

得られた内容は整理・統合し、要求として構造化します。

この際、事業・業務・システムの3階層でツリー状に整理すると、抜け漏れが少なく全体像を把握しやすくなります。

ここまでの流れを「企画プロセス」と呼びます。企画プロセスでは、関係者の要望を集め、開発の出発点となる要求を整理することが目的です。

次に、この要求をインプットとして進める「要件定義プロセス」では、構造化された要求に優先順位を付け、実現可能かどうかを検討したうえで、開発対象として合意したものを要件とします。

要望から要件へ。事業・業務・システムで全体像を整理する

詳しくは、以下の記事をご参照ください。

tracery.jp

tracery.jp

業務フロー図の作成〜ユースケース抽出

要件定義のゴールは、「設計プロセスを円滑に進めるための明確で具体的なインプットを提供すること」です。*1

そのために最低限作成すべき要件定義の成果物は、次の3つです。

  • 開発品目(画面、API、バッチ処理など)の一覧
  • 各開発品目に対応するシステムの機能要件
  • セキュリティ、性能、信頼性、可用性などの非機能要件の定義

これらを導き出す最初のステップが、業務プロセスを構想し、可視化する業務フロー図の作成です。

事業要件と業務要件を基に、業務フロー図を作成します。

業務フロー図を描くことで、事業要件や業務要件を満たすための、利用者の行動やシステム利用の流れが明確になり、そこからシステムのユースケースを抽出できます(下図)。

抽出されたユースケースは、三層構造におけるシステム要件に対応します。

業務フロー図の作成〜ユースケース抽出

詳しくは、以下の記事をご参照ください。

tracery.jp

ユースケースをロバストネス図で詳細化し、開発品目一覧作成、非機能要件の抽出

ユースケースを起点に、ロバストネス図を用いてシステムを構成する要素(UI、機能、データなど)を抽出します。

この要素分解を進める過程では、処理性能や運用条件などの実現性も検討され、その結果として非機能要件が明確になります。

これらも併せて整理・リスト化します。

ユースケースをロバストネス図で詳細化し、開発品目一覧作成、非機能要件の抽出

詳しくは、以下の記事をご参照ください。

tracery.jp

概念モデル、システム構成図の作成

前節までに、要件定義で最低限作成すべき成果物が明示されています。

  • 開発品目(画面、API、バッチ処理など)の一覧
  • 各開発品目に対応するシステムの機能要件
  • セキュリティ、性能、信頼性、可用性などの非機能要件の定義

これらが揃えば設計は始められますが、必要最低限の情報にすぎません。

設計をよりスムーズかつ精度高く進めるには、概念モデルシステム構成図を準備することが効果的です。

これらを整備することで、システムの構造や関係性が具体的に可視化され、関係者が同じ理解を持てるようになります。

その結果、要件の解釈違いや設計段階での手戻りを大幅に減らし、開発全体を効率的に進められます。

概念モデル、システム構成図の作成

詳しくは、以下の記事をご参照ください。

tracery.jp

まとめ

本記事では、要件定義の全体像を整理しました。

要件定義の最低限の成果物は、開発品目一覧、機能要件、非機能要件の3点です。

これらを導き出すための出発点は、事業要件・業務要件を満たす業務プロセスを構想し、業務フロー図を作成することにあります。

業務フロー図に示されたアクションからユースケースを抽出し、さらにロバストネス図で詳細化することで、開発品目をリストアップできます。

加えて、設計や見積りの精度を高めるには、概念モデルやシステム構成図の整備が有効です。

これによりシステム像が明確になり、開発全体の効率性と信頼性が大きく向上します。

次回の記事では、要件定義プロセスと設計プロセスのつながりを整理し、両者の関係性を全体像として解説します。

tracery.jp

この記事を書いた人
haru

佐藤治夫。株式会社ビープラウド代表取締役社長。TRACERYのプロダクトマネージャー。エンジニアとして活動を始めて以来、モデリングを中心としたソフトウェアエンジニアリングを実践している。Xアカウント: https://x.com/haru860

移行要件とは何か

シリーズ: 要件定義とはそもそも何か

TRACERYプロダクトマネージャーの haru です。

事業・業務・システムの3階層で要件を捉える - TRACERY Lab.(トレラボ)では、事業要件・業務要件・システム要件という3階層を紹介しました。

これらに加えて、システム開発では「移行要件」と呼ばれる重要な要件があります。

具体的には、システムや機能をリリースするまでの、データ移行やユーザー教育、移行期間中の暫定運用手順などに関する要件が該当します。

本記事では、この移行要件について説明します。

移行要件とは

移行要件とは、現在の状態(As-Is)から将来の状態(To-Be)へ移行する際に必要となる要件で、 BABOK(Business Analysis Body of Knowledge:ビジネスアナリシス知識体系) に定義されています*1

移行要件は、以下のような性質を持ちます。

  • 現在の状態から将来の状態に円滑に移行するための要求
  • 一時的な性質を持ち、移行が完了した段階で不要になる

移行要件の内容

移行要件は、主に次の三つに分類できます。

  • データ移行:旧システムのデータを欠損や不整合なく新システムに移し、業務に必要な情報が正確かつ最新の状態で利用可能になることを求める要件。
  • 事業継続:移行期間中および移行直後も重要業務を中断させず、合意したサービス水準を維持できる状態を保証する要件。
  • 教育訓練:新システムを利用する全関係者が稼働開始時点で必要な知識と操作スキルを習得し、業務を滞りなく遂行できる状態にあることを求める要件。

以下で、それぞれの内容を説明します。

データ移行

データ移行では、旧システムから新システムへ情報を確実に引き継ぐために、品質の確保や最新データの反映、セキュリティと法令遵守など多方面の要件を満たす必要があります。以下に、その主要な観点を示します。

1. データ品質

  • 完全性:旧システムに存在する移行対象データが欠損なくすべて移行されていること。
  • 正確性:移行後のデータ値が業務上許容できる誤差範囲内で正確であること。
  • 整合性:参照整合性や主従関係など、データ構造上の一貫性が保持されていること。

2. タイムリーな反映

  • 最新性:移行直前までに発生した更新内容が反映されていること。
  • 業務開始可能性:移行完了後、予定どおり新システムで業務が開始できる状態であること。

3. セキュリティ・法令遵守

  • 情報保護:移行作業中も個人情報や機密データが適切に保護され、関連法規(例:個人情報保護法)を遵守していること。
  • 可監査性:移行の過程や結果が監査可能であり、誰がいつ何を移行したかを追跡できること。

4. 業務継続性

  • 影響最小化:移行による通常業務の停止時間や影響が、事前に合意した範囲内に収まること。
  • 復旧可能性:移行失敗時に業務を継続できるよう、復旧手順が確立されていること。

5. 検証基準

  • 移行完了判定:件数一致、ハッシュ値比較など、移行完了を客観的に確認できる検証基準が明確であること。

事業継続

システム移行では、切り替え中や稼働直後も重要業務をなるべく止めないことが求められます。以下に、その主要な観点を示します。

1. 重要業務と復旧目標

  • 停止が許されない重要業務が特定され、優先順位が明示されていること。
  • 各業務の復旧目標時間内に収まること。
  • 復旧後に最低限必要なシステム機能・データが利用可能な状態であること。

2. 継続体制と責任範囲

  • システム障害時に事業を継続するための体制の確立。
  • 緊急時の意思決定者とその代理者、連絡経路およびエスカレーションルート。

3. 移行期間特有の継続条件

  • 移行作業中であっても、特定した重要業務が合意したサービス水準を維持できること。
  • 移行に伴う一時的リスク(例:データ同期遅延、システム切替時間)に対して、事業停止を回避できること。
  • 外部システムやサービスへの依存事項が洗い出され、それに起因する中断リスクが許容範囲内であること。

4. 移行後初期稼働の継続基準

  • 新システム稼働直後に必要な監視・初期対応体制が整備され、初期フェーズでも事業継続が保証されていること。
  • 稼働直後に発生し得る障害や性能劣化に対応する初期運用基準。

5. 検証と正式承認

  • 上記要件が移行完了前に検証され、事業継続が可能であると判断する明確な承認基準の設定。
  • 検証結果と承認記録が監査可能な形で保存されていること。

教育訓練

システム移行では、稼働開始時に利用者が必要な知識と操作スキルを備えていることが欠かせません。以下に、その主要な観点を示します。

1. 対象と範囲

  • 新システムを運用・利用するために必要な知識や操作スキルを習得すべき対象者(業務担当者、管理者など)が特定されていること。
  • 役割ごとに習得が必要な教育内容と学習範囲が明確に定義されていること。

2. 学習成果と到達基準

  • 受講者が稼働開始後に業務を支障なく遂行できるレベルの知識・操作スキルを習得していること。
  • 習得状況を客観的に判定できる基準(理解度評価、操作精度など)が明示されていること。

3. 実施時期と完了条件

  • 必要な教育訓練がシステム稼働開始までに完了していること。
  • 初期運用に影響を与えない適切な時期に教育が実施されていること。

まとめ

システム開発では、事業要件・業務要件・システム要件に加え、現行環境から新環境へ確実に移行するための移行要件を明確にすることが不可欠です。

BABOK が示すとおり移行要件は一時的な性質を持ち、データ移行・事業継続・教育訓練という三つの視点を押さえることで、切り替え時のリスクを抑えられます。

移行要件を要件定義の関係者間で共有しておけば、移行期の混乱を防ぎ、システム稼働後の安定運用へと着実につなげられます。

次回は、本連載「要件定義とはそもそも何か」の総まとめとして、これまでの内容を整理しながら要件定義プロセスの全体像を解説します。

tracery.jp

この記事を書いた人
haru

佐藤治夫。株式会社ビープラウド代表取締役社長。TRACERYのプロダクトマネージャー。エンジニアとして活動を始めて以来、モデリングを中心としたソフトウェアエンジニアリングを実践している。Xアカウント: https://x.com/haru860

*1:BABOKでは「移行要求」という名前で定義されている。

要件定義を学ぶ人におすすめの書籍まとめ

シリーズ: 要件定義とはそもそも何か

TRACERYプロダクトマネージャーの haru です。

要件定義や要求に関する書籍は数多く出版されていますが、専門的で内容が難しく、読みこなすのは簡単ではありません。

そこで本記事では、私が実際に読み、要件定義の理解を深めるうえで実務にも役立つと感じた書籍を厳選して紹介します。

要件定義の入門

はじめよう!要件定義〜ビギナーからベテランまで

要件とは何か」「要件定義とは何か」「機能とは何か」、そしてそもそも「仕事とは何か」という基本概念を平易な言葉で噛み砕き、初学者にもわかりやすく解説しています。

要件定義は業務要件定義とシステム要件定義に大別されますが*1、本書はシステム要件定義に重点を置いています。

機能」「UI」「データ」を軸に、現場でそのまま活用できる要件定義の進め方を具体的に示しています。

入門書として位置づけられていますが、サブタイトルにある「ビギナーからベテランまで」の言葉どおり、後半の準備編・助走編・離陸編まで読み進めれば、要件定義プロセスを体系的に理解でき、経験者にとっても知識をさらに深められる一冊です。

はじめよう!プロセス設計〜要件定義その前に

前述の『はじめよう! 要件定義 ~ビギナーからベテランまで』がシステム要件定義に重点を置いているのに対し、本書は業務要件定義に主眼を置いています。

本書の業務要件定義の核心となるのは、業務プロセスの設計です。本書は、プロセス設計の具体例を示しながら理解しやすく解説しています。

本書からは「業務プロセスを組み立てるには、仕事そのものを深く理解することが不可欠である」というメッセージが伝わってきます。

中級者向け

ソフトウェア要求第3版

第1部 ソフトウェア要求:だれが、何を、何のためにするのか」では、ソフトウェア要求を理解するための基本的な考え方を体系立てて解説しています。

特に、要求の階層構造(レベル)や種類良い要求を作るためのプラクティス、そして要求に関して顧客が持つ権利と責任などについて、丁寧に解説しています。

第2部 要求開発」では、「1枚の絵は1024の語に値する」という言葉の通り、要求を多角的にモデル化し図として表現する手法を詳しく解説しています。

さまざまな観点から要求を図示する具体例が紹介されており、要件を視覚的に整理したい読者にとって参考になります。

著者Karl Wiegersは2023年に新著「Software Requirements Essentials: Core Practices for Successful Business Analysis (English Edition)」も出版しており、最新の知見を求める方はそちらも合わせて読むと理解がさらに広がるでしょう。

以下の記事で取り上げられていますので、ぜひ参考にしてみてください。

agnozingdays.hatenablog.com

要求を仕様化する技術・表現する技術 -仕様が書けていますか?

著者が提唱するUSDM(Universal Specification Describing Manner)は、要求仕様を正確に定義するための手法です。

USDMを学べば、要求や仕様を的確に表現するための具体的な手法と考え方を体系的に理解できます。

本書では、USDMによる記述方法だけでなく、要求や仕様を正しく表現することの価値や効果、さらに記述の不備が後工程の設計や実装に及ぼす悪影響を、第1部「要求仕様にまつわる問題」で書籍全体の半分を割いて詳しく解説しています。

たとえUSDMを採用しなくても、要求定義や要件定義に携わる方は、この前半部分を読むだけで要件定義で押さえるべき重要な視点と判断基準を把握できます。

だまし絵を描かないための要件定義のセオリー

要件定義をはじめとする上流工程は属人性が高く、「これをやれば正解」という定型的な手法は存在しません。

だからこそ、進め方や重視すべきポイントを自ら見極める姿勢が求められます。

本書は、著者が多くの現場で培った経験をもとに、要件定義を進めるうえで欠かせない視点と判断基準を説明しています。

第Ⅱ部 要件定義の実践」では、実務に直結する具体的な進め方を紹介しています。

とくに「業務フロー作成時の留意点」や「4章-4 業務プロセス要件の明確化」は、業務フローを設計・改善する場面で活用できる実践的な指針となるでしょう。

ユーザのための要件定義ガイド 第2版 要件定義を成功に導く128の勘どころ

IPAの公式サイト(無料ダウンロード)

要件定義の不備がプロジェクトの失敗を招くことは珍しくありません。

IPAの「ユーザのための要件定義ガイド 第2版」は、要件定義におけるリスクを避けるために知っておきたい典型的な課題と対策をまとめています。

具体的には次のような問題が取り上げられています。

  • 現行業務やシステムを十分に理解できず、正確な現状把握ができない
  • ステークホルダーを見誤り、必要な要求を抽出できない
  • 経営方針や事業戦略に沿った要求が反映されない
  • 抽出した要求が全体として効果的かつ必要十分でない
  • 要件定義に必要な期間や労力を定量的に予測できない

要件定義を始める前に一読しておけば、発生しがちなリスクを先回りして把握し、失敗を防ぐための具体的な行動指針を得られるでしょう。

要件定義手法のRDRAを学ぶ

RDRA3.0 ハンドブック:根拠を持った要件定義を素早く正確に

要件定義手法RDRAの、2025年時点の最新のガイドブックです。

RDRAは生成AIの進化に伴い、表形式で定義し、さらにスピード感を持って要件定義を進める方法に舵を切りました。

RDRAのベースとなる考え方自体はRDRA2.0から大きな変化はなく、生成AIに対応したのがRDRA3.0と考えられます。

RDRA3.0 ハンドブックを読んだ上で、RDRA自体の基本的な考え方を更に学びたい方は以下も参照してみてください。

RDRA 2.0

RDRA 1.0

最後に

本記事では、要件定義の理解と実践に役立つと私が実感した書籍を紹介しました。

基礎から応用までを幅広くカバーしたこれらの書籍は、知識を整理し体系的に深めるのに役立ちます。

ぜひ自分の役割や課題に合わせて気になる一冊を選び、日々の業務やプロジェクトで学びを実践してみてください。

読書で得た知識と現場での経験を重ねることで、要件定義に欠かせないスキルと視点を養うことができるでしょう。

次回は、移行要件とは何か、というテーマについて、説明します。

tracery.jp

この記事を書いた人
haru

佐藤治夫。株式会社ビープラウド代表取締役社長。TRACERYのプロダクトマネージャー。エンジニアとして活動を始めて以来、モデリングを中心としたソフトウェアエンジニアリングを実践している。Xアカウント: https://x.com/haru860

非機能要件とは何か

シリーズ: 要件定義とはそもそも何か

TRACERYプロダクトマネージャーの haru です。

非機能要件とは、機能要件以外でシステムが備えるべき品質や制約条件を示す要件です。具体的には、性能や可用性、セキュリティ、保守性などが該当します。

機能要件が各機能単位で定義されるのに対し、非機能要件はシステム全体に共通する特性としてまとめられるのが一般的です。

本記事では、非機能要件について説明します。

非機能要件の定義

非機能要件の定義には、日本語のものでは、IPA*1非機能要求グレードやJUAS*2非機能要求仕様定義ガイドラインなどがありますが、本連載では REBOK第1版(Requirements Engineering Body of Knowledge:要求工学知識体系)を基準に、下図のとおり整理しました。

ここでは、機能適合性を機能要件と位置づけ、それ以外をすべて非機能要件として扱います。

非機能要件

非機能要件の重要性

機能要件だけを満たした状態とは、プログラムが一応動いているに過ぎません(下図)。

機能要件だけが満たされた状態

非機能要件が欠落すると、システムはたとえば次のような深刻な問題を招きます。

  • 性能効率:画面表示や処理が遅く、ユーザー体験や業務効率を損なう
  • ユーザビリティ:操作性が低く、入力ミスや業務の停滞を引き起こす
  • セキュリティ:不正アクセスやデータ漏えいにより、法的責任を負い、社会的信用が失墜する
  • 保守性:ソースコードが読みにくく、障害対応や機能追加に過大なコストがかかる
  • データ品質:不整合や欠損により、意思決定やサービス品質に重大な影響を及ぼす
  • 法令遵守:法規制に違反し、行政指導や罰則を受ける
  • 制約:クラウドのシステム利用料が予算を超過する

このような状態では、安定したシステム運用や持続的なビジネス価値の創出は極めて難しくなります。

システムは、単に機能が動作するだけでは不十分です。非機能要件を満たしてこそ、プロフェッショナルが構築したと認められる品質水準に達します

非機能要件のアーキテクチャへの反映

非機能要件はシステム全体に共通する特性としてまとめられるのが一般的です。

その内容は、システムアーキテクチャやソフトウェアアーキテクチャに、多くが反映されます。

非機能要件のアーキテクチャへの反映

非機能要件のシステムアーキテクチャへの反映

システムアーキテクチャとは、ハードウェアやソフトウェアの主要コンポーネント、それらの相互関係、通信方式や配置などを含め、システム全体の構造と設計方針を定義したものです。

システムアーキテクチャに反映される非機能要件とその具体例を、以下にまとめました。

利用品質

非機能要件 反映されるアーキテクチャ上の要素 具体的な反映例
有効性*3 サブシステム分割 業務単位/フローに即してサブシステムを分割、配置し、現場の業務変更や手順の見直しにシステムを追随しやすくする。
効率性*4 ユーザーやAPIクライアントの操作/処理が最小の時間で達成できるような技術/基盤選択 SPA*5の採用。フロント側キャッシュ。メッセージキューで非同期処理。
満足性*6 UX改善のための分析基盤 ユーザー行動ログ分析基盤を用意する。
リスク緩和*7 監視・障害検知、自動復旧機構 障害検知アラート連携、自動フェイルオーバー
コンテキストカバレージ*8 複数環境対応設計、マルチリージョン構成 海外リージョン冗長化、各国規格対応の環境構築

プロダクト品質

非機能要件 反映されるアーキテクチャ上の要素 具体的な反映例
性能効率*9 限られたリソースで高い処理性能を発揮するためのサーバーや機器の構成 - CDN*10によるコンテンツ配信高速化
- Webサーバ群をオートスケール対応
- DBリードレプリカで並列読み取りを実現
信頼性*11 冗長構成、クラスタリング マルチAZ*12での冗長化
フェイルオーバー 障害時の自動切替
セキュリティ*13 ネットワーク分離 DMZ構成
認証・認可機構 APIゲートウェイ/認可サーバ(OAuth2, OpenID Connect*14など)
通信の暗号化 TLS通信
保守性*15 監視基盤 専用監視サーバ配置
ログ収集構成 集中ログ収集
コンテナ化 Docker/Kubernetes による環境標準化
CI/CDパイプライン整備 GitHub Actionsによる自動ビルド・テスト・デプロイ
移植性*16 コンテナオーケストレーション Kubernetes活用による他クラウド移行
互換性*17 標準プロトコル対応 REST/GraphQLによる外部連携
ユーザビリティ*18 UI層設計 SPA/MPA構成
マルチデバイス対応 PC・タブレット・スマートフォンそれぞれに最適化されたレスポンシブWebデザインのフレームワークの採用

データ品質、法令遵守、制約

非機能要件 反映されるアーキテクチャ上の要素 具体的な反映例
データ品質*19 データ検証・整合性制御 トランザクション整合性を保証するリレーショナルデータベース(RDBMS)の採用
法令遵守*20 データ配置制御 個人情報を国内データセンターに限定
制約*21 ネットワーク帯域、予算枠 使用可能リソース上限を前提とした構成設計

非機能要件のソフトウェアアーキテクチャへの反映

ソフトウェアアーキテクチャは、ソフトウェアシステムの全体構造と主要な設計上の決定を体系的に示したものです。

システムアーキテクチャがハードウェア・ネットワークを含むシステム全体の構成を指すのに対し、ソフトウェアアーキテクチャはソフトウェア部分の構造や相互作用を対象にします。

以下では、ソフトウェアアーキテクチャへの非機能要件の反映ポイントと設計上の具体例を整理しました。

利用品質

非機能要件 反映されるアーキテクチャ上の要素 具体的な反映例
有効性 ドメインモデル設計 DDDでユースケースを分離、業務ルールをドメイン層に集約
効率性 非同期処理 バルクI/O・ストリーミング処理
アプリ内キャッシュ コネクションプール
満足性 テレメトリ計測 ユーザ行動ログの埋め込み
リスク緩和 エラーハンドリングと再試行戦略 タイムアウト・リトライの設計
コンテキストカバレージ i18n*22/l10n*23 - 翻訳リソースを外部化して動的に切り替え(例:gettext、i18next)
- タイムゾーン対応のためサーバ側でUTC管理+クライアント側でローカル変換
オフライン対応 オフラインファースト*24の設計。

プロダクト品質

非機能要件 反映されるアーキテクチャ上の要素 具体的な反映例
性能効率 計算量削減 N+1抑止、バルク処理・ストリーミング処理
信頼性 冗長化・イベント駆動アーキテクチャ キューイング/メッセージブローカー(Kafka, RabbitMQなど)の使用。
セキュリティ フレームワーク提供の認証・認可機構 Webフレームワーク標準の OAuth2/OIDC サポートを利用してトークン認可を実装/フレームワーク内蔵の RBAC*25・ABAC*26 設定でアクセス制御を集中管理
データ保護機能、入力検証・サニタイズ機能 テンプレートエンジンの自動エスケープや ORM のプレースホルダ機能を活用して XSS や SQL インジェクションを防止/暗号鍵は専用ストア(Hardware Security Module*27・Key Management Service*28 など)で安全に管理
保守性 レイヤリング/依存関係制御 クリーンアーキテクチャ/依存性の注入(DI*29
移植性 設定分離 環境差分(開発・テスト・本番など)は設定で吸収
互換性 バージョニング APIバージョニング(URL/ヘッダ)/後方互換のためのAPIスキーマ進化(例:nullable追加→必須化は段階移行)
ユーザビリティ UI層アーキテクチャ MVVM*30やRedux*31による一貫した状態遷移/デザインシステム(コンポーネント化)

データ品質、法令遵守、制約

非機能要件 反映されるアーキテクチャ上の要素 具体的な反映例
データ品質 データ検証・整合性制御 外部キーやCHECK制約によるスキーマ整合性保証
法令遵守 データ保持ポリシー、監査ログ基盤 個人情報保護法やGDPR対応のためのデータ削除/監査証跡をイベントストリームで永続化
制約 リソース上限を考慮した構成 ハードウェア性能制限を前提としたキューイングとバッチ処理設計

非機能要件のトレードオフ

非機能要件が重要だとはいっても、すべての要素の質を高めると、オーバースペックになることもあります。

IPAの非機能要求グレードでは、対象システムの社会への影響度に基づいて分類し、その分類に応じて求める要件レベルを定めることを推奨しています。

分類 説明
社会的影響がほとんど無いシステム 障害や停止が発生しても、社会全体や公共の活動にほとんど影響を及ぼさないシステム。社内業務の補助ツールや一部の小規模な情報提供サイトなど、限られた利用者や内部利用にとどまるサービスが該当する。
社会的影響が限定されるシステム 障害が起きると一定範囲の利用者や関連業務に支障が出るが、社会全体には大きな混乱をもたらさないシステム。例えば企業の基幹業務システムや地域限定の行政サービス、商用ECサイトなど、特定組織やコミュニティに影響が限定されるもの。
社会的影響が極めて大きいシステム 障害や停止が発生すると、公共の安全や社会的基盤に深刻な影響を与えるシステム。金融決済、交通管制、電力・水道などの社会インフラ、全国規模の行政・防災システムなど、広範な国民生活や経済活動に重大な支障を及ぼすもの。

まとめ

非機能要件は、システムが長く価値を生み続けるための土台です。

性能・可用性・セキュリティ・保守性などの品質特性は、後から付け足すことが難しく、最初のアーキテクチャ設計に織り込むことが不可欠です。

その際、システム全体の構成を決めるシステムアーキテクチャと、内部の構造を設計するソフトウェアアーキテクチャの双方で、非機能要件を具体的に反映させる必要があります。

さらに、IPAが示す「非機能要求グレード」のように、社会的影響度に応じて求める品質レベルを調整する視点も欠かせません。

機能が動くだけのシステムでは、利用者からの信頼もビジネス価値も長続きしません。

非機能要件を早期に定義し、設計・開発プロセス全体で継続的に見直すことこそが、持続可能で信頼されるシステムを実現する第一歩です。

次回は、要件定義を学ぶ人におすすめの書籍を紹介します。

tracery.jp

この記事を書いた人
haru

佐藤治夫。株式会社ビープラウド代表取締役社長。TRACERYのプロダクトマネージャー。エンジニアとして活動を始めて以来、モデリングを中心としたソフトウェアエンジニアリングを実践している。Xアカウント: https://x.com/haru860

*1:独立行政法人 情報処理推進機構。https://www.ipa.go.jp/

*2:一般社団法人 日本情報システムユーザー協会。https://juas.or.jp/

*3:ユーザーが目的のタスクを正確かつ完全に達成できる度合い

*4:ユーザーがタスクを最小限の時間・労力で達成できる度合い

*5:Single Page Applicatioin

*6:利用によって安心感・快適さ・好ましい体験を得られる度合い

*7:システム利用が健康・財務・個人情報などのリスクを最小化している度合い。

*8:想定される利用環境・条件下で期待どおりの成果を維持できる範囲

*9:リソースを適切に使い、高い処理性能を維持できるか

*10:Content Delivery Network(コンテンツ配信ネットワーク)の略称。Webサイトで利用される画像や動画などの大容量データを、ユーザーの利用する場所の最も近い場所に配置されたサーバーから配信することで、高速化と安定化を図るネットワークシステム

*11:障害時にも安定して稼働し続けるか

*12:アベイラビリティーゾーン(Availability Zone)。複数の「データセンター(DC)」から構成されるインフラ設備の単位です。同じAZ内のデータセンター群は冗長的で高速なネットワークで結ばれており、あたかも同じ場所にある設備であるかのように利用することができる。

*13:不正アクセスやデータ漏えいを防止できるか

*14:インターネット上でユーザーのID情報を安全に交換するための認証プロトコル。OAuth 2.0 を基盤として、シングルサインオン(SSO)を実現し、ユーザーが複数のサービスに1つのIDでログインできるようにする。

*15:修正・拡張・テストが容易か

*16:異なる環境へ容易に移行できるか

*17:他のシステムや製品と共存・連携できるか

*18:製品が理解しやすく、学びやすく、操作しやすいか

*19:システムが扱うデータの正確性・一貫性・完全性・最新性などを保証するための要件

*20:システムが関連法規・規制・業界基準を順守して運用されることを保証する要件

*21:システム設計・開発・運用において外部条件や前提として課せられる制限事項を明示した要件

*22:「Internationalization(国際化)」の略称。アプリケーションやシステムを特定の言語や文化に依存しない汎用的なものに設計・開発すること

*23:Localization(ローカリゼーション)の略称。ローカリゼーションは、特定の製品やサービスを、特有の地域や文化に合わせて調整または適応させる一連のプロセス

*24:ネットワークが不安定または切断された状態でもアプリが問題なく使え、オンラインに復帰した際にデータを自動的に同期することを前提に設計するアーキテクチャ思想。

*25:ロールベースアクセス制御(Role Based Access Control)。ユーザーの役割(ロール)に基づいてシステムやデータへのアクセスを管理するセキュリティ手法

*26:属性ベースのアクセス制御(Attribute Based Access Control)。ロールではなく属性(特性)を評価してアクセスを決定する認可モデル

*27:専用のハードウェア機器。鍵を物理的に保護し、機器外に秘密鍵を出さずに暗号化・署名を実行。高い改ざん耐性を持つ。Thales Luna HSM、AWS CloudHSMなど

*28:クラウドベースの鍵管理サービス。API経由で鍵を生成・保管・ローテーション。HSMをバックエンドに持つことが多い。AWS KMS、Azure Key Vault、Google Cloud KMSなど

*29:Dependency Injectionの略称。クラスが他のクラスを直接生成するのではなく、外部から渡してもらうようにするデザインパターン。

*30:Model–View–ViewModelの略称。ユーザーインターフェースを持つアプリケーションの設計パターンの一つで、表示(View)とデータ・ロジック(Model)を疎結合に保ちながら、状態管理をシンプルにすることを目的としている。

*31:Webフロントエンドを中心に使われる 状態管理(State Management)ライブラリ/アーキテクチャパターン 。特に React と組み合わせて利用されることが多く、アプリ全体の状態を一元的に管理し、状態変化を予測可能にする。