機能要件と非機能要件
機能要件、非機能要件は、主にソフトウェア開発、システム開発の業界で使用されている言葉で、システムのインフラを支える、サーバ設計や、ネットワーク設計時にも広く使われている言葉です。
システム開発や構築において、一番最初に行われる工程が『要件定義』です。この要件定義では、製作するシステムに対し、その製作の主目的となる、実装搭載すべき機能や満たすべき性能などを明らかにしていく作業を行います。
この要件定義のうち、特に『実装、搭載すべき機能』に関する要件のことを『機能要件』と言います。
例えば、『何がしたいのか』、また『何ができないと困るのか』など、そのシステムが必ず満たすべき要件のことを指します。車で例えるなら『前後に進むこと』、『右折、左折ができること』などが機能要件といえます。
機能要件はいわば主目的であり、開発者・ユーザ間で明らかにしやすいので、満たして当然とユーザは認識している項目であり、ユーザが期待する水準以上の品質で提供をしても、満足度は高まらないとい側面を持っています。
また、そのシステムがどれだけの性能を持っているかなど、主目的(機能要件)以外での要件は『非機能要件』と言います。車で例えるなら、『どれだけ燃費が良いか』『故障はしないか?』『スピードを出しても安定して走るか?』『故障してもメンテナンスはしてくれるか?』などが非機能要件と言えます。
この非機能要件については、ユーザ自身も意識していない場合や、暗黙の了解事項として期待している場合があるため、開発者とユーザ間で入念な話し合いをして、ユーザがそのシステムに期待している、求めている品質を明らかにし、満たす必要が有ります。
非機能要件は、主目的(機能要件)を満たした上での要件となるため、満たせば満たすほど、ユーザの満足度は高まるという側面を持っており、開発や構築の場面では特に重要視されています。
非機能要件は、以下の『非機能要求グレード』に基づき定義されます。
非機能要求グレード 6つのカテゴリ(※)
- 【1】可用性・・・いつでも使えるか?どれだけ安定感があるか?
- 【2】性能/拡張性・・・どれだけ快適に使えるか?利用者が増えても大丈夫か?
- 【3】運用/保守性・・・アフターサービスはきっちりとされているか?
- 【4】移行性・・・引っ越しや、乗り換えは簡単にできるのか?
- 【5】セキュリティ・・・ウイルス対策など、セキュリティ対策がしっかりされているか?
- 【6】システム環境/エコロジー・・・そのモノを置く設置環境は適切か?また環境保護に役立っているか?
(※)情報処理推進機構(IPA) 「経営に活かすIT投資の最適化」読本より引用