機能要件、非機能要件をご存知でしょうか。
聞いたことがあるけど、よくわからない方も多いのではないでしょうか。
本記事では要件定義の一部である機能要件、非機能要件について、どのような違いがあるのかなども含めて解説いたします。
IT企業として20年以上の実績を持つ当社の蓄積データを活用しながらまとめております。
ぜひお読みいただき、知識を深めていってください。
目次
1.機能要件と非機能要件の違いとは
機能要件は必ず搭載すべきものであり、非機能要件はあったら便利な機能です。
まずは機能要件と非機能要件の違いを確認していきましょう。
1-1 機能かそうでないか
機能要件は機能で非機能要件はそうでないものという言葉通りの違いとなります。
そもそも機能とは例えばこのボタンを押したらデータが出力されたり、検索ができたりといった、そのシステムができることを指します。
その機能についてどのようなものが要求されているのか、どのように実装していくのか決めることが機能要件であり、システムの主機能です。
一方、非機能要件は機能以外のものを指しております。具体的にはボタンを押してからデータ出力にかかる時間を3秒以内にするとか、検索結果の自動スキャンを行いセキュリティ上問題のある項目は検索結果から自動的に排除されるようにすることなどがあげられます。
一見、機能のように思えますが、あくまで機能を補助したり条件付けをしたりとサブ的なポジションです。
機能要件 | 非機能要件 |
---|---|
実装すべき必須となる機能 | 実装しなくてもいいがあったら良い |
比較的簡単に定義できる | 定義することが難しい |
システムの根幹 | システムの質を高める |
システムが何をするか | 機能がどのように動作するか |
1-2 各立場から見た機能要件と非機能要件
前項で機能要件と非機能要件の大枠を解説しましたが、もう少し掘り下げて解説します。
開発を行うためには自社で行うまたは外注の2パターンとなります。
両者に共通することは発注者と受注者が存在し、それぞれの視点から機能要件と非機能要件の見え方を説明します。
より、理解が進むと思います。
1-2-1発注者側からの視点
新しくシステムを作りたい発注者側は、まずは何を作りたいかの「その概要」と「こんなことができたらいいな」を検討します。
それを基に依頼内容を決めて開発者(受注者)に伝えて開発がスタートします。
外注の場合契約書など細かい点はありますが、大方この流れで開発が進んでいきます。
発注者側からの「こんなことができたらいいな」が機能要件にあたり、非機能要件は特にないケースが多いです。
もちろん、この機能は10秒以内で処理を終えてほしいという非機能要件に関する希望も出てくることもありますが、機能要件が大半になります。
IT企業や開発に詳しい人が発注者側になるケースであれば、機能や非機能を理解した上で内容を検討しますが、それ以外の人が発注者側になるケースでは、そのシステムができることにフォーカスがあてられ検討されることが多いため、機能要件が多くなります。
そして開発者が非機能要件を検討し実装していきます。ここで、開発者が実施した要件定義の内容を確認しておくことをおすすめします。
非機能要件として定義されたものが不要なケースもあるためです。
また、発注者側で要件定義を完了させる場合もあります。
それにより、開発者が非機能要件を検討しないケースもあります。
まとめますと、発注者側は機能や非機能は特に意識せず、システムで実現したいことを伝えます。
ただし、開発に詳しい発注者であれば、機能と非機能を理解した上で依頼ができます。
機能や非機能については開発者が要件定義で改めて定義するため、発注者はシステムの完成形やシステムでしたいことを全て洗い出し依頼しましょう。
1-2-2受注者側(開発者)からの視点
受注者側(開発者)は発注者からの依頼を基に開発を進めるため要件定義にて、機能要件と非機能要件を定義していきます。
依頼者側で要件定義をすることもありますが、受注者側で実施するケースも多いです。
依頼者側からヒアリングしたシステムの概要や実現したいことなどを基に要件定義を進めます。
比較的簡単に定義しやすいのが機能要件であり、システムで実現したいことが機能要件として実装すべき機能であり、難しく考える必要がありません。
同時に機能要件は必ず実装すべきことであるため、抜け漏れに注意する必要があります。
一方、非機能要件は、ヒアリングした内容を基にシステムの質を高めるという観点から検討する必要があります。
そのため、定義することが難しくなっています。
しかし、発注者から非機能要件の要望があった場合を除き、実装をしなくてもよいため、無理に考え出す必要もありません。
ただ、質が高いシステムである方が発注者の満足度もあげられることを覚えておきましょう。
まとめますと、発注者からの要望をヒアリングし、機能要件と非機能要件を定義していきます。
正しくヒアリングを実施し、抜け漏れなく機能要件を定義し、質を高めるために非機能要件を検討していきます。
要件定義の内容は完成後の認識相違が発生しないよう、発注者と共有しましょう。
1-3 よく聞く要件定義との違い
要件定義との関係性は異なるものではなく、要件定義の中身の1つです。
要件定義を実施するにあたり、必ず搭載すべき機能を「機能要件」、それ以外のものを「非機能要件」として定義していきます。
要件定義==機能要件と非機能要件となります。
下記は要件定義書の作成例です。
例の通り、要件定義の一要素となっております。
2.機能要件とは
機能要件について解説していきます。
2-1 機能に関する要件のこと
機能要件とは機能に関する要件を決めていく要件定義のフェーズで実施され、システムに必須となる機能を定義していきます。
機能とは前述している通り、そのシステムができることであり、ユーザーが実際に触れて使う部分を指します。
システム開発の中で最も重要なポイントであり、この機能が未実装であれば開発の失敗になります。
システム開発を構想する前段で、「ここが不便だから効率化したい」「こんな管理ができるシステムがほしい」そういった思いからこんな機能が欲しいと構想をスタートさせるケースが多いと思います。
システムの根幹を担うため重要なポイントになります。
例えば、在庫管理システムを想像しましょう。
元々、在庫はエクセルで管理していましたが、共有するのにも手間がかかって何かと不便さを感じていました。
そこで新しくシステム化するために構想をスタートさせました。
この場合、在庫を入力する画面が欲しい、関係部署に共有できるようにしたい、印刷したいなど必要な機能として挙げられるとおもいます。
その機能を機能要件で定義していきます。
2-2 注意点
機能要件は実装しなければならない機能を定義するため、定義漏れや、実装漏れが発生した場合、開発の失敗になります。
そのため、抜け漏れがないため注意を払う必要があります。
また、開発を依頼する際も必要な機能を正しく伝える必要があります。
依頼を受ける側は正しくヒアリングすること。
口頭だけでなく、エビデンスを残しておくことをおすすめします。
3.非機能要件とは
非機能要件について解説していきます。
3-1 機能以外に関する要件のこと
主目的である機能要件以外の機能を要件として定義していくことです。
ユーザービリティ、性能、拡張性、セキュリティなどの機能を指しており、システムの質に関わる部分になり、システムの使用者が直接触れることが無い部分です。
しかし、定義していくことが難しい部分でもあります。
機能のサブ的な部分であり、例えば出力の時間を5秒以内にすることなど、「あったらいいな」というシステムの質を向上させる部分の定義をするため難しいとされています。
例として在庫管理システムで考えてみましょう。
前項で在庫を入力できる画面や印刷できるなど機能要件を考えました。
非機能要件はこの機能に対して、入力画面に100人が同時にアクセスしてもレスポンスタイムを2秒以内にすることや、定期的なバックアップを実施し復旧時間は30分以内にすることなどを定義することができます。
ただ、在庫を入力する人が1人しかいないと事前にわかっている場合、100人の同時アクセスを想定する必要もないケースもあります。
このようにケースバイケースで必要な非機能を判断する必要があり、それらは事前の発注者との打ち合わせでヒアリングした結果を基に検討していくため難しいと言われています。
3-2 注意点
前述してきました通り、非機能要件は定義することが難しく正しく情報を整理する必要があります。
せっかく機能はバッチリなのに、処理速度が遅い・システムダウンしたら1日復旧できないなど非機能要件によって質がガタ落ちしてしまうことにもなりかねません。
そこで、やみくもに非機能要件を進めるのではなく、下記の文献を参考にすることをおすすめします。
・非機能要求グレード
https://www.ipa.go.jp/archive/digital/iot-en-ci/jyouryuu/hikinou/ent03-b.html
・非機能要求仕様定義ガイドライン
また、依頼者から要望があった場合は機能要件と同様に必須項目として実装する必要があります。
機能要件と非機能要件のまとめ
機能要件、非機能要件について解説をしてきました。
機能要件はそのシステムに必須となる機能、非機能要件はシステムを支え「質」を向上させるための必須機能以外の部分を指しております。
ここを押さえておけば問題ないでしょう。
必須となる機能要件の方が重要だと感じることも多いですが、非機能要件がしっかりされていないとシステムの「使いづらさ・ストレスを感じる」といったマイナス面が出てきてしまうため、注意が必要です。
弊社では高品質なシステム開発を売りとしており、機能要件ももちろん非機能要件も正しく分析し、お客様にご満足いただけるシステム開発をご提案しております。
システム開発をご検討されている方は、下記よりご連絡をお待ちしております!