1. HOME
  2. Geekly Media
  3. 要件定義とは?決定までの具体的なプロセスや要件定義書、必要なスキルを詳しく解説!
要件定義

要件定義とは?決定までの具体的なプロセスや要件定義書、必要なスキルを詳しく解説!

要件定義とは、プロジェクト開始前に必要な機能などを分かりやすくまとめていく作業のことです。要求・要件定義、そしてプログラミングからテストを得て、ようやく運用に至ります。今回は、要件定義の基礎知識から具体的な流れを分かりやすく解説します。

ギークリーはIT・Web・ゲーム業界に特化した
転職エージェントです

まずは年収診断をしてみる

要件定義とは?

 

 

要求をまとめ、進め方を決める

 

システム開発を行う上で「何をどうシステム化するのか」を決めるのが要件定義です。

まずはクライアントの要求を細かくヒアリングし、その要求を実現するために実装する機能や性能を決め、具体的な開発工程を設計するのがプロジェクトにおける一番最初のフェーズです。

ゴール設定と方向性の決定は、プロジェクトの成功を左右する大きな要因です。

要件定義はシステム開発における上流工程に位置します。

 

要件定義と要求定義の違い

 

要求定義は、要件定義のベースとなるクライアントの要求をまとめたものです。

クライアントにとってシステムによって実現したいこと・解決したい課題を開発者視点に落とし込んだものを指します。

つまり要求定義は顧客の声の要約であり、要件定義は要求を実現するための機能や性能決めという点が違いです。

 

要件定義と基本設計の違い

 

基本設計は、要件定義で決まった機能を実現するための設計作業です。

何を実装するかを決めるのが要件定義で、システムを動かす部分の仕様を決めるのが基本設計だといえます。

基本設計のためには要件定義において抽出した要件を機能単位に分割する必要があります。

それぞれの機能が「何を実現するのか」を決め、成果物として基本設計書を作成するフェーズです。

 

【完全無料】仕事タイプ診断をしてみる

 

 

要件定義の具体的な流れ

 

 

ユーザー要求のヒアリング

 

企業では、よりユーザーに近い部署が営業を行いユーザーからの要求をヒアリングしてくるところからシステム案件が始まります。

もちろんシステムエンジニアが営業を兼任する企業も多いのですが、そこでユーザーの要求をシステム要件へ変換していくのが要件定義の始まりとなります。

ユーザーが目指すのは、これまで手作業だった業務のシステム化や、既存システムの変更などです。

これらの要求を正確に把握し、細かく的確にイメージすることで、具体的なシステムの全体像を把握します。

 

要求の細分化

 

システムの全体像が把握できたら、実際のプログラミングにおける機能のひとつひとつを、細分化して要件としてまとめていきます

ユーザーの業務フローの詳細を把握し、全てがひとつのシステムとして動くように、実装すべき機能を洗い出していきます。

ユーザーの要求や業務フローにおいて、取りこぼしが無いように配慮しなければなりません。

また、要求内容の全てをシステム化できるとは限りませんので、要件定義の時点で切り分けをしておく必要もあります。

機能範囲が明確でなければ、ここから始まるシステム開発の途中で“仕様バグ”として、大きな手戻りを発生させてしまうことになります。

最悪の場合、プロジェクトの失敗を招く元凶となってしまいますので、細かいところまでユーザーとのすり合わせが必要です。

 

要件定義書の作成

 

要件の機能を細分化できたら、いよいよ要件定義書の作成です。

要件定義書で書き出すドキュメントの内容は、要件定義後の工程である「システム設計」に落とし込む前段階です。

要件定義書で定められたシステムの全体像から、細分化された機能までをしっかりと記載しておかなければ、システム設計の工程で頓挫します。

要件定義書はシステム開発における全ての基盤であり、システム運用開始後の保守にまで影響を及ぼすため、システム的な矛盾が出ることはもちろん許されません。

ユーザーとの意識合わせが必須です。

 

まずはキャリアの相談をしてみる

 

 
 

要件定義書で定義すべきもの

 

 

要件定義という工程を深く理解するためには、いくつかの用語について正しく理解する必要があります。

ここでは要件定義に関わる重要ワードをいくつか整理して説明しましょう。

 

