機能要件・非機能要件とは
システム開発において重要なのは、プロジェクト企画の段階で「どのような機能を搭載するのか」「満たすべき性能について」といった要件定義を明確にする必要があります。要件定義は、機能要件と非機能要件の2種類に分類されます。
ここでは、この機能要件や非機能要件とはどういったものなのか、2つの違いについてなどをわかりやすくまとめました。
機能要件とは
機能要件とは、ユーザ(顧客)がシステムに対して求めている機能のことです。システム化をすることで、具体的に何が変わり、何が可能となるのかを細かく記述します。それはプロジェクト全体の目標でもあり、システム開発サイドにとっては作成した機能要件によってプロジェクトのゴールが明らかになります。
機能要件はユーザ(顧客)の要望やニーズを文書にしたものですが、それら全てをシステムに盛り込めるわけではありません。
ユーザ(顧客)の予算・スケジュール・組織などの制約があるため、それらの制約の中でシステムへの実装の可否・優先順位を明確にし、ユーザと調整して認識を一致させておかなければなりません。
非機能要件とは
非機能要件とは、ユーザ(顧客)が機能面以外でシステムに対して求める要件のことです。例えば、稼働率・システムの性能(処理スピードや拡張性など)・セキュリティ面・保守サービスなどの要件です。非機能要件は機能要件と並んでシステム目標であり、プロジェクトのゴールと言えます。
非機能要件が不十分だと、システム稼働後にユーザから性能などに対する不満の声が挙がる可能性が高まるため、しっかりと洗い出しておく必要があります。
顧客満足度に繋がるのは非機能要件
機能要件はプロジェクトを遂行するうえで欠かせないものですが、システムの品質に大きく関係する非機能要件への注力は、機能要件よりも重要かも知れません。機能面以外での性能に関わるため、セキュリティ・メンテナンス性・運用性・データ移行・パフォーマンスなどの項目を、いかに予算内で高性能なものにするのかが重要です。
これらの性能の充実度が顧客満足度にダイレクトに関係してくるため、顧客が満足する非機能要件を満たす努力が求められます。ヒアリングの際に、予算内で実現可能な非機能要件のリストを提示し、どのような性能が欲しいか洗い出しておきましょう。
非機能要件が不十分だと、「不安定でシステムがすぐに落ちる」「デザイン性が良くない」「セキュリティが甘くて情報漏洩してしまった」といったトラブルになりかねません。IPAが2018年に更新した「非機能要件要求グレード」をまとめて公開しているため、これを参考にヒアリングの徹底を行ってください。ダウンロードはIPAの公式サイトより可能です。
【参考】:非機能要件要求グレード
システムエンジニアが作成する
機能要件や非機能要件の作成は、上流工程を担当するシステムエンジニアが行います。作成スキルの他はもちろんのこと、非機能要件をいかにユーザから引き出せるかは、システムエンジニアの手腕が問われます。
非機能要件はシステム設計における重要なパラメーターなので、そこに不足や不備があるとユーザが納得できるシステムの構築が難しくなります。
機能要件の洗い出しは手順通りにヒアリングをしていれば、大きな齟齬や欠落は起きにくいですが、非機能要件は想像力・洞察力・共感性などのシステムエンジニアの資質に左右される面があり、機能要件と比べると難易度は高くなります。
ぜひ『マイナビIT エージェント』をご活用ください!
要件定義について
機能要件は要件定義の重要な要素です。機能要件を正しく書くためには、要件定義について押さえておかなくてはなりません。ここでは要件定義についてわかりやすく解説します。
システム化において、要件定義はユーザ(顧客)がシステム化に求めるものを明確にするものであり、システム開発側がユーザの要求を正しく認識・理解する上で、双方が意識合わせを行う重要な工程です。双方の意識合わせに重要なのは、機能要件と非機能要件であり、これらを正しく書けること、書き方を習得することが大切です。
簡単に言えば、要件定義書を作る目的は、ユーザのニーズをプランにまとめ、それを基にIT知識のない相手にも伝わるようにわかりやすく説明することです。そのためには、まずは要件定義の流れや必須項目の確認、書き方のポイントなどを把握する必要があります。
要件定義の流れ
精度の高い正しい要件定義がシステム開発における成功の鍵です。ここでは、要件定義をどのような手順で行うのかについて押さえておきましょう。以下、要件定義の基本的な流れについての手順です。
1.ユーザ要求のヒアリング 基本的に多くのITベンダーでは、最初に営業担当がユーザ(顧客)を訪問して、システム化に対する要求事項をヒアリングし、大まかな要件を確認することでシステム案件がスタートします。この後、システムエンジニア帯同で改めて詳細のヒアリングを行い、ある程度の要件定義を行って提案書を作成し、ユーザに提示します。
2.要求の細分化 システム化対象の全体像を把握したら、システムに実装する機能について、細分化をして要件をまとめていきます。業務フローに落とし込んで機能の詳細を把握し、実装する機能についての洗い出しを進めます。ここではユーザ要求や業務フローに関して、漏れや取りこぼしがないよう十分に配慮する必要があります。
3.要件定義書の作成 機能要件について細分化をしたら、ここから要件定義書の作成です。要件定義フェーズで作成するドキュメントの内容は、「システム設計フェーズ」につながっていく前段階と捉えます。要件定義書はシステム開発において全ての基盤となるため、ユーザ側と開発側双方が納得がいくまで、要件定義書の中身にはこだわりましょう。
要件定義の成果物に盛り込むべき項目
要件定義書に盛り込むべき項目は数多くあり、システム開発の内容や方式によって異なりますが、主な項目は次のようなものがあります。
◼︎システムの概要・システム化の背景・目的など システムを導入する目的や背景、開発導入するシステムの概要や範囲などについて表記します。
◼︎システム導入の目標と効果 「作業工数20%削減」「〇〇データの自動収集」といった、システムの目標や導入することによって得られる効果をできるだけ具体的に表すことです。
◼︎システムの機能と入出力要求 想定する機能、ユーザから直接要求された機能を詳細に記し、システムのインプットとアウトプットの具体化を行います。アウトプットについては、帳票や画面のイメージで明確にしていきます。
◼︎システム導入後の業務フロー システムの導入によって仕事や業務の流れが変わることがあるため、何がどう変わるのか、変更点などをフローチャートで表記します。
◼︎システム要求 ハードウェア・ソフトウェアの構成・OS・拡張性などのことです。システム保守・管理・システム引継ぎの際には、このシステム要求が重要な項目になります。
◼︎性能や品質要求 機能要件以外に、処理速度や処理能力などの非機能要件がユーザの要求を満たしている必要があります。具体的な時間や数字などで、品質要求に応えられる形で表記します。
◼︎セキュリティ要求 最近は、情報漏洩やコンピュータウイルスなどのセキュリティ事故もユーザの大きな関心事です。セキュリティ面に関する記載も欠かせません。
以上を大項目として記載し、この中に詳細を中・小項目として網羅していきます。要件定義書は曖昧な表現は避け、双方に誤解が生じないよう可能な限り客観的・具体的に記述し、円滑に設計フェーズに進めるようにしましょう。
5W2Hで書くとわかりやすい
実際に要件定義書を作る際は、「5W2H」を明確にする方法がおすすめです。5W2Hは「When(いつ)・Where(どこで)・Who(誰が)・What(何を)・Why(なぜ)・How(どうやって)・How much(いくらで)」を意味しており、本当に必要な機能を浮き彫りにさせることができます。
要件定義書の作成に迷ったら、まずは5W2Hを使って作成してみましょう。
When:納期はいつまでなのか Where:どこまで作るのか Who:誰がどうシステム開発に関わるのか What:どんなシステムを作るのか Why:なぜそのシステムを作るのか How:どうやってプロジェクトを完成させるのか How much:制作にはいくら必要か
要件定義の出来栄えは実績に直結する
システムエンジニアやITエンジニアにとって、機能要件を含む要件定義はシステムの品質に大きく影響を与える重要な要素です。要件定義書の出来栄えは、システムエンジニア自身の評価や実績に直結し、プロジェクトの成功や報酬にも影響を与えることが多いです。
そのため、精度の高い要件定義書の作成は、キャリアや年収にも影響を与える要因の一つとなり得ます。一般的なシステムエンジニアの年収については、いくつかのデータを元に算出すると次のようになります。
「マイナビエージェント 職種図鑑」でのシステムエンジニアの平均年収は431万円(※2024年9月執筆時点)ですが、経済産業省2017年発表の「IT関連産業の給与等に関する実態調査結果」から近い職種のエンジニア/プログラマを参考にすると、平均年収592万円でした。
国税庁2020年発表の「民間給与実態統計調査」における民間企業の平均年収は433万円なので、システムエンジニアは実績やスキル、年齢によって年収に幅があると言えます。
【参考】:マイナビエージェント 職種図鑑 ※【平均年収 調査対象者】2020年1月~2020年12月末までの間にマイナビエージェントサービスにご登録頂いた方 【参考】:IT関連産業における給与水準の実態① ~ 職種別(P7) 【参考】:民間給与実態統計調査-国税庁
機能要件の書き方
システム開発の中で、要件定義フェーズの機能要件は初期段階の工程です。ユーザ(顧客)がシステムの完成形に対して具体的なイメージを作り上げている場合は、この機能要件の洗い出しは容易ですが、基本的には具体的なイメージがないという前提で進めるべきでしょう。以下、その具体的な手順を紹介します。
背景や目的を明確にする
要件定義を行う前の段階では、ユーザのシステムイメージはまだ漠然としています。まずは、その漠然としたものを具象化するためにシステム化の背景・理由・目的を明確にします。背景と目的がしっかり理解できていないと議論がまとまらず、要件を絞り込む際の判断材料が不足することになります。
必要な機能を洗い出す
背景や目的が明らかになったら、ユーザが求める機能を1つずつヒアリングするところからスタートします。ヒアリングした内容を文書・図・表にまとめ、具体的な画面や帳票のイメージを作成しながらユーザの抱くイメージをより具体化していきます。
業務改善をメインとする仕組みであれば、現状の業務フローと導入後の業務フローを対比させるなどして、必要な機能を洗い出していきます。
機能要件の選定
必要な機能を全て洗い出したら、その中から機能単位で優先度を付けていきます。すべての機能を網羅できれば良いですが、予算・納期・技術的な問題などの制約条件があるため、すべての要求を満たすことは難しいでしょう。機能毎に概算の工数や費用を提示し、カットする機能に対しては延期・機能縮小・業務の見直しなどの代替案を検討していきます。
予算不足で代替案を提示する場合は、開発フェーズを分けて予算確保ができるという条件で2次フェーズに回すという方法が、ユーザにも受け入れられやすくなります。
機能要件のガイドを活用しよう
機能要件を書く際のコツを、IPAがカテゴリ別に分けて公開しています。書き方に迷ったら、サイトを参考に進めるのもおすすめです。全部で278ものコツが掲載されているため、プロジェクトに合ったものを選定して参考にしましょう。
【参考】:機能要件の合意形成ガイド
機能要件に書く際の注意点
機能要件はユーザ(顧客)とのヒアリングを通じて、聞き取り・確認を行いながら記述していきますが、視点を外さず手順に気を付けて行いましょう。
ユーザ要求の背景や目的は何か
ユーザ(顧客)の要求やニーズには必ず背景があり、目的があります。その点を理解しないと認識のズレや齟齬を招く危険性があります。例えば、ユーザから「顧客の買い物動向について、本社で前日の状況を翌日に把握できるようにしてほしい」という要求があったとします。
その目的が、単に集計作業を軽減したいのか、あるいは分析をしたいのか、報告用のレポートを作成したいのかによって実装する機能が異なります。また、それは非機能要件にも大きく関わります。ユーザの要求がどのような背景から生じたのか、その目的や狙いは何なのかをここで明らかにすることが大切です。
必要な機能は何か
ユーザ要求のレベル、温度感をつかむことは重要です。「システムに対して何か求めるものはありますか?」という問いに対して、「〇〇を実現してほしい」という要求が出された際、それは単なる願望レベルのものから、非常に強い要求であるものまで、温度差があると見なければなりません。
実装すべき機能は何か、可能であれば実装した方が良い機能はなにか、特に必要性のない機能は何かを正しく見極めることが重要です。
機能要件の確定
機能要件を確定するフェーズでは、その最終確定が難航するケースがあります。必要と思われる機能を正しく洗い出せたものの、全ての機能を実装すると予算内に収まらないという問題に直面した時です。
何を残し、何を削るのかをユーザと話し合って決めるのですが、ユーザにしてみれば、せっかく出した案や要求を断られたくはないでしょう。削る場合はユーザを納得させられる理由や代替案を示さなければなりません。ユーザの立場に立ち、ユーザが納得できる方策を詰めていくことが重要です。
エンジニア転職のご相談はぜひ
『マイナビIT エージェント』へ!
機能要件のサンプル
機能要件を進める上で、ゼロから始めるのは現実的ではありません。ネット上にアップされているサンプルを参考にしてカスタマイズして利用することをおすすめします。
機能要件一覧表については、これがベストだというものはありませんが、独立行政法人の情報処理推進機構(IPA)が要件定義について各フェーズに分けてサンプルを掲載しています。機能要件の他に非機能要件のサンプルも参照できるため、各項目の中から参考にしやすいものを選択して活用しましょう。
【参考】:超上流から攻めるIT化の事例集:要件定義 | アーカイブ | IPA 独立行政法人 情報処理推進機構
要件定義をマスターしてキャリアアップに繋げよう
要件定義の精度が高ければ、ユーザの要求に合致したシステムの構築が行え、高い評価を得られます。また要件定義の中でも、機能要件・非機能要件の出来栄えがシステムの成否を大きく左右します。
さらに、これらのドキュメントの精度が高ければシステム設計やプログラミングの精度も高まり、開発途上での手戻りも起きにくくなることで開発効率がアップするでしょう。
優秀なシステムエンジニアを目指すなら、システム設計スキルはもちろん、要件定義がきちんとできなければなりません。要件定義のスキルが上がると、上位職種であるシステムプランナーやシステムコンサルトなどのキャリアアップも可能です。
キャリアアップ転職には、自身の市場価値を知るためにも転職に強い転職エージェントを活用しましょう。
そこでぜひご活用いただきたいのがマイナビIT エージェントです。
マイナビIT エージェントは、IT・Webエンジニア向けの無料の転職⽀援サービスです。
IT・Webエンジニアの転職事情に詳しいキャリアアドバイザーが、あなたのご経験やスキルをお伺いし、転職活動のプランをご提案致します。
アドバイザーは企業側の人事担当者と直接連携を取れますので、求人票に載っていない企業情報も確認することができます。残業時間や給与面など、働き方などをしっかり確認の上で応募企業を選んでいくのが良いでしょう。
・資格やプログラミングの勉強をしているけれど、企業が求めるレベルに達しているのかわからない ・スキルアップをして市場価値を上げていける企業の選び方を知りたい ・数多くあるITエンジニアの職種の中で、自分に向いている仕事は何か知りたい
こうした悩みを抱えていらっしゃる方は、まずは無料登録でキャリアカウンセリングをおすすめ致します。
マイナビエージェントに無料登録して
転職サポートを受ける
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから