システム開発を行うにあたって円滑に進めるためにも各工程に沿う必要がありますが、内容が複雑でわかりにくいという方もいるのではないでしょうか。
なかでも、要件定義と要求定義は言葉も似ており、経験が浅いほど違いを理解しにくいという声も耳にします。
例えば、顧客が求めている仕様をまとめる要求定義では、想定する範囲を逸脱する内容が要望として加えられるなど、調整に難儀するケースもあるでしょう。
システム開発に携わる以上、工程のなかでも要件定義と要求定義についての違いを深く理解しておかなければなりません。
本記事では、そんなシステム開発における工程のうち、要件定義と要求定義の違いについて解説しています。
また、要件定義と要求定義を絡めたシステム開発における全体的な進め方、注意点などについても紹介しています。
ぜひ、最後までご覧ください。
目次
1.要件定義と要求定義の違い
要件定義と要求定義、どちらもシステム開発を円滑に進めるために必要となる工程です。
言葉が似ているため、同様のものと捉えてしまっている方もいるのではないでしょうか。
しかし、似ているだけで要件定義と要求定義はそれぞれ異なるため注意が必要です。
同様の扱いをしてしまい混同して勘違いしたままにしていると、それがシステム開発において失敗する原因となってしまう危険性もあるため、システム開発を行うのであれば正しい理解をしておかなければなりません。
ここでは、要件定義と要求定義のシステム開発における違いと言葉の意味について解説しています。
要件定義の意味
要件定義は、顧客から受けたヒアリングをもとにした要求定義から、実装できる要件を取りまとめたものです。
要件とは「必要な条件」「重要な条件」「大切な用事」を表す意味の言葉です。
物事を実現させるために必要な事項や大切な用事(相手に伝えるべき事柄)を表しており、本当に重要な用事と表したい場合は「用件」ではなく「要件」を使います。
一方、定義は「ある物事の意味・内容を他の物事と区別できるように、言葉で明確に説明して限定(規定)すること」「ある用語・事物の意味を、言葉ではっきりと説明(規定)すること」という意味を持ちます。
つまり、システム開発では「システムに実装する機能や仕様、満たすべき性能を定義(言葉で明確に説明できるように)したもの」が要件定義だということです。
要求定義の意味
次に、要求定義の意味ですが「定義」は同様の意味を持つため割愛します。
要求は、「ある物事に対して必要または当然なこととして相手に強く求める」という意味です。
システム開発では「そのシステムに必要な機能や仕様」「備わっていて当然の機能や仕様」「求めている性能を定義(言葉で明確に説明できるように)したもの」という方向性で位置づけられます。
2.システム開発における要件定義と要求定義の立ち位置
言葉の意味で要件定義と要求定義がどう違うのか、理解できたのではないでしょうか。
次に、システム開発における要件定義と要求定義の立ち位置の違いについてみていきましょう。
また、要求定義を行う際に作成する必要がある要求定義書とRFPの違いについても解説していきます。
要件定義書と要求定義書
システム開発では、要件定義がシステムに実装する機能や仕様、満たすべき性能を定義したものと位置づけられています。
一方で要求定義はシステムに必要な機能や仕様、備わっていて当然な機能や仕様、求めている性能を定義したものです。
確かに位置づけとしては違いますが、同じような意味合いで捉えられることもあるため認識を誤らないためにも注意が必要です。
要件定義書と要求定義書は、主体の立ち位置で異なります。
要求定義は、開発を行うシステムの顧客(発注側)が要求することを定義したものです。
つまり、主体は顧客です。
それに対して要件定義は、顧客(発注側)が求めているシステムを開発するエンジニア(開発側)が定義するもののため、主体はエンジニアです。
そのため、要求から要件の手順で進めていかなければシステム開発が円滑に進められなくなってしまいます。
なぜなら、逆の要件から要求で進めると、エンジニアが勝手にシステムが備えるべき機能・仕様を決めてしまった後に顧客のリクエストを聞くことになるためです。
もし、エンジニアが決めたシステムが備えるべき機能・仕様が顧客のリクエストと大きく異なっていた場合は、再度0からヒアリングを行って要件定義をしなければなりません。
システム開発では、顧客がどんなシステムを求めていくかを明らかにすることが重要です。
要求定義は、そのシステムに何を求めているのかを明確にし、そのリクエストを整理していく作業です。
その整理したリクエストから、開発するシステムに必要な機能や非機能を明確にして整理する作業が要件定義という立ち位置だというところは理解しておきましょう。
要求定義書とRFPの違い
要求定義所とRFP(提案依頼書)は、仕組みや活用方法が違うため混同しないよう注意しなければなりません。
まず要求定義を行う際には、要求定義書を作成する必要があります。
要件定義書は基本的にはシステム開発の担当者が作成します。
どうして作成する必要があるのかというと、作成することで明確化し整理した顧客のリクエストが言語化できたり、顧客(発注側)とエンジニア(開発側)とで正しい情報が共有できるためです。
そんな要件定義書に似たRFPですが、要求定義書とは根本的に違います。
RFPは「Request for proposal」の頭文字で、日本語に訳すと「提案依頼書」です。
2つの大きな違いは、提案の求め方です。
どちらも主体は顧客(発注側)ですが、RFPの方は外部業者へ発注した担当者が、発注した外部業者から提案をもらうのに使用するものです。
そのため、提案内容や提出期限、提案方法、評価方法などを明確に記載することが求められます。
3.顧客目線で品質を向上させる要件定義のポイント
要求定義書を作成したら、その内容を踏まえて、下記のポイントで要件定義していかなければなりません。
システム開発の概要と目的
必要な機能
どんな仕様・性能にするか
システムの導入環境
必要な予算と人員
現状の問題点
開発スケジュール
そして、決めたことを最終的に要件定義書に落とし込みますが、要求定義から要件定義をしていくには顧客目線で考えていくことが重要です。
そうすることによって要求定義の品質が高まり、要件定義の品質も向上するでしょう。
顧客目線で品質を向上させる要件定義のポイントが、「4Cでの分析」「非機能要求グレードの活用」です。
それぞれについて詳しく解説します。
4Cで分析する
4C分析は、顧客目線でのマーケティング戦略立案に特化したフレームワークのことです。
具体的に4Cとは、下記の4つの項目からなる形式です。
Customer Value(顧客価値) Cost(適正価格) Convenience(利便性) Communication(コミュニケーション) |
これら4つの要素の頭文字をとって4Cです。
Customer Value(顧客価値)は、その商品やサービスに顧客が抱く価値や購入後に期待するメリットのことです。
顧客がその商品やサービスに何を求めているのかを理解することが重要です。
Cost(適正価格)とは、その商品やサービスが顧客にとって納得感のある価格であるかという指標。Customer Valueとも関わりがあり、その商品やサービスのCustomer Valueが高ければ、どんなに価格が高くても納得(購入)してもらえます。
しかし、低ければ低価格でも納得(購入)してもらえません。
また、Convenience(利便性)は、そのものの使いやすさではなく顧客がその商品やサービスにアクセスするまでの利便性のことです。
そしてCommunication(コミュニケーション)は、顧客とのコミュニケーションのことです。
顧客にとって、その商品やサービスが情報伝達や意思疎通がしやすい媒体かどうかを示す指標です。
4C分析を行うことで、顧客が開発を依頼したシステムに本当に求めていることを見極めることができるでしょう。
非機能要求グレードを活用する
要件定義の品質は、非機能要求グレードを活用することでも向上が期待できます。
非機能要求グレードは、非機能要件を定義付けるために重要となる項目です。
また非機能要件は、開発するシステムの要求分析において、ソフトウェアの品質や運用の手順といった機能面以外の全般のことです。
非機能要求グレードは、「システム基盤の発注者要求を見える化する非機能要求グレード検討会」が定めた非機能要件の要求項目で、下表のように項目を定めています
大項目 | 中項目 | 内容 |
---|---|---|
可用性 | 継続性、耐障害性、災害対策、回復性、成熟性 | システムサービスを継続的に利用可能とするための要求 |
性能・拡張性 | 業務処理量、性能目標値、リソース拡張性、性能品質保証 | システムの性能と将来のシステム拡張に関する要求 |
運用・保守性 | 通常運用、保守運用、障害時運用、運用環境、サポート体制、その他の運用管理方針 | システムの運用と保守のサービスに関する要求 |
移行性 | 移行時期、移行方式、移行対象(機器)、移行対象(データ)、移行計画 | 現行システム資産の移行に関する要 |
セキュリティ | 前提条件・制約条件、セキュリティリスク対応、セキュリティ診断、セキュリティリスク管理、アクセス・利用制限、データの秘匿、不正追跡・監視、ネットワーク対策、マルウェア対策、Web対策、セキュリティインシデント対応/復旧 | 情報システムの安全性の確保に関する要求 |
システム環境・エコロジー | システム制約/前提条件、システム特性、適合規格、機材設置環境条件、環境マネージメント | システムの設置環境やエコロジーに関する要求 |
非機能要求グレードを活用することで、開発したシステムの盲点をケアできるでしょう。
4.要件定義と要求定義の失敗例
システム開発において、失敗するリスクは最低限抑えなければなりません。
要件定義に失敗が起きているのにそのままにしておくと、システム開発のスケジュールが遅れるなどの原因となってしまいます
システム開発の成否は、要件定義で決まると言っても過言ではありません。
また、要件定義で失敗しないためには、要求定義で失敗していないことが重要です。
ここでは、要件定義と要求定義で起こりうる代表的な失敗例を下記のとおり紹介しています。
要件定義と要求定義を混同してしまう
顧客の要求とズレた成果物が完成してしまう
ベンダーにすべて丸投げして工程が杜撰(ずさん)な状況に陥る
それでは、詳しくみていきましょう。
要件定義と要求定義を混同してしまう
要件定義と要求定義は、言葉は似ていますが仕組みは全然違います。
前提として、システム開発の環境によってそれぞれが指す範囲や意味が根本的に異なるため、混同しないよう注意が必要です。
そのため、要件定義なのか要求定義なのかが不明瞭になっていることもあるでしょう。
不明瞭な状態のままシステム開発を進めていくと混同してしまい、それが原因でさまざまな問題が起きる可能性があります。
顧客の要求とズレた成果物が完成してしまう
発注側の理解を得られるよう調整し要件定義しておかなければ、発注側の要求とズレた成果物が完成してしまう可能性があります。
発注側の要求を整理してまとめた結果、発注側の要求と開発可能な機能の間に矛盾が生じることもあり注意が必要です。
そのことについて発注側の理解を得られるよう調整し要件定義しておかなければ、要求とズレた成果物ができてしまう可能性があります。
その要求とズレた成果物は発注者が求めていないシステムのため、Customer Value(顧客価値)は低いです。
ベンダーにすべて丸投げして工程が杜撰(ずさん)な状況に陥る
発注側の要求とズレた成果物が完成してしまう失敗は、発注側がベンダーにすべて丸投げしたことでも起こります。
発注側は、システム開発に関する知識が乏しかったり経験も少なかったりするため、どうしても経験豊富で知識も豊富な依頼したベンダー(エンジニア)にすべて丸投げしてしまうことがあります。
しかし、丸投げの場合どうしても発注側の要求が不十分であったり、明確にならなかったりするため、要求定義の内容を練り上げることができません。
そうして作成した要求定義書に沿って定義した要件定義は、当然顧客目線にはなっていないことから、そのまま進めていくと発注側の要求とズレた成果物が完成してしまう可能性が高まります。
丸投げだとどうしても発注側が進行状態やシステムの品質を確認しないため、開発側の工程も杜撰になりやすく、品質に問題が発生したり開発遅延が頻発したりしてしまいます。
5.システム開発を円滑に行うための要求定義と要件定義
要件定義と要求定義における失敗例について把握できたところで、次はシステム開発を円滑に行うための方法を詳しく理解する必要があります。
要求定義と要件定義に失敗なく、システム開発を円滑に行うためにはどうしたらよいのでしょうか。
ここでは、システム開発を円滑に行うためには、どのようにして要求定義と要件定義をすればよいのかを下記のポイントで解説しています。
事前に顧客に対してヒアリングを行い文書化して体系化しておく
細部にこだわりすぎないこと
属人化を回避する
役割分担の明確化
適度な生産性を維持する
要求定義書に記載する内容の把握
詳しくみていきましょう。
事前に顧客に対してヒアリングを行い文書化して体系化しておく
顧客の要求を聞く前に、発注者である顧客への事前ヒアリングをしておくとよいでしょう。
事前ヒアリングによって、相手のことをある程度知ることができます。
それを足掛かりとして、多くの情報を聞き出すことが重要です。
その後、聞き出した顧客の要求は文書化することで体系化できるため、より明確になり、まとめやすくもなります。
事前ヒアリングと要求ヒアリングでは、ヒアリングシートを活用するのがおすすめです。
ヒアリングシートを活用することで現状やニーズを事前に把握しておくことができ、その把握した情報をもとに質問内容を精査していくことで、より質の高い要求を聞き出すことができます。
細部にこだわりすぎないこと
開発を依頼するシステムへの顧客の要求をすべて聞き出さなければ、質の高い要求定義はできません。
しかし、前提として捉えなければならないポイントとして、最初から細部にこだわりすぎないことが重要です。
ある程度進んだ段階で、顧客が気付く要求もあります。
最初から細部にこだわると工程も円滑に進みません。
そのため、工程を進めながら顧客の要求をできる限り聞き出すようにしましょう。
属人化を回避する
属人化とは、特定の担当者しか詳細を知らないという状況下のことです。
その人しか開発を進められない状態に陥ると、進捗ペースに重大な損害を被ることがあるため注意が必要です。
例えば、属人化になっていることで、下記のような問題が発生しやすくなります。
業務の効率化ができない
担当者不在するとシステム開発が停滞する
品質が不安定になりやすい
適正な評価が難しい
円滑に要求定義と要件定義を進めるためにも、このようなデメリットはあらかじめ排除しておきましょう。
役割分担の明確化
要求定義では、システム開発を行うエンジニアだけでなく顧客の要求をヒアリングしたり、発注側の理解を得られるよう調整するためにも担当者との連携が必要だったりします。
エンジニアが、直接顧客の担当となる場合もあるでしょう。
開発に係る者が何を担当するか役割分担を明確にしておくと、要求定義や要件定義をスムーズに進めることができます。
適度な生産性を維持する
システムの開発生産性が高いと開発速度は向上します。
逆に生産性が低下すると、開発に時間がかかってしまい開発コストが膨らむ可能性があります。
適度な生産性を維持するには、ある程度のエンジニアの数は必要となりますが、関わる人が多ければ役割分担しやすいため、エンジニアの負担も軽減します。
要求定義書に記載する内容の把握
要求定義書に記載する内容を1人しか把握していない状態は、属人化を引き起こします。
属人化を回避するためには、要求定義書に記載する内容はできるだけ多くの人が把握できるようにしておくことが重要です。
また、要件定義書の方もできるだけ多くの人が把握できるようにしておきましょう。
6.開発工程における要求定義と要件定義の進め方
システム開発で、要求定義と要件定義はどう進めていけばよいのでしょうか。
ここでは、具体的な進め方として、下記4つのステップで解説しています。
現状把握を目的に工程を図式化して視覚的にわかりやすくする
As-Is/To-Be分析を実施してアクションプランを作成する
費用対効果を検証する
要求定義書を成果物としてまとめる
それでは、詳しくみていきましょう。
現状把握を目的に工程を図式化して視覚的にわかりやすくする
図形で可視化することで、視覚的にも開発工程の現状が把握できます。
情報を視覚的なコンテキストに変換することで、脳が情報を理解しやすくなるでしょう。
視覚的にわかりやすくする方法の1つが、工程の業務フロー図化です。
業務フロー図とは、業務のつながり、業務ごとの作業手順などのプロセスを可視化するために作成する図のことです。
フロー図はプロセスやステップ、システム、順序、判断、コンピューターアルゴリズムなどを表した図で、フローチャートと呼ぶこともあります。
業務フロー図を作成して視覚化することで、現状が把握しやすくなります。
As-Is/To-Be分析を実施してアクションプランを作成する
要求定義のために、顧客の要求を分析するのに役立つのがAs-Is/To-Be分析です。
As-Is/To-Be分析とは、現状(As-Is)と理想像(To-Be)を整理し、その間にある差分(ギャップ)を課題として分析して洗い出す分析方法です。
分析の結果、洗いだされた課題を解決するためにアクションプランを作成し、そのプランに沿って課題を解決して目的を達成します。
費用対効果を検証する
システム開発に使える費用は、無限ではありません。
そのため、当初のシステム開発目的や目標と、発注側が提示した予算と、現在システム開発にかかった累計費用、今後かかることが予想される費用を検証することも重要です。
開発の各工程で振り返る機会を設け、費用対効果を検証するようにしましょう。
要求定義書を成果物としてまとめる
要求定義の成果物は、要求定義書です。
一方で、要件定義工程の成果物は要件定義書です。
どちらもシステム開発を進める過程での道標という位置づけですが、ゴール設定になる成果物としてまとめることが重要です。
7.要件定義と要求定義に関するQ&A
要件定義と要求定義に関する疑問を抱えている方もいるでしょう。
ここでは、インターネット上で寄せられている下記の質問に対して、その答えをまとめました。
要件定義と要求定義に順番はありますか?
要件定義の次は何の工程ですか?
要件定義は一般的に誰が行いますか?
詳しくみていきましょう。
Q)要件定義と要求定義に順番はありますか?
要求定義は要件定義の前段階にあたる作業です。
顧客から丁寧なヒアリングを行い、要求定義で体系化したものを要件定義として引き継がなければなりません。
そのため、要求定義の後に要件定義を行う必要があります。
Q)要件定義の次は何の工程ですか?
要件定義の次の工程は、基本設計です。
要件定義に基づき、使う人の視点から仕様を決める外部設計と、実装したときに正常に作動するかどうかを検討する内部設計を行います。
基本設計が終わったら、設計工程で作成された設計書に基づいてプログラミングが行われ、その後は動作に問題ないかを確認するテストを実施した後、問題なく作動すれば顧客に引き渡されます。
Q)要件定義は一般的に誰が行いますか?
要件定義の主体は、エンジニア(開発側)ですが、実際の現場ではエンジニアだけではありません。
正しくはエンジニアだけでなく、顧客(発注側)の両者で行うのが要件定義です。
両者が協力して進める工程のため、基本的にはどちらも責任を負うことがあります。
関連記事
基本設計と詳細設計の違いは?進め方や注意点などシステム開発の工程別に解説!
8.まとめ
今回は、システム開発における要件定義と要求定義の違い、また具体的な進め方などを解説してきました。
要求定義から要件定義する際に、顧客の要望を受けすぎると生産性がとれずコストパフォーマンスの悪化を招くため注意しなければなりません。
また、要求定義と要件定義を混同してしまうことで、続く基本設計以降の工程に大きな影響を及ぼします。
開発工程が下流に差し掛かるほど、その影響度は大きく取り返しがつかない状況となるケースもあることは留意しておきましょう。
顧客からヒアリングを受ける要求定義は明確に記載し、的確な情報を次の工程に引き渡すことが重要です。
各工程が複雑に絡み合うことも想定して、現状把握に努めるところはポイントとして挙げられますが、図式化して視覚的にわかりやすくしましょう。
そのなかで、要件定義と要求定義は明確に役割が違うため、認識を誤らないよう十分に注意しましょう。
本記事が皆様にとって少しでもお役に立てますと幸いです。