要件定義で理解するべき用語
  • 機能要件
  • 非機能要件
  • サイト要件
  • インフラ要件
  • セキュリティ要件

 

また、それぞれのフェーズをスムーズに進行させるためのコツもお伝えします。ぜひ参考にしてみてください。

 

機能要件

 

システム要件でシステム化の方向性が決まると、システムに必要な機能について検討します。

機能要件はシステム開発を通して最低限実現すべき機能です。

機能要件はヒアリングなどの形でクライアントに具体的に確認することができます。

また、機能要件の成果物は、後述の非機能要件と合わせて、後続の基本設計フェーズでの重要なインプットとなります。

 

非機能要件

 

機能要件がシステム開発において必須の機能なのに対して、非機能要件は機能以外でユーザーがシステムに求める要件のことです。

非機能要件を実現すればするほどクライアントの満足度を上げることができます。

例えばシステム画面の切り替え速度などの性能要件、セキュリティ面、デザイン面の要件が挙げられます。

非機能要件は必ずしも明確に要望されないため、予算や納期も意識しつつ、クライアントと合意形成を図ることが重要です。

 

サイト要件

 

サイト要件はWebサイトの要件定義を指します。

ユーザーからのアクセスを目的として作られるWebサイトは、あらかじめ明確にしておくべき項目があります。

例えばターゲット層や利用端末、ブラウザ、OS、SEO対策などです。

目的やコンセプト、どのような機能を実装するか、また予算やスケジュールなども該当します。

 

インフラ要件

 

システムの環境を支える基盤がインフラです。

インフラ要件では基本設計以降のフェーズのコストを見積もることも重要です。

インフラ要件定義書はほぼ非機能要件となります。

 

セキュリティ要件

 

システムの安全性確保に関する要求がセキュリティ要件です。

情報漏洩やウイルス感染などの被害による社会的・経済的損失を防ぐために重要な項目であり、セキュリティだけはコストを考慮に入れないことも多いです。

さまざまな攻撃手法のパターンに対応することが求められます。

 

<簡単1分>年収診断をしてみる

 

 

要件定義を行うために必要なスキル

 

 

要件をヒアリングするコミュニケーションスキル

 

要件定義に必要なスキルは、要求と要件との間に意識のズレが生じないよう、細部までをヒアリングするコミュニケーションスキルです。

ユーザーや自社の営業部にとって、要求するものを細部に渡るまで表現することは簡単ではありません。

要件定義を行う際には、コンピューターの動作としてユーザー要求を理解し、アナログな部分も含めた全てがどのような動きになるのかをヒアリングにて決定していく必要があります。

また、どうしてもシステム化できない部分も明確にしていかなければなりません。

この切り分けが曖昧なものは、全て仕様バグとして後々浮き彫りになってしまいます。

コミュニケーションスキル、特にヒアリングスキルは、要件定義において非常に重要なスキルと言えます。

 

具体的なシステムをイメージするスキル

 

要件定義はアナログをデジタルに置き換える作業です。

プログラムはコーディングした通りにしか動きませんので、ユーザーの要求の細部まで把握する必要があります。

そのためには、要求がシステム化した際にどのように動くのか、またユーザーのオペレーションがどのようになるのかを具体的にイメージするスキルが必要です。

要求を詳細に把握するスキルは、下流工程の豊富な経験が土台となります。

プログラミングをする際には完成したシステムの動きを明確にイメージする能力が必要だからです。

またプログラミングやテストの豊富な経験は、システムをイメージするスキルを無意識に向上させることにも繋がります。

 

システムが完成までの工程を逆算するスキル

 

ユーザーの要求がシステム化し、運用された状態を明確にイメージすることは、プログラミングなどを含めたその工程を逆算するスキルとして役に立ちます

システムは細かなプログラムの集まりです。

大きなまとまりとなったシステムの全体像から、どのようなプログラムがどこで動くべきなのかを逆算することで、ある程度の工数も把握することができます。

逆算するスキルはスケジュールの大まかな把握と開発時の役割分担を明確にイメージし、その後の工程をスムーズに進めるためにも役立ちます。

 

要件をドキュメント化するスキル

 

