機能要件と非機能要件について

機能要件(functional requirement)について

機能要件とは

機能要件とは、業務要件を実現するために必要なシステムの機能に関する要件のことです。
つまり、システム開発における要件定義の内、必ず搭載すべき機能や挙動を機能要件といいます。

例えば、以下の項目は機能要件として挙げられます。
・業務を構成する機能間の情報(データ)の流れを明確にする。
・表示された選択肢から項目を押下するユーザインターフェースを採用する。
・帳票を配布するために、帳票出力機能を備える。


機能要件ではシステム化の背景・理由・目的を明確にする

機能要件は、顧客(ユーザ)がシステムに対して求めている機能であり、業務処理そのものです。
しかし要件定義の段階では、顧客はシステムの具体的な完成形やシステムを利用した業務処理をイメージできていない場合が多いです。
また、顧客には予算やスケジュールなどの制約があるため、その制約の中で実現可否や優先順位を決定していく必要があります。
そのため、機能要件の検討においては、システム化する背景・理由・目的を明確にして、顧客と共通認識を構築していくことが重要となります。


非機能要件(Non-functional requirement)について

非機能要件とは

非機能要件とは、機能要件以外の要件全般のことです。
具体的には、使いやすさ・性能(パフォーマンス)・信頼性・セキュリティ・制約条件などといった要件です。

非機能要件は顧客にとって、顕在的な要求ではなく潜在的な要求の場合が多く、抽象的な要件となります。
しかしながら、顧客は使いやすさや応答性などの要素を通じてソフトウェアの品質を評価するため、顧客満足度の向上のために非機能要件の対応は必須です。

ソフトウェア・エンジニアリング基礎知識体系(SWEBOK)では、非機能要件を以下のように定義しています。


非機能要求は、時として、制約条件(constraints)もしくは品質要求(quality requirements)として知られている。
また、この要求はさらに以下のように分類できる。
(例えば)性能要求、保守容易性要求、安全性要求、信頼性要求、電磁気互換性要求、その他の様々なタイプの要求である。

非機能要件の例

以下の例は非機能要件に該当します。
・システム開発で用いるプログラム言語に合わせた開発基準、標準の技術要件を作成すること(技術要件)
・4時間以内のトレーニングを受けることで,新しい画面を操作できるようになること(使用性/習得性)
・業務量がピークの日であっても,8時間以内で夜間バッチ処理を完了できること(性能効率性/時間効率性)
・現行のシステムから新システムに72時間以内で移行できること(移植性/置換性)
・地震などの大規模災害時であっても,144時間以内にシステムを復旧できること(信頼性/回復性)


非機能要件要求仕様定義ガイドライン

日本情報システムユーザー協会(JUAS)が発行した『非機能要件要求仕様定義ガイドライン』では、以下の10種類に分類し定義しています。

  1. 機能性
  2. 信頼性
  3. 使用性
  4. 効率性
  5. 保守性
  6. 移植性
  7. 障害抑制性
  8. 効果性
  9. 運用性
  10. 技術要件

非機能要求グレードにおける6つのカテゴリ

情報処理推進機構(IPA)では、非機能要件を大きく6つのカテゴリに分類しています。
このカテゴリを満たす形で要件定義を行えば、クライアントを満足させるソフトウェアを開発することができるという指針です。
非機能要求グレード|独立行政法人 情報処理推進機構


カテゴリ 説明
可用性 運用スケジュールや障害発生時の復旧などに関する要求
性能/拡張性 ピーク時の負荷や業務量増加の対応などに関する要求
運用/保守性 システム運用時の稼働率や問題発生時の対応などに関する要求
移行性 新システムへの移行(可否や移行手順など)に関する要求
セキュリティ 利用者の制限や不正アクセスの防止などに関する要求
システム環境/エコロジー システムの設置環境や消費エネルギー量などに関する要求

継続性に関する要件

非機能要件には、災害時における事業や業務の継続性が含まれます。
災害、テロ攻撃などの緊急事態に遭遇した場合において、事業の継続を行うための計画を「事業継続計画(BCP:Business Continuity Plan)」といいます。

BCPの中でも、災害からシステムを復旧することを「ディザスタリカバリ(DR:Disaster Recovery)」といいます。
非機能要件としてのDRを検討する際には、RPOとRTOという指標を参考にします。

指標名 説明
RPO(Recovery Point Objective:目標復旧時点) 目標復旧時点とは、データをどの時点のものに復旧するかの目標値です。
システムが再稼働したときに災害発生前のどれだけ最新の状態に復旧できるかを示す指標です。
RTO(Recovery Time Objective:目標復旧時間) 目標復旧時間とは、システムの復旧に要する時間の目標値です。
災害による業務の停止が深刻な被害とならないために許容される時間です。

関連ページ