要件定義とは?|開発の失敗を防ぐための基礎知識

要件定義とは?|開発の失敗を防ぐための基礎知識

システム開発において最も重要な「要件定義」。開発におけるトラブルは多くのケースにおいてこの「要件定義」に原因があると言われています。このテキストでは、開発を成功させるために必要なポイントを解説します。

要件定義の基礎知識から、要件定義の進め方やドキュメント(要件定義書)への落とし方など、失敗事例と成功のポイントも紹介していきます。

要件定義とは何か?

■ 要件定義とは?

開発において「要件」とは必要な機能や性能を指します。機能や性能を必要とするのは開発の場合はクライアントですから、要件定義とはクライアントの要望をまとめ、実装する機能や性能を決定することを言います。

 

■ 要件定義が重要なワケ

どのような課題を解決するために、どのような機能が必要なのか?まずはそれがわからなければ開発は進められません。また、最初にクライアントとの認識をすり合わせておかないと、クライアントの要望を満たさない成果物を納品してしまうことにもなりかねません。

要件定義の流れ(ステップ)

■ 前提としてプロジェクト全体の流れを簡単に…

開発プロジェクトは前半と後半に分けてそれぞれを「上流工程」「下流工程」と呼びます。「上流工程」には要件定義や基本設計、「下流工程」には内部設計、コーディング、テスティングといった作業が含まれます。

 

|上流工程

クライアントの要望をまとめ、必要な機能を明確にし、基本的な設計を行う。ここまでが開発プロジェクトの前半、上流工程で行われる内容です。

※基本設計とは?

要件定義では開発の目的や必要な機能、開発スケジュールなどを決めるのに対し、基本設計では要件定義をもとにして、それぞれの機能に対してどのように開発をすすめるか、システムの仕様を決めていきます。

 

|下流工程

プログラムの作成や実装、コーディングや各種テストを行い、成果物の完成・納品を行うのが開発プロジェクトの後半、下流工程です。通常は納品までを指すことが多いですが、運用や保守までを含めることもあります。

 

■ 要件定義の流れ

要件定義で最初に必要なのがクライアントへのヒアリングです。クライアントがどのような目的で、どのようなシステムを求めているのかを詳細に聞き取る必要があります。ヒアリング時点で、クライアントとの間で積極的な意見交換を行います。

ヒアリングができたら、クライアントの要望を実現するためにどんな機能が必要かを洗い出し、要件定義書に開発の目的や実装する機能などをまとめていきます。

 

要件定義を行う際、重要なのが要件定義書の作成です。下流工程に入る前にクライアントに提出し、システム開発の概要を理解してもらうためにも必ず作成する必要があります。

 

■ アジャイル開発の要件定義はどのような流れになるのか?

アジャイル開発とは、機能ごとに短い開発期間を繰り返すことで一つ一つの機能を開発していく手法のこと。計画段階の仕様において厳密な全体像を定めず、機能ごとに開発をすすめるので、ウォーターフォール開発に比べると厳密な要件定義書を作成することはありませんが、要件定義はアジャイル開発においても必要です。

 

アジャイル開発における要件定義は、作る機能やインターフェースなど、あとで変えることが難しい部分を定義し、開発の範囲や優先度を明確にするためのものです。

 

アジャイル開発について、詳しくは下記のテキストが参考になります。

参考:「アジャイル開発とは?|適したプロジェクトと契約形態も解説

要件定義書に記載する項目

■ 業務要件

課題を洗い出すためにまず必要なのが、クライアントがシステムを開発する目的です。業務要件では、クライアントがシステムを導入する予定の業務が、現状どのような流れで行われているのかを分析し、課題と解決法について記載します。

 

■ システム要件

業務要件で明確にした課題と解決法をどういう風にシステムに落とし込むのかを記載するのがシステム要件です。システムの方向性について記載します。

 

■ 機能要件

システム要件で明確にした方向性に沿って、どのような機能が必要かを記載します。完成したシステムによって実際にできることが明確になる要件であり、システムの構造やデータの種類なども記載されます。開発をすすめる下流工程において、もっとも具体的な道標となります。

 

