要件定義(機能要件・非機能要件)とは? 機能要件と非機能要件の違い
ITプロジェクトの実行フェースでは要件定義から始まり、設計、開発、テスト、本番移行、リリース、保守までの一連の工程があります。
その中で、機能要件は、ソフトウェアやシステム開発において最初の大切な工程です。今回は、ソフトウェアやシステム開発工程において重要な要件定義について一緒に見ていきましょう。
要件定義(Requirements Definition)とは
要件定義とはユーザーが何を求め、何を実現したいのか、あいまいな表現から具体的な要求、数値目標にを落とし込み、業務要件として定義することです。
次に、業務要件を実現させるために、システムに求めるシステム要件として、機能要件、非機能要件を定義します。機能要件とはログイン機能や販売機能などのシステムに実装する機能そのものを指します。また、非機能要件とは応答速度などの性能要件や、データの容量などのキャパシティ要件、セキュリティ、運用など、機能以外にシステムに求める性能や特性です。
機能要件(Functional Requirement)
機能要件とは、サービスやシステム開発に際して定義される要件のうち、必ず搭載すべき機能や挙動に関するものです。主にクライアントの要求分析や、要件定義などの工程で検討し、決定されます。
機能要件はクライアントが求める事項であるため、システムが機能要件を満たしていなければ、プロジェクトとして失敗ということになります。クライアントにとって機能要件とは「実装されて当たり前のもの」であり、最低限必要な機能なので、要件どおりに搭載されたとしてもクライアントの満足度が大きく高まることはありません。
・機能要件の例:
機能要件が具体的に何を指すのかを理解するのに役立つ例を下記にいくつか挙げます。一般的に、機能要件は製品機能とユーザー要件の両方で構成されます。
機能要件の例には、次のものがあります。
・システムが実行しなければならないことの仕様
・満たさなければならないビジネスルール
・システムが認証で実行する必要のある手順
・システムで追跡する必要があるものの詳細
・システムの報告要件
・法規制の順守に関する詳細
・ユーザーのレベルとその承認の概要
・トランザクションの発生方法の詳細
・システムの外部インターフェース
非機能要件(Non-functional requirement)
非機能要件とは、サービスやシステム開発に際して定義される要件のうち、機能面以外のもの全般を指します。これには性能や信頼性、拡張性、運用性、セキュリティなどに関する要件が含まれます。
非機能要件は、システムが特定の機能を提供する方法に焦点を当てています。 一見すると、それらは機能要件ほど重要ではないと思われるかもしれませんが、製品にとって不可欠な「質」の部分です。非機能要件は、システムの機能には影響しませんが、システムのパフォーマンスには影響する要件と言えます。 つまり、非機能要件というのはすべてシステムの使いやすさに関係するものです。 高品質な非機能要件が定められれば、クライアントの満足度アップにつながります。
・非機能要件の例
非機能要件の例は、これらが何であるかをよりよく理解するのに役立ちます。 ここではいくつかの例を示します。
・速度:システムが特定のアクティビティを実行する速度
・可用性:システムやサービスを継続的に利用可能にするための要求
・セキュリティ:情報システムの安全性の確保に関する要求
・信頼性:アイテムが与えられた条件で規定の期間中、要求された機能を果たすことができる性質
・使用性:システム利用の成果に含まれる「目標のために有用である」という属性・特性
機能要件と非機能要件との違い
一部の人にとっては、機能要件と非機能要件の違いは理解されにくい面があるのも事実です。以下の表では、機能要件と非機能要件の主な違いをまとめているので、是非ご参考ください。
おわりに
要件定義はプロジェクトを成功させるために必要不可欠な工程です。このため、機能要件と非機能要件のどちらも欠かせないものと言えます。機能要件に定義されている機能は実装されて当たり前のものであるのに対して、システムの質を上げて満足度を高めるのが非機能要件です。
満足度の高いシステムをクライアントへ提供するためにも、機能要件と非機能要件は時間をかけてでも正確かつ丁寧に定義し、実装していく必要があるでしょう。
私たちSHIFT ASIAは、日本におけるソフトウェア品質保証・第三者検証のリーディングカンパニーである株式会社SHIFTの海外拠点として、世界中のお客さまに高品質なソフトウェア開発とソフトウェアテストサービスを提供しています。SHIFT ASIAのソリューションにご興味がございましたら、以下のソリューション一覧を是非ご覧ください。