品質の高いシステム開発に欠かせない要素「非機能要件(NFR:Non-Functional Requirements)」。この要件の適切な定義や検証は、多くの企業が課題として抱えています。本記事では、22年間にわたり第三者検証サービスを提供してきた実績を持つ株式会社ヴェスが、非機能要件の基礎から実践的な品質向上のポイントまでご説明します
システム開発において、非機能要件は機能要件と並んで重要な位置を占めています。ここで、基本的な定義から説明していきます。
非機能要件とは、システムに実装される具体的な機能とは異なり、システム全体の品質や性質を規定する要件です。例えば、「どれだけ早く処理を完了できるか(性能)」「どの程度安全にデータを保護できるか(セキュリティ)」「システムがどれほど安定して動作するか(信頼性)」といった、システムの基本的な質を決める要素を定義します。
具体的な例で説明しましょう。あるショッピングサイトの開発を想定してみます。「商品の検索機能を実装する」「買い物かごに商品を入れられるようにする」「オンライン決済を可能にする」などは、機能要件に該当します。
一方で、「商品検索の結果を2秒以内に表示する」「システムを年中無休で利用可能にする」「最大5000人が同時にアクセスしても安定して動作する」「顧客の個人情報を確実に保護する」といった要件が、非機能要件に該当します。
機能要件は、システムが「何をできるようにするか」を定めるものです。お客様やエンドユーザーから具体的に要望される機能を実装するための要件であり、その実現の成否は比較的判断しやすい特徴があります。
これに対し非機能要件は、提供する機能を「どのような品質で実現するか」を定めるものです。お客様から明示的に要求されることは少なく、システム開発側で慎重に検討する必要があります。例えば、処理速度が遅いことやセキュリティの不備は、総合テストや受け入れテストなどの下流工程で初めて問題として発見されることが多く、その修正には膨大な時間とコストが必要になります。そのため、非機能要件はプロジェクトの早期段階から適切な定義と計画が求められます。
システムの品質を決定づける非機能要件は、近年その重要性が一層高まっています。その背景と意義について、3つの観点から解説します。
現代のデジタル社会において、システムの使い勝手や信頼性は「ユーザーの満足度」を大きく左右します。例えばオンラインショッピングサイトの場合、必要な機能がすべて揃っていても、「商品の検索に時間がかかる」「決済処理が度々エラーになる」「システムが突然停止する」といった問題があれば、ユーザーは他のサービスに流れてしまいます。
特にスマートフォンの普及により、代替サービスへの切り替えは以前より容易になりました。このため、非機能要件の品質は「ユーザーの継続的な利用」を確保する重要な要素となっています。
サービスレベルアグリーメント(SLA)の概念が一般化する中で、システムの品質は契約上の重要な要素となっています。例えば、システムの月間稼働率や最大応答時間といった具体的な数値目標を、お客様との契約で定めることが一般的になってきました。これらの基準を達成できない場合、ペナルティの対象となるだけでなく、事業の信頼性や収益に直接的な影響を及ぼす可能性があります。
テクノロジーの進化に伴い、システム構成は複雑さを増しています。従来の単一システムから、クラウドサービスやマイクロサービスを組み合わせた複合的なシステムへと変化する中、安定性の確保やセキュリティリスクへの対応は一層難しくなっています。
また、2024年4月に施行されたPSTI法や、2024年10月に採択された欧州サイバーレジリエンス法など、新たな法規制への対応も求められています。このような環境下では、システムの品質要件を事前に明確化し、計画的に対応することが不可欠です。
独立行政法人の情報処理推進機構(IPA)では、非機能要件を「6つのカテゴリ」に分けています。ここで、各カテゴリの具体的な内容と、実装する際の重要なポイントについて見ていきましょう。
可用性とは、システムが必要なときに確実に利用できる度合いを表します。システムの安定稼働を実現するためには、運用時間や利用者数などの基本的な要件の定義が欠かせません。例えばEC事業者の場合、「24時間365日のサービス提供」が求められますが、基幹業務システムであれば「平日9時から17時までの稼働」で十分な場合もあります。また、システム障害が発生した際の対応も重要です。
性能要件では、システムの応答時間やスループット(単位時間あたりの処理能力)を定義します。近年のデジタル化により、特にWebサービスでは性能要件の重要性が増しています。具体的な数値目標として、「検索処理は3秒以内に完了すること」「1時間あたり10万件のトランザクションを処理できること」などを設定します。
運用・保守性は、システムの日常的な運用やメンテナンスの容易さを定義します。システムの重要性が増す中、効率的な運用体制や保守体制の構築が欠かせません。具体的には、「システムの監視項目」や「監視間隔」「アラートの基準値」「定期メンテナンスの実施方法」「問題発生時の対応フロー」などを定義します。
移行性は、特に「既存システムからの移行」を伴う場合に重要となります。DX推進の一環として、レガシーシステムからの移行を検討する企業が増えている中、この要件の重要性は増しています。具体的には、データ移行の方針(移行対象データ、データクレンジングの基準、移行手順など)、システム切り替えの方針(切り替え時期、切り替え方式、切り戻し手順など)、並行運用期間の運用ルールなどを定義します。
セキュリティ要件は、近年特に重要性が増しています。2024年10月に採択された欧州サイバーレジリエンス法をはじめ、セキュリティに関する法規制が強化される中、包括的な対策が求められています。具体的には、アクセス制御(認証方式、権限管理、パスワードポリシーなど)、データ保護(暗号化方式、保存期間、廃棄方法など)、不正アクセス対策(ファイアウォール、WAF、ウイルス対策など)を検討します。
システム環境要件は、ハードウェアやソフトウェアの動作環境に関する要件を定義します。近年は、環境負荷低減の観点からも重要性が増しています。具体的には、ハードウェアの設置環境(温度、湿度、電源設備など)、必要なネットワーク環境(帯域、回線冗長化など)を定義します。
続いて、非機能要件が適切に実装されているかを確認するための「主要な5つの検証方法」を紹介します。それぞれの検証方法は相互に関連しており、プロジェクトの特性や要件に応じて、適切な組み合わせで実施することが重要です。
性能テストは、「システムの処理能力」や「応答性能」を検証する重要なテストです。システムの応答時間やスループット、リソース使用率などを測定し、実際の運用を想定した負荷状態での検証を行います。また、大規模データベースを扱うシステムでは、データ量の増加に伴う性能劣化も重要な検証ポイントです。
セキュリティテストでは、「システムのセキュリティ対策の有効性」を検証します。サイバーレジリエンス法の施行を控え、その重要性はより高まっています。一般的な脆弱性診断に加え、アクセス制御の適切性やデータ保護機能の有効性を評価します。また、セキュリティインシデント発生時の検知・対応体制の実効性も確認します。
ユーザビリティテストは、「システムの使いやすさ」や「操作性」を検証するテストです。実際のユーザーの視点に立ち、システムの操作性や画面遷移の自然さ、情報の見やすさなどを総合的に評価します。PCやスマートフォンなど、異なるデバイスでの利用特性も考慮します。
ストレステストではシステムの限界性能を把握し、「異常時の動作」を確認します。通常の利用状況を超える負荷をかけ、システムの振る舞いを確認します。同時アクセスユーザー数を段階的に増やし、システムの限界値を特定するとともに、急激な負荷変動への対応も検証します。
運用テストでは、「システムの日常的な運用や保守が効率的に行えるか」を検証します。システム監視の容易さ、設定変更の柔軟性、障害発生時の原因特定のしやすさなどを評価します。ログ出力の適切性や、ログの検索・分析の容易さも確認します。
非機能要件を効果的に定義し、プロジェクトを成功に導くためには、要件定義の段階から具体的な実装方法までを見据えた取り組みが重要です。ここで具体的な進め方と、各フェーズで特に注意すべきポイントについて解説します。
非機能要件の検討は、「プロジェクトの企画・要件定義の段階」から開始することが重要です。その理由は、非機能要件が設計全体に大きな影響を与えるためです。例えば、高い性能要件を満たすためには、サーバーのスペックやネットワーク構成、データベース設計など、多くの設計要素を適切に設計する必要があります。
このため、機能要件と同様に設計書やプロジェクト計画書に明確に記載し、プロジェクト全体で共有することが重要です。もし、後から非機能要件を追加することになれば、設計の大幅な変更が必要となり、プロジェクトの遅延やコスト増大を招く可能性が高くなってしまいます。
非機能要件の適切な定義と実装には、「高度な専門知識」と「豊富な経験」が必要です。第三者の専門家は、過去の類似プロジェクトでの知見を活かし、見落としがちな要件の指摘や効果的な実装方法の提案を行えます。また、客観的な立場から潜在的な問題点を早期に発見し、プロジェクト全体のリスク低減に貢献することが可能です。
非機能要件は、明確な数値目標を設定することが重要です。「使いやすい」「安定している」といった曖昧な表現を避け、具体的な指標を定義します。例えば、「検索処理は3秒以内に完了すること」「年間稼働率99.9%以上を維持すること」「1000ユーザーの同時アクセスに対応すること」「1日1回のフルバックアップを実施すること」など、達成度を客観的に評価できる基準を設定する必要があります。
非機能要件はシステムの品質を決定する重要な要素であり、その適切な定義と実装がプロジェクトの成否を左右します。近年のデジタル化の進展により、システムの性能や信頼性、セキュリティなどの非機能要件は、ビジネスに直接的な影響を与えるようになりました。このような状況下では、専門的な知見に基づく第三者検証が効果的です。
株式会社ヴェスでは、22年にわたる第三者検証の経験を活かし、お客様の非機能要件の品質向上を支援しています。第三者検証を通じて、客観的な視点での評価と改善提案を提供し、より高品質なシステムの実現をサポートいたします。プロジェクトの成功に向けて、ぜひ弊社の知見をご活用ください。