システム開発における要件定義の重要性|流れや成功させるためのポイントを解説
2024年02月25日 4:19
システム開発を行う上で、もっとも上流に位置しており重要な「要件定義」という工程があります。
要件定義は、ユーザーがシステムに対して求める機能や、システムに期待する効果・役割などを明確にして、それを実現するために必要となるものや性能の条件などを細かく決めていくため、システム開発の成功を大きく左右するもっとも重要な工程と言っても過言ではありません。
今回の記事では、そもそも要件定義とはどういうものなのかという基本的なところから、業務の流れ、成功させるためのコツについて詳しく解説していきます。
システム開発における要件定義とは、システム化に関する計画や提案依頼書に記載されている要求事項を基本として「どのような機能を作るのか」や「どのように動くシステムを作るのか、保守運用はどのように行うのか」などを、ユーザーと開発者側で決めて具体的に文章化する作業のことを言います。
ユーザーの求めているニーズ(システムに対して求めることやシステムを作る目的)などをまとめる作業に関しては「要求定義」、それをもとにシステムの要件(搭載機能や満たさなければならない性能や条件など)をまとめていく作業を「要件定義」と細かく分ける場合もあります。
ユーザー側はシステムに求める機能や性能などをより細かく具体的にして、開発者側はユーザーの求めるものを正しく理解して、システムに搭載する機能や求められる性能などを技術的な要件にまとめていく必要があることから、システム開発においてユーザーと開発側のもっとも重要なコミュニケーションとも言えるでしょう。
しばしばシステム開発においては、この要件定義がもっとも重要だと言われています。例えば、現在運用しているシステムを新しくする場合、新しいシステムの構築だけではなくデータの移行もしなければいけません。
データの移行と聞くと簡単に思えますが、実際には新しいシステムに合わせた業務の移行や運用体制の移行、システムの調整などを行う必要があります。企業によっては「現行のシステムと同じように使えるのであれば良い」と開発側に対して要求する場合もありますが、現行のシステムと同様のものを望むのであれば、まずは現在のシステムに搭載されている機能をひとつひとつ棚卸しして細かく定義づけする必要があるのです。
なぜなら、要件定義の段階で定義されていない機能が新しいシステムに搭載されることはありえないからです。
東証1部上場企業とそれに準ずる企業の計4499社を対象とした調査結果である「企業IT動向調査報告書2022」によると、企業のシステム開発プロジェクトの失敗率は極めて高いことが分かっています。
引用:企業IT動向調査報告書2022|一般社団法人日本情報システムユーザー協会
工数・予算・品質に関して予定通りに完了した場合を見てみると、それぞれおおよそ約3割程度となっており、逆を言うと何かしらの原因で満足いかない状態でプロジェクトが終了しているのが約69%近いということが分かります。
同調査では「なぜうまくいかなかったのか」という点についても調査が行われており、多くは計画時の考慮漏れや仕様変更の多発、システムの複雑性などが挙げられています。
引用:企業IT動向調査報告書2022|一般社団法人日本情報システムユーザー協会
大規模なプロジェクトになればなるほど計画通りに行くというのは難しいですが、計画時の考慮不足や仕様変更の多発などは、要件定義の段階である程度防ぐことが可能です。
せっかくの新しいシステム開発が失敗してしまうことを防ぐためにも、まずはプロジェクトの初期段階である要件定義からユーザーと開発者側で細かいところまで話し合いをすることが重要となります。
要件定義を構成する重要な要素として次の4つが挙げられます。
要件定義を成功させるためには、前提としてこの4つの要素を理解しておくことが重要です。それぞれの要素がどのような役割を担っているのか、以下で詳しく見ていきましょう。
機能要件とは「システムに実装する機能」に関する要件のことを指します。例えば「商品Aを購入したユーザーを検索する機能」や「商品に関する条件を細かく設定して検索できる機能」など、実際にユーザーが必要になる機能のことです。
性能要件とは、開発するシステムがどのような機能を有している必要があるのかを定義することです。例えば「ユーザーが使用する際に読み込みの時間は3秒以内である」「データ処理能力は1万件/毎秒以上である」などのシステムに関する性能について定義します。
品質要件とは、開発するシステムが持つ品質基準を定義することです。例えば、セキュリティのレベルやユーザーが利用した際のシステムの機能など、最低限度満たさなければならない品質を定義します。
実行計画とは、システムを開発するにあたって必要な工数やコストを確定することです。例えば「システムを開発するのにかけられるコストは〜万円以内」「工数は最大何ヶ月間必要」など、新しくシステムを開発するのに必要な計画を定義します。
なお、プロジェクトの規模や性質によって要件の種類があり、都度適切な要件をユーザーと開発者側が話し合って定義しなければいけません。
システム開発における要件定義は、主に次のような流れで進めていくことになります。
【要件定義の流れ】
1.クライアントの解決したい課題や目標を明確にする
2.クライアントの要望に従って構成を作成する
3.機能要件を定義する
4.非機能要件を定義する
5.コスト・スケジュール・メンバーなどを定義する
6.要件定義書を作成する
各ステップでどのようなことを行うのか、具体的に解説していきます。
システム開発において、もっとも重要になるのが一番最初の段階でクライアントの解決したい課題や目標を明確にすることです。この時点で、課題や目標があいまいのままになっていると、クライアントの要望を満たせないシステムを作ってしまいます。
この一番最初の段階で、まずはシステムをなぜ開発するのか、どのような課題を解決して、目標を達成するにはどうすれば良いのか明確にしましょう。
クライアントと開発者の間で認識がしっかりと共有されていれば、仮に開発の途中でシステムの仕様をしなければならない場合であったとしても、スムーズに対応することができます。
クライアントの解決したい課題や目標を明確にしたら、その要望に従って構成を作成しましょう。一言でシステムと言っても、様々な意味が含まれています。例えば、Webのサーバー上で動作するWebシステムもあれば、パソコンで利用するクライアントシステムなどもあります。
システム全体の構成として、そもそもどのような役割の要素が登場するか(パソコンやWebサーバー、アプリケーションなど)、要件定義の段階でしっかりと決めておかなければいけません。
なお、この段階で漏れていたシステム構成要素があった場合、要件外の見積もりとして後から計上することになります。仮に、ハードウェアなどの調達が必要になる場合、当初は想定していなかった出費が発生してしまうので注意が必要です。
システム全体の構成を作成したら、次に機能要件を定義する必要があります。機能要件を定義する段階では、次のようなことを行うのが一般的です。
【機能要件を定義する段階でやること】
非機能要件を定義する際は、機能以外の性能や拡張性、運用・保守の方法、既存のデータの移行、セキュリティなどを定義する必要があります。
また、ユーザーの操作に影響する画面のレイアウトやセキュリティのためのウイルス対策ソフトなどに関しても非機能要件に含まれるのが特徴です。例えば、検索結果の表示速度や、システムが業務を処理する速度、システムトラブル時における処理速度などであり、これらは実際にシステムを利用するユーザーの満足度に大きく影響します。
非機能要件をしっかりと定義しなかった場合、ユーザーの満足度は著しく下がってしまう可能性が高いです。また、時代の移り変わりに対応できるように、拡張性などもこの段階で考慮しておく必要があります。
機能要件や非機能要件を定義したら、次にコストやスケジュール、メンバーなどプロジェクト内容を決める段階に移ります。
プロジェクト内容を決める際には、システムの設計や開発テストの期間、プロジェクト全体を通してどの程度のコストと時間が必要なのかを細かく決めなければいけません。
要件定義の段階で、開発者側とクライアント側が細かく詰めていれば、作業の内容に関しても大まかにイメージを共有することができます。そのため、適切なプロジェクト内容を決めることが可能です。
一方で、要件定義をあいまいのまま終えてしまい進めていると、プロジェクト内容もあやふやなものになってしまうので、開発途中でリソースが不足するなどの問題が発生する可能性があります。
ここまでの流れで決まった内容を元にして、最後に要件定義書を作成します。要件定義書を作成する段階で、プロジェクトに関連した資料はすべて完成していなければなりません。
【要件定義書で定める内容の例】
要件定義書で定める内容については、それぞれの企業や開発するシステムによって異なります。参考として独立行政法人情報処理推進機構による「失敗しない要件定義とリスク対策」で例示されている、主な要件定義書の内容について紹介するので参考にしてください。
引用:失敗しない要件定義とリスク対策|独立行政法人情報処理機構
システム開発においてもっとも重要と言っても良い要件定義を成功させるためには、次の4つのポイントが重要となります。
【要件定義を成功させるための4つのポイント】
それぞれのポイントについて以下で詳しく解説していきます。
要件定義を行う際は、クライアントとのコミュニケーションを通じて、抱えている課題や問題を解決するためのシステムの内容を明確にする必要があります。そのため、開発者側もクライアントの業務を深く理解しなければいけません。
例えば、クライアントの業種が製造業なのであれば、設置されている設備の機能や加工技術、業務の流れなど基礎的な知識は最低限必要となります。また、システムに関連する工程管理や資材管理などの知識も必要となるでしょう。
このように、ITスキルだけではなくクライアントの業務に関しても事前にしっかりと理解を深めておくことによって、要件定義が成功しやすくなるのです。
また、クライアントと積極的にコミュニケーションをとり、具体的に業務のことについて詳しく教えてもらう機会を作るのも良いでしょう。現場の声を実際に聞くことができるので、より効率的に作業を進めることができます。
フレームワークとは、要件漏れ防止を防ぐために役立つものです。仮にITスキルとクライアント業務に関する理解を深めたとしても、要件定義漏れが発生してしまうことは多々あります。
要件定義漏れが発生してしまった場合、開発当初で想定していた予算を超過してしまったり、スケジュールの遅延が起きてしまったりといった問題が発生してしまいます。
要件定義漏れを防いでスムーズにシステム開発を進めるためには「システムがどのようなケースで問題が発生しやすいのか」をあらかじめ先回りして考えて、事前に問題発生を防ぐことが重要です。
ここで役に立つのが、非機能要件のRASISのような、要件漏れ防止に役立つフレームワークの種類をあらかじめ把握しておくことになります。フレームワークを把握しておくことによって、要件定義漏れが発生することを防ぎ、問題なくシステム開発を進めることが可能です。
要件定義をスムーズに進めるためには、クライアント側から現行業務を可能な限り正確に洗い出ししてもらう必要があります。システム開発側に対して、現行業務の洗い出しまでも丸投げしてしまうと要件定義を進めることができません。
そこで、まずは開発者側とクライアント側の役割分担を明確にして、何をしなければいけないのかをはっきりさせてから要件定義を進めていくのが良いでしょう。あらかじめタスクを細分化すれば、プロジェクトごとに担当者を設けて要件定義を進めていくことができるので、より効率的に作業を進めることが可能です。
要件定義書は、開発者側だけではなくクライアント側も見るものです。また、システム開発プロジェクトに携わるメンバー全員が見る可能性のあるものであるため、誰が見ても明確かつ分かりやすいように作成することが重要となります。
仮に、要件定義書が分かりにくく作成されており、解釈が人によって異なってしまうようなものになっていた場合、プロジェクトメンバーに認識の相違が生じてしまう可能性が高いです。
認識の相違が生じてしまうと、想定していたシステムとは異なるものが出来上がってしまう可能性もあるので、要件定義書は誰が見ても明確かつわかりやすいように作成しましょう。
システム開発をスムーズに進めるために必要な要件定義を成功させるためには、次の4つのスキルが必要です。
1.コミュニケーションスキル
2.システムの設計を提案するスキル
3.要件を文章に落とし込むスキル
4.ITスキル
それぞれのスキルについて以下で詳しく解説していきます。
ここまで何度も言及してきたように、要件定義を成功させるためにはクライアントが抱えている課題や求めている目標などを引き出すことが必要となります。また、クライアントが要望をある程度まとめていたとしても、自分自身では気づいていない課題や要求というのも多いです。
開発者側は、要件定義の段階でクライアントも気づいていない課題や要求などを引き出して、より良いシステムを完成させるためにコミュニケーションを取る必要があります。
クライアントが求めているシステムを大まかにまとめたら、実際にどのようなものを設計するのか具体的に提案するスキルも必要です。仮に、要件定義の段階で実現可能であるとクライアントに説明したとしても、後から開発するのが難しかったり、要求を実現するために想定以上の能力が必要だったりなどのケースも少なくありません。
そのため、要件定義を行っている段階で、クライアントが求めているシステムを説明することはもちろんのこと、実現するのは不可能な部分についてもしっかりと説明することも重要となります。
開発者側とクライアントの間でがある程度方向性をまとめたら、担当者は要件を具体的に文章に落とし込む必要があります。要件定義を行った開発者側の担当者とクライアントの間だけで、イメージが共有されていたとしても意味がありません。
開発に携わるメンバーやクライアント側の経営層などにも、分かりやすいように要件定義で定まった内容を文章に落とし込んで書面化する必要があります。分かりやすく伝えるためには、文章だけではなくイラストやデザインなどを使ってみるのもおすすめです。
要件定義を行う上では、そもそもクライアントの抱えている課題や問題が、新しく開発するシステムで解決できるか判断できる能力も必要です。その判断を行うためには、高度なITスキルが求められます。
また、ITスキルに関しては、開発者側だけではなくクライアント側の担当者もある程度必要です。ITに関する専門的な知識やスキルが全くなければ、そもそも実現可能なシステムなのかどうかを判断することができず、要件定義の話し合いもうまく進めることができません。
要件定義に必要なスキルについて解説してきましたが「そもそもどのようにこういったスキルを身につければ良いの?」と疑問を抱いている方も多いのではないでしょうか。
ここでは、要件定義に必要なスキルを取得するための具体的な方法についていくつかご紹介します。
セミナーやレクリエーションを定期的に開催することで、プロジェクトメンバーがコミュニケーションをとれるようにしましょう。要件定義はクライアントの要望をまとめるだけではなく、まとめたものをプロジェクトメンバーに伝える必要があります。
正確に情報を伝えて認識の相違を防ぐためには、プロジェクトメンバーの間である程度コミュニケーションが円滑に取れるようにしておかなければいけません。
クライアントと開発者側の認識のずれを防ぐためには、要件定義の段階でシステムに求めるものを明確にする必要があります。そのためには、要件定義を行う担当者の聞く力というのが重要です。
相手に対して自分の要望や要求を伝えるだけではなく、意識的に相手の話を引き出すことを意識しながら要件定義のコミュニケーションを進めると良いでしょう。
クライアントに役立つシステムを開発するためには、その業界や分野の現状について正しく認識している必要があります。そこで、プロジェクトの準備段階でクライアントの業界についてしっかりとした調べをして理解を深めておくと良いでしょう。
また、過去に同じ業界や似たようなシステムを開発した経験があるのであれば、その内容を参考にしてみるのもおすすめです。
要件定義を成功させるためには、当たり前のことですがITスキルが欠かせません。しかし、IT業界は毎日のように進歩を続けており、常に業界の最新動向や最新の情報について学ぶ必要があります。
日頃から業界の動向についてはしっかりと目を通して、要件定義の段階でも時代のトレンドを踏まえた提案ができるように準備しておくと良いでしょう。
システム開発における要件定義というのは、人間の心臓を構成している細胞のようなものです。要件定義がどれだけしっかりと行われているかによって、システム開発プロジェクトの成功は左右されます。
多くの企業は、要件定義をしっかりと行わなかったことによって、システム開発プロジェクトが失敗してしまったり、後から想定していなかったコストを支払わざるを得なくなってしまったりといったケースに陥りがちです。
このようなことを防ぐためにも、クライアント側と開発者側で要件定義の段階から時間をかけてコミュニケーションを取りながらシステムに関して詰めていく必要があります。
また、クライアントの要望をできるだけ反映できるように、ITスキルやコミュニケーションスキルを常に磨くことも忘れてはいけません。今回紹介した、要件定義の準備からプロジェクト終了までの流れ、その間に必要なスキルなどを参考にして、プロジェクトを成功に導く要件定義の担当者を目指しましょう。
診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。