■ 非機能要件

機能要件はクライアントへのヒアリングによって洗い出された要望をかなえるための機能について記載する項目ですが、非機能要件はクライアントの要望をかなえるために機能以外で必要な要件のことを言います。例えばセキュリティや運用・保守などが非機能要件にあたります。

要件定義の失敗事例と成功のポイント

■ よくある失敗

要件定義はその後の開発の指標となる非常に重要な存在です。そのため、要件定義が不十分なものだと開発自体が大失敗という最悪の事態を招きかねません。要件定義の失敗の原因は多くはコミュニケーション不足、ヒアリング不足にあります。

 

クライアントに対するヒアリングやコミュニケーションができていないと、システム開発の方向性をすり合わせすることができず、成果物が要望に対してちぐはぐなものとなってしまいます。

 

近年、スルガ銀行とIBM、旭川医科大学とNTT東日本など、新システムの導入失敗が訴訟に発展する事例も少なくありません。クライアントとしっかり意思疎通をとり、開発の方向性を共有することは非常に重要です。

 

■ 成功するためには…

要件定義の際、クライアントの要求が現実的でない場合は開発側が軌道修正することも必要です。また、クライアントがシステムに関する知識があまりない場合は、システムの操作イメージがわかるような資料を用意したり、システム開発の予算の相場を伝えたり、システムに詳しくない担当者にも理解してもらえるような工夫をすると良いでしょう。

 

納品期日が決まっており、スケジュールに追われて要件定義がおろそかになるケースもあるようですが、開発は最初が肝心です。要件定義にかける時間は開発の全行程における三分の一が適切だと言われています。要件定義にはじゅうぶんな時間を割くべきです。

要件定義を成功させるための発注先選定のポイント

システム開発を発注する側から見て、要件定義を成功させるための発注先選定のポイントとしては、下記の3つのスキルがあるかどうかを確認すべきでしょう。

 

・コミュニケーションスキル

・スケジュールやリスクを管理するスキル

・要望や解決策を要件定義書に落とし込むスキル

 

|コミュニケーションスキル

クライアントの要望を聞き取ることが重要な要件定義では、コミュニケーションスキルは必要不可欠です。クライアントの話から意図を汲み取るスキルだけでなく、何が問題なのか、どのように解決すべきかを整理し、相手に伝えるスキルも必要です。

 

|スケジュールやリスクを管理するスキル

システム開発を順調に進めるため、プロジェクトのスケジュールや予算を管理する能力も必要不可欠です。

 

|要望や解決策を要件定義書に落とし込むスキル

要件定義書は、クライアントにも開発者にもわかりやすいものである必要があります。クライアントの要望や解決策、必要な機能などを誰でもわかるように要件定義書に落とし込むスキルもとても重要です。

 

■オフショア開発の場合は?

要件定義を成功に導くために重要なポイントは、オフショア開発においても国内開発と全く同じです。要件定義がしっかりできてさえいれば、致命的な失敗を避けることができます。

まとめ

システム開発において重要な要件定義。これを軽んじると、のちのち大変なトラブルにもつながりかねません。クライアントと開発を進める上で最初に行う意思疎通ですから、しっかりと時間をかけて行うことが必要です。開発企業を選定する際には、コミュニケーション能力やスケジュール管理能力などを確認することが必要ですが、開発企業の能力をどのように判断したらよいのか迷う際には専門家に相談してみてはいかがでしょうか?

 

「オフショア開発. com」では、オフショア開発の専門コンシェルジュに無料で相談することができます。「オフショア開発の動向やトレンドについて知りたい」「国別の特徴や単価について比較検討したい」「開発企業の選定方法について聞きたい」…など、多岐にわたるご質問・ご相談にお応えいたします。

「オフショア開発. com」は、多数のオフショア開発企業とパートナー契約を結んでおります。御社にぴったりのオフショア開発企業をご紹介することもできますので、ぜひお気軽にお問い合わせください。


企業選定にお困りでしたら、オフショア開発. comの専門スタッフが無料相談を受け付けておりますので、お気軽にご利用ください。

このページを見た人は以下の記事も見ています。(関連記事)