Aaronaughtによる優れた回答は既にありますが、機能以外の要件についてはまったく間違っていた他の回答が削除されたため、いくつかの説明を追加して、非機能要件です。
機能以外の要件とは、「製品に必要な品質または特性」 ¹です。ジェイムス・テイラーは、非機能要件は「[...]はそれにもかかわらず要件であり、顧客にとって重要であり、機能要件よりもさらに重要である」と語っています。次に、2つの例を示します。製品のロゴと、機器の精度と信頼性です。これらの両方の例は、次のことを非常によく示しています。
- 非機能要件は、「最近はインターネットが重要であり、ウェブサイトを持ちたい」というようなマーケティング上の問題ではありません。
- 非機能要件は、生産性と製品を使用する能力自体に大きな影響を与える可能性があるため、顧客に関係します。
- 非機能要件は完全に客観的です。
最後のポイントは不可欠です。要件が主観的なものである場合、要件のリストには関係ありません。主観的なものから検証テストを構築することは不可能でしょう。要件のリストの唯一の目的は、顧客の明確な期待を列挙することです。「この正方形を赤くしたい」が必要です。「この正方形に素敵な色が欲しい」というのは説明が必要な願いです。
要件のリストは契約のようなものであることを忘れないでください(ほとんどの場合、契約の一部です)。それは顧客と開発会社によって署名され、訴訟の場合、あなたの仕事が正しく行われたかどうかを判断するために合法的に使用されます。私はあなたのソフトウェア製品を注文する場合は、「製品が大きくなければならない」ことを指定し、製品が行われている支払いを拒否、私のために、あなたが実際にやったことではありませんので、偉大な製品なのでしょうか?
それでは、いくつかの例を見てみましょう。
1.ソフトウェア製品はエンドユーザーに応答します。
これは必須ではありません。機能的ではありません。機能していません。それは単に要件ではありません。まったく。値はゼロです。検証テスト中に、ソフトウェアシステムがこの要件を満たしているかどうかを確認することはできません。QA部門でも顧客でもありません。
2.ユーザー統計の再読み込みは、100ミリ秒未満の時間の90%を実行します。付録Gパート2で指定されたパフォーマンスと、CPUの負荷が10%未満、メモリの負荷が50%未満、アクティブなR / Wディスク操作がないマシンでテストした場合。
これは必須です。付録Gパート2の精度が十分であれば、同様のハードウェアを搭載したマシンを使用してQA部門で検証テストを実行できます。常にバイナリの結果(合格または不合格)を取得します。
機能要件ですか?いいえ。システムが何をする必要があるかを指定しません。ソフトウェアアプリケーションがユーザー統計をリロードできる必要があることを指定する前に、おそらく機能的な要件がありました。
非機能要件ですか?そうです。これは、製品が持つ必要のあるプロパティ、つまりパーセントしきい値を指定した最大/平均応答時間を指定します。
3.アプリケーションはC#で記述されています。
これは要件ですか?コンテキストなしでは、本当にわかりません。この要件を挿入することにより、使用する言語について同僚と後で議論することを避けたいと考えている開発主任の願いかもしれません。また、ハードウェア/ソフトウェア、レガシーまたは互換性要素に基づいた要件である場合もあります。わかりません。
4.製品のC#コードベースは、Microsoft Minimum Recommended RulesおよびMicrosoft Globalization Rulesに従います。
これは奇妙なことです。個人的には、私はそれを要件と呼ぶのではなく、標準とベストプラクティスを指定する別のドキュメントに入れたいと思います。
5.アプリケーションのメインウィンドウには、ピンク(#fcc)で塗りつぶされた青い(#00f)10px境界線があり、これらの円は境界線の内側の端に配置され、直径が3pxで、互いに20px離れています。
これは要件であり、機能しないものです。それは私たちが検証テスト中にテストすることが何かを特定し、そしてそれは、製品のプロパティを指定しないで何の製品が行うことを意図しています。
6.車両追跡システムは、±0.016 mphの精度で速度を測定します。
また、非機能要件。システムの精度の測定可能なしきい値を提供します。システムが何をしなければならないかはわかりませんが、その仕事をどの程度正確に行っているかを伝えます。ちょっと待って?車両追跡システムが速度を測定することを伝えますよね?それは機能要件でもありますか?いえ、測定が行われたという事実ではなく、測定の精度にアクセントを置いているからです。
7.車両追跡システムは、車両の速度を測定します。
今では機能要件です。システムがどのように機能するかはわかりませんが、何をしているのかはわかりません。機能要件により、車両追跡システムが速度、バッテリー電力、圧力が何であるか、そしてライトが点灯しているかどうかがわからないという圧力を測定することがわかりました。
8. Webサイトのページには850ミリ秒かかります。ロードします。
これは必須ではありません。は1つにしようとしますが、完全に無効です。これをどのように資産化しますか?どのページ?すべて?クアッドコアクライアントマシン上のローカル1Gbpsネットワークと2%で使用されるSSDを備えた8コアサーバー、またはWebサイトが99%で使用される小さなサーバーでホストされている間に古くてラップトップのモデムを介してテスト?「ロードする」とはどういう意味ですか?ページをダウンロードするということですか?ダウンロードして表示しますか?大きなデータを含むPOSTリクエストを送信し、レスポンスをロードして表示しますか?
結論するには、非機能要件は、常にそれが完全に客観的で、自動または手動の検証テストで確認することができます何かを説明し、代わりに伝えるのことを意味要件であり、どのようなシステムがやっている、それが説明どのようにシステムは何かをしているか、またはシステム自体がどうであるかです。
¹情報技術プロジェクトの管理:ソフトウェア、ハードウェア、統合イニシアチブへのプロジェクト管理戦略の適用、James Taylor、ISBN:0814408117。