ソフトウェア開発は、クライアントが要求する機能を、要件定義書等で定義し、それに合わせて設計・実装していきます。
しかし、クライアントが要求する機能は最低限必要な事項であり、クライアントの満足度を高めるためには、隠れた要望=「非機能要件」も考慮する必要があります。
今回は、クライアントの満足度に関わる「非機能要件」について、機能要件との違いや定義すべき項目を解説していきます。さらに記事の後半では、非機能要件を確認するテストについてもご紹介しますので、ぜひ最後までご覧ください。
- もくじ
1.非機能要件とは?
非機能要件とは文字通り、機能面以外の要求全般のことです。顕在的な要求ではなく、潜在的な要求といえるでしょう。
例えば、機能要件として、「自社の商品を簡単に購入できる機能がほしい」というのがあった場合、非機能要件は、「画面表示までの待ち時間は3秒」「多くのユーザーが一度にアクセスしても、サーバーダウンしないようにする」など、性能やセキュリティ、運用性などに関する要求を指します。
非機能要件を満たさなければ、機能要件が十分でも良いシステム開発ができない可能性があります。機能要件だけでなく、非機能要件の定義もしっかりと行うことが重要です。
機能要件との違い
機能要件は、ソフトウェアで定義される要件のうち、機能に関するものを言います。
クライアントやユーザーが求めている、「搭載されるべき機能」を指すため、開発の際に想像しやすく定義もしやすいです。
一方で、非機能要件とは、ソフトウェアの使いやすさ・性能・信頼性・拡張性・運用性・セキュリティなどといった、機能以外の要件です。
機能要件よりも何を定義すべきかが不明瞭なため、ユーザーの立場にたって考えていかなければいけません。
非機能要件はユーザーの満足度に大きく影響するため、機能要件とともに重要なポイントとなります。
▼(例)社員名簿システムでの機能要件・非機能要求の違い
機能要件 | 非機能要件 | |
---|---|---|
概要 | 機能に関する要望をまとめたもの | 機能以外に関する要望をまとめたもの |
(例) 社員名簿システムの場合 |
・社員番号で検索することができる ・社員の写真を一覧画面に表示できる など |
・一度に多くのユーザーがアクセスしてもサーバが落ちない ・社員の情報が外部に漏れない など |
2.非機能要件で定義するべき項目
非機能要件はクライアントの満足度を高めるためにも、とても重要なものです。
しかし、ヒアリングなどを通して明確になりやすい機能要件に対して、非機能要件はクライアントが意識していない部分もあるので、定義漏れが発生する可能性があります。
この章では、非機能要件を決める際に定義すべき項目をご紹介します。
2-1 非機能要求グレード
非機能要求グレードとは、IPAが公開している非機能要件で定めるべき6つの項目を示したものです。非機能要求グレードの項目を整理しながら、非機能要件の定義づけを行っていきましょう。
可用性
システムサービスを継続的に利用可能とするための要求
(例)長時間利用できるか・メンテナンスがクライアントの利用に支障を及ぼさないか・障害発生時の復旧手順・スケジュールが事前に用意されているか、など
性能・拡張性
システムの性能と将来のシステム拡張に関する要求
(例)今後の機能追加の可能性を考慮した設計になっているか、同時に利用するクライアント数やデータ負荷に耐えられるか、など
運用・保守性
システムの運用と保守のサービスに関する要求
(例)ソフトウェアの利用目的に合わせて稼働時間を確保できているか、データのバックアップを適切な形式・頻度で取れているか、運用時の役割分担や手順のマニュアル化など
移行性
現行システム資産の移行に関する要
(例)旧システムの資産であるマスターデータやトランザクションデータを新システムへ安全に移行できるか、移行する場合の負担はどの程度か、など
セキュリティ
情報システムの安全性の確保に関する要求
(例)機密性の高い情報へのアクセスには利用制限がかけられているか、不正なアクセスをブロックできているか、など
システム環境・エコロジー
システムの設置環境やエコロジーに関する要求
(例)サーバーの設置環境が免震・耐震されているか、機材を故障させないための温度・湿度の管理ができているか、エネルギー面で環境に配慮できているか、など
2-2 非機能要求仕様定義ガイドライン
非機能要求仕様定義ガイドラインとは、日本情報システム・ユーザー協会がまとめた、非機能要件をまとめるためのものです。
こちらも非機能要件の定義の際に参考にしてみてください。
- 機能性
- 信頼性
- 使用性
- 効率性
- 保守性
- 移植性
- 障害抑制性
- 効果性
- 運用性
- 技術要件
3.非機能要件を確認する5つの「非機能テスト」
非機能テストとは、非機能要件を備えたソフトウェアになっているかどうかを確認するためのテストです。代表的な非機能テストとして、以下の5つが挙げられます。
- 性能テスト
- ストレステスト
- ユーザービリティテスト
- 保守性テスト
- セキュリティテスト
それぞれ解説していきます。
3-1 性能テスト
実際の利用状況を想定・再現した環境でソフトウェアを動かし、要件に沿って意図通りに動くことを確認するテストです。
ここでは主に、時間当たりの処理量や速度、応答時間やメモリの消費具合などのパフォーマンスを確認します。
3-2 ストレステスト
ソフトウェアが実際のデータ量やアクセス数に耐えうる構造になっているか確認するテストです。
通常時想定のデータ量はもちろん、突発的にアクセスが集中した場合などの異常な状況下で、システムがダウンするなど、クライアントのシステム利用に支障がないかどうかをチェックします。
3-3 ユーザビリティテスト
ソフトウェアがクライアントにとって使いやすいか、分かりやすい操作性になっているかどうかを確認するテストです。
具体的には、画面の表示や配置を見たとき、クライアントがやりたいことをできるかどうか、直感的に操作できるか、などの観点でテストを行います。
3-4 保守性テスト
ソフトウェアを長期的に運用していく中で、維持・管理がしやすいかどうかを確認するためのテストです。
具体的には、機能の改修や不具合の検知がしやすい構造になっているか、コードの修正・拡張がしやすいかなどの観点が挙げられます。
3-5 セキュリティテスト
ソフトウェアが、悪意のある外部からの攻撃に対して、脆弱な部分がないか、重要情報の流失などの運用上のリスクがないかをテストします。
「ペネトレーションテスト」「脆弱性診断」とも呼ばれています。
まとめ
今回はクライアントの満足度に関わる、非機能要件についてご紹介しました。
非機能要件とは、機能面以外の要求全般のことです。
クライアントが意識しやすい機能要件に対し、非機能要件はクライアントが意識していないニーズを掘り起こすことが必要です。
非機能要件を適切に定義することがクライアントの満足度を向上させる鍵となります。
非機能要件が満たされているかを確認する際には、今回ご紹介した非機能テストを取り入れてみてください。