要件定義という言葉は知っているが、具体的に何を行うのかご存知ない方も多いのではないでしょうか。本記事では要件定義の意味や作業内容、手順について解説します。
要件定義とは?
要件定義とはシステム開発における工程の1つです。
システム開発では実際にプログラムを作る前に、どのようなシステムにするのか設計書を作る必要があります。例えるなら、家を建てる前に設計図を作るようなものです。
そして、設計書を作るために必要な作業が要件定義です。要件定義では、顧客が求めるシステムの要望をヒアリングし、ドキュメントとしてまとめていきます。たとえば、システムに必要な機能や性能、希望予算・スケジュールなどです。
要件定義を行うことで、顧客の要望をきちんと設計書に反映し、開発するシステムの要件に齟齬が出ないようにするのです。反対に、要件定義を飛ばしてしまうと、顧客の要望から離れたシステムになってしまい、開発をやり直すことになるでしょう。
要件定義が重要な理由
昨今のシステム開発では要件定義の重要性が増していると言えます。
その理由は、システムが私達の生活にとって当たり前のものとなり、顧客がより複雑で便利なシステムを求めるようになったためです。たとえば、ECサイトを作る場合も、「レコメンド機能が欲しい」「高度な検索機能が欲しい」など要望が多くなりました。そのため、顧客の要望をまずは書類としてまとめ、後にトラブルにならないようにするのです。
要件定義と要求定義の違い
要件定義と似た言葉に要求定義がありますが、意味は異なります。
要求定義は、顧客が出したシステム化の要望を整理することです。つまり、要件定義の最初のステップという位置づけになるでしょう。
要件定義の手順
要件定義は次の手順に従って行われることが多いです。
-
- ヒアリング
- 要求の整理
- 要件の定義
- 要件定義書の作成
- 予算・期間の見積もり
- 顧客の合意を得る
1つ1つの要件定義の手順について詳しく解説します。
また、要件定義を含めたシステム開発すべての工程について知りたい方は、以下の記事を参考にしてください。
※関連記事
システム開発の基本工程について解説!企画からリリースまでの流れ
1.ヒアリング
まずは顧客と打ち合わせを行い、どのようなシステムが欲しいか、現状の企業の課題などをヒアリングします。顧客は「欲しい機能」や「予算・スケジュールの希望」「現状の課題や問題」などを伝え、開発企業がそれをメモしていくのが要件定義の第一歩です。
ただ、単純に要望をメモしていくだけでは済まないこともあります。たとえば、顧客が技術的に実現不可能なことを要求してきた場合、開発企業は実現不可能である旨を伝え、別の案を提案しなくてはいけません。
また、どのようなシステムが欲しいと希望が固まっていない顧客もいます。その場合、開発企業から「このようなシステムや機能はどうでしょうか」と提案する必要があるでしょう。
2.要求の整理
続いて、ヒアリングした内容を元に要求の整理を行います。
要求の整理にはさまざまな方法がありますが、「必須要件」と「希望要件」に分けて考えるのが基本的なやり方です。
必須要件は必ず実現させたい機能のことで、希望要件はできれば実現させたい機能のことであり、2つに分けて議論することで、話がまとまりやすくなります。また、どこまで要求通りに行うべきか折衷案も立てやすくなるでしょう。
3.要件の定義
要求の整理が完了したら、システムの詳細部分を固めるために要件定義を行います。要件定義は機能要件と非機能要件の2つに分けるのが基本です。
機能要件はシステムの機能に関する要件で、非機能要件はセキュリティーなど機能面以外の要件のことであり、開発時にはこの2つを満たす必要があります。
4.要件定義書の作成
要件定義が完了したら、要件定義書を作成する必要があります。
要件定義書には、システム概要や開発時の目標、システム開発で顧客が得られるメリット、などを分かりやすくまとめなくてはいけません。
要件定義書は後ほど顧客にチェックしてもらいます。そのため、エンジニア知識がない方でも読めるように専門知識を省いてまとめることが重要です。
5.予算・期間の見積もり
最後に、システム開発の予算・期間を見積ります。見積もった予算を顧客に提示し、そのうえで契約を行う必要があるためです。
また、もし開発期間が長引く場合、システム開発の一部を外注するなどの対応も必要になるかもしれません。
予算は、開発に必要な整備費用+エンジニアの人件費によって算出します。外注する場合は外注コストも開発予算に含めないといけません。
6.顧客の合意を得る
要件定義書や見積書、契約書などの必要な書類を顧客に提出し、契約に合意してもらえるよう進めます。顧客から不明点などに関する質問を受けたら、的確に答えられるようにしておかなくてはいけません。
顧客の合意が得られれば契約へと進みます。契約後はシステムの設計を作成し、その後に開発作業に入るのが基本です。以上が、要件定義の流れとなります。
要件定義では具体的に何を決めるのか
要件定義の目的は次の3つを決めることです。
-
- システム概要
- 機能要件
- 非機能要件
これら3つを決めることで、設計・開発段階での手戻りを減らすことができます。手戻りを減らすことで、納期に間に合わなくなることを防ぎ、また最小工数でシステムを納品することができます。
1つ1つの要件定義の目的について詳しく解説します。
1.システム概要
1つ目はシステム概要です。
システム概要には、システムのコンセプトや、システム導入のメリット、他企業との差別化ポイント、システムによる業務フローの変更内容などをまとめます。
2.機能要件
2つ目は機能要件です。
機能要件とはその名の通りシステムやアプリの機能のことです。たとえばSNSなら、フォロー機能、ログイン機能、検索機能、投稿機能、拡散機能などは必須機能となるでしょう。
加えて、レコメンド機能や足跡機能など、顧客から欲しいと言われた機能もまとめていきます。どの機能が顧客からの要望に紐付いているのか、明確に要件定義書に記載することが大切です。
3.非機能要件
3つ目は非機能要件です。
非機能要件とは機能面以外が求める要件のことであり、システムやアプリケーションの質を向上させるうえで重要なものとなります。
たとえばSNSなら、Webサイトのセキュリティーやユーザビリティー、運用・保守のしやすさ、といった項目です。このような目には見えない箇所の質を高めることで、システムやアプリの評価が変わってくるため、機能要件同様に深く話し合い決めていくことが必要です。
非機能要件に関しては、専門知識がないとイメージできない部分も多いため、顧客側が提案するよりも開発企業側の方から打ち合わせで提案することが多いです。
要件定義の質を高めるために顧客が気をつけたいこと
システム開発の外注を検討している方も多いでしょう。そこで、要件定義の質を高めるためにシステム開発を外注する側が気をつけたいことを5つ解説します。
-
- 担当者のコミュニケーション能力をチェックする
- 何を開発したいのか明確に伝える
- お互いの認識が統一しているか確認する
- その後のスケジュールを共有してもらう
- 要件定義書の質を確認する
これら5つはシステム開発の予算を抑えるうえでも重要なことです。1つ1つの気をつけたいことについて詳しく解説します。
1.担当者のコミュニケーション能力をチェックする
まず確認したいのが、窓口担当者のコミュニケーション能力です。
窓口担当者は、こちらとエンジニアの橋渡しを行う重要なポジションと言えます。こちらが話したシステムに関する要望などは、すべて担当者によって伝えられるため、担当者のコミュニケーション能力が低いと、エンジニアに要望が伝わらない可能性があるのです。
こちらの要望とは異なるシステムが完成してしまい、開発がやり直しになる場合もあります。開発がやり直しになると、余計なコストがかかってしまうかもしれません。
そのため、担当者のコミュニケーション能力は重要です。「こちらの話をしっかり理解しているか」「専門用語を使わず分かりやすく説明してくれるか」「実現不可能な点は正直に難しいと言ってくれるか」などを確認したうえで契約しましょう。
2.何を開発したいのか明確に伝える
担当者のコミュニケーション能力も大切ですが、依頼者側も要望をきちんと伝える努力を行うことも重要です。どのようなシステムを開発したいのか、明確に伝えることを意識しましょう。
システム開発の要望を伝える際は「5W2H」を意識することが重要です。Who(誰が)、What(何を)、When(いつまでに)、なぜ(Why)どのように(How)」の5W1Hにくわえて「How Much(どのくらいの予算か)」を伝えましょう。
5W2Hを意識することで抜け漏れなく要望を伝えることが可能です。
もし5W2Hの中に分からないものがあれば担当者に質問します。たとえば、いつ開発が完了するのか目安が分からない場合や、予算がどの程度かかるのか分からない場合などです。
3.お互いの認識が統一しているか確認する
打ち合わせではお互いの認識が統一しているかしっかり確認しましょう。認識が食い違っていると、こちらの要望通りに開発が進まなくなってしまうかもしれません。
「この担当者、話をちゃんと理解しているの?」と思うことが少しでもあれば、一度改めて要望を話し、認識が統一しているか確認を取ります。
また、要件定義書や設計書には顧客側もしっかり目を通し、要望が反映されているか確認することが重要です。
反映されていない場合は、遠慮なく変更を申し出た方が、後々開発がやり直しになるのを防ぐことができます。「要望を伝える際は早めに」。これが基本です。
4.その後のスケジュールを共有してもらう
要件定義が終わった後は、設計・開発・テスト・リリースが行われます。開発完了日だけでなく、各工程でどの程度時間がかかるのかスケジュールを共有してもらった方が良いです。
スケジュールを共有してもらうことで、開発企業側に「突っ込まれない予定を立てなくては」という意識が働き、より正確にスケジュールを立ててもらえる可能性があります。
スケジュールを正確に立ててもらうことで、開発が納期に間に合わないことを防ぐことが可能です。
5.要件定義書の質を確認する
要件定義書の質から、開発企業のレベルをある程度把握することが可能です。
たとえば、専門知識を使わずに分かりやすくまとめられているか、システムの機能だけでなくシステムのメリットや業務フローの改善内容が具体的に書かれているか、などを確認します。
冒頭でも解説した通り、要件定義はシステム開発における重要な工程です。要件定義書の質が高い企業は、それだけ開発ノウハウが蓄積されているということであり、質の高いシステムを提供してくれる可能性が高いと言えます。
最後に
この記事で説明してきた内容をまとめると以下のとおりです。
-
- 要件定義の手順:ヒアリング/要求の整理/要件の定義/要件定義書の作成/予算・期間の見積もり/顧客の合意を得る
- 要件定義で具体的に何を決めるのか:システム概要/機能要件/非機能要件
- 要件定義の質を高めるために顧客が気をつけたいこと:担当者のコミュニケーション能力をチェックする/何を開発したいのか明確に伝える/お互いの認識が統一しているか確認する/その後のスケジュールを共有してもらう/要件定義書の質を確認する
要件定義はシステム開発の中でも重要な工程です。要件定義の質によってWebサイトやシステムの品質が決まってくると言っても過言ではありません。そのため、開発を依頼する際は要件定義に力を入れている企業に相談することをおすすめします。
どの企業に依頼すべきか分からない場合、株式会社エイチビーラボにご相談ください。
株式会社エイチビーラボでは、ベトナムに特化したオフショア開発サービスを提供しております。これまで多種多様なシステムを開発した実績があるため、お客様のご要望を的確に反映させる質の高い要件定義を行うことが可能です。システムの開発でお困りの方は、ぜひお気軽にお問い合わせください。ご相談から、開発、運用まで親身にサポートいたします。