ユーザーの要求をシステムへ落とし込み、最後にドキュメント化するためにはシステムの詳細を数値や言葉で正確に表現するスキルが必要です。

ドキュメントは誰が読んでも分かりやすい表現が必要であり、実際にシステムが稼働した数年後にシステムの改良が必要な場面でも読めるドキュメントにしなければなりません。

また、要件定義書が完成し、その後のシステム設計やプログラミングの段階での手戻りは許されません。

そのためドキュメント作成前には、表現方法やドキュメントフォーマットを統一しておく必要があります。

 

まずはキャリアの相談をしてみる

 

 

要件定義を成功させるポイント

 

 

あいまいな定義をしない

 

明確な要件定義がプロジェクトの成功を左右することは冒頭で述べた通りです。

この要件定義を行うのは開発者ですが、そもそも発注者の要求がはっきりしていなければゴールがぶれてしまいます。

要件定義が曖昧なままで進められてしまった場合、求められるシステムの開発は困難です。

このような要因で納期が遅れても開発者側は責任を負うことができないため、あいまいな定義になってしまわないよう注意を払いましょう。

要件定義でつくった成果物に対する責任の所在は発注者側にもあるという認識を共有しておくことが推奨されます。

 

開発者側もヒアリングに工夫が必要です。

ヒアリングは、以下の5W2Hに則ることでより確度を上げることができます。

  • ・Why(なぜシステム化を行いたいのか)
  • ・What(システムで改善・解決したい課題、何を実現したいのか)
  • ・Where(要求を満たすための開発範囲)
  • ・Who(システムの運用者と利用者)
  • ・When(開発の納期)
  • ・How(要求・要件を実現する方法)
  • ・How much(予算)

 

スケジュールには余裕を持つ

 

納期を厳守することが求められるため、余裕を持ったスケジューリングが重要です。

すべての工程でスケジュールを立て、管理者は細かく進捗を把握し調整を続けることが求められます。

業務の漏れを見逃さないためには、スケジュールを開発チーム全員で共有することも効果的です。

細かくスケジュールを立てておくことで、トラブル発生時の対応もスムーズに行えます。

 

既存のシステムでも定義はしっかりと

 

要件定義を明確にすることの重要さは、既存システムを改善する場合でも同様です。

改善点を明確にする際にも先ほどの5W2Hが役に立ちます。

また、稼働中のシステムであれば、影響が出ないよう注意も必要です。

入念な仕様調査を行ったうえで改善点を洗い出し、要求をまとめましょう。

 

【完全無料】仕事タイプ診断をしてみる

 

 

要件定義に悩んだら、IT転職のプロに相談しよう

 

 

システム開発を行う上で「どうシステム化するのか」を決めるのが要件定義であり、要件定義書を作成するためにはユーザーの要求をシステムの要件へ変換・細分化することが必要です。

そのため用語の正しい理解のほか、コミュニケーション能力、具体的なシステムをイメージする能力など様々なスキルが求められます。

要件定義は、システム開発における上流工程であり、システム化の始まりでもあります。また、要件定義に必要なのはシステム開発における全工程の知識です。

要件定義がいかに重要であるかを理解し、全体的な流れを把握しながら下流工程を経験することで、より早く要件定義などの上流工程へ辿り着けるはずです。

 

「未経験だけど要件定義に携わりたい」「開発エンジニアだが、更に上流工程に携わりたい」「既に要件定義に携わっているが年収を上げたい」

これらに当てはまる方はIT専門の転職エージェントであるギークリーを活用することがおすすめです。

要件定義に携わる求人も多数あり、経験や希望に合わせた求人ご紹介が可能です。

キャリアのご相談から可能ですので、お気軽にお問合せください!

 

まずはキャリアの相談をしてみる

 

この記事の監修者

【国家資格保有】キャリアアドバイザー 小峰涼平

5年間インフラエンジニアとして新規顧客提案や既存顧客への提案〜運用保守業務を経験。業務を行う中で人材業界へ興味を持ち、22年1月国家資格キャリアコンサルタントを取得。現在、資格を活かしキャリアアドバイザーとしてエンジニアの転職支援を行っております。

要件定義

この記事が気に入った場合は、
SNSでシェアをお願いします

あわせて読みたい関連記事

この記事を読んでいる人におすすめの記事