システム開発における要件定義は、いつの時代も最も重要なものだと認識されているのではないでしょうか。
この記事は、要件定義を初めて担当する方や開発会社にシステム開発を依頼するので要件定義について理解しておきたいという方に向けて、要件定義とは何をするのか、どうやって進めていくのかをご紹介していきます。
要件定義が失敗すると、その後のシステム開発フェーズで大変思いをします。そんな、重要な要件定義で失敗しないためにも、ぜひ本記事を参考にしてみてください。
要件定義とは?
システム開発において要件定義とは、お客様からの要望やヒアリング事項から最適なシステム全体像を想定し、実際にシステム化を行なっていく計画やシステム化を行う上での目標をまとめて要件定義書として文書化する作業です。まずは、要件定義の流れから順に説明を行っていきます。
要件定義の6つの項目
要件定義は大まかに6つに分かれており、下記のような流れで行います。
- 課題と目標の明確化
- 機能要件定義
- 非機能要件定義
- 開発システムの明確化
- プロジェクト内容の決定
- 要件定義書作成
各工程が上から順番に進んでいきます。各工程を詳細に説明していきます。
課題と目標の明確化
この工程では、お客様が現行の業務にてどのような課題を持っており、システム化により課題をどう解消していきたいかを明確にする工程です。
流れとしては、お客様の業務の流れや実際の業務内容をヒアリング、または実際に体験し情報を収集します。次にその業務内でお客様がどのような課題を持っているか、目指すべき業務の姿を打ち合わせます。開発目線はこの段階では考慮できない場合もありますので、実現可能かの判断は最終的に全ての材料が出揃ってから判断します。この工程で、可能な限り課題と目標が固まっていると工程の出戻りが減るため作業効率が上がります。
機能要件定義
この工程では、お客様がシステムに対して求めている機能を洗い出す工程です。
先ほどの章で説明したお客様のもつ課題と目標を達成するために必要な機能が何かをここで全て網羅します。ここで挙げられた「お客様の求める全ての機能」は、実現する必要がないものも多いのです。理由として、お客様にとって本当に解決したい課題がこの工程で判明するからです。そうすると、機能要件の中でも優先順位がつき、不必要な機能も含まれていることが見えてきます。そういった不必要な機能を実装するかどうかは、お客様と認識を合わせる必要があります。
非機能要件定義
この工程では、お客様が機能面以外でシステムに対して求める要件を洗い出す工程です。
例えば、システムの処理スピードや拡張性・セキュリティ面などが非機能要件に当てはまります。非機能要件に関してはシステム開発目線での制約などを踏まえて、お客様にヒアリングや提案をできるかが実力の見せ所となります。
開発システムの明確化
この工程では、先ほどまでの章で説明したお客様のもつ課題と目標を達成するためのシステムの概要を明確化します。
この時点ではシステムの設計やクラス・モジュールなどの詳細な部分には触れず、あくまでも課題と目標を機能要件と非機能要件で網羅したシステムとなっているかが重要です。
プロジェクト内容の決定
この工程では、先ほどの章で説明した開発システムをどのように作っていくかに関する、予算やスケジュール、メンバーなどを決定する工程です。
予算やスケジュール、メンバーを決定する際に必要な情報としてはこのシステムを開発する上で、何人月必要かを見積もっている必要があります。見積もり方法にはさまざまな手法がありますが、今回の記事では省略させていただきます。この見積もりが大きくずれている場合、プロジェクトを開始した後に過度な残業や休日出勤などが必要になってきます。そのため、開発側としてはできるだけ、実際の作業時間と一致した数値を出すために慎重に見積もりを行う必要があります。
要件定義書作成
前章までの流れでまとめた情報を文章化することで、要件定義書が作成できます。
要件定義書がシステム開発の要件定義工程にてお客様に提出する成果物となります。要件定義よりも先の工程で、要件定義が修正されることはあるので、その場合はこれらのドキュメントを更新していく必要があります。要件定義書の項目でよく使用される項目は下記などです。
- システム開発の目的
- システムの導入環境
- お客様の課題点
- システムの全体像
- システムの機能要件
- システムの非機能要件
- 工数
- 予算
- スケジュール
- メンバー
- セキュリティ
文書化した要件定義書はお客様から承認をいただく必要があります。これによって、後々お客様から〇〇の機能がないとなった場合でも要件定義書をもとに漏れかどうかを判断できます。
今あなたが使っているそのシステムやアプリは、実際どこかで誰かが開発したものですが、その裏側で動いているシステム開発の工程についてはどれくらい知っていますか? ここでは、システム開発の各工程、計画からリリースまでの流れ、上流工程と下流[…]
要件定義に必要なスキル
要件定義に必要なスキルはさまざまあると思いますが、今回は私の経験を踏まえて、3点に厳選いたしました。
- コミュニケーションスキル
- システムに関する知識
- マネジメントスキル
システム開発に携わる場合、どれも必要なスキルと考えられますが、要件定義を行う場でどのように活かせるかを順番に解説していきます。
コミュニケーションスキル
コミュニケーションスキルに関しては、お客様へのヒアリングの際にとても重要になってきます。
要件定義をする上で、必要な情報(お客様の要望や課題点)を引き出す際にいかにお客様が答えやすいかという点に注意する必要があります。また、お客様はシステムに疎い場合が多いため、システム開発を行う上で、そこを補填できるような質問を行い、答えてもらう必要があります。
システムに関する知識
要件定義を行う上で、システムに関する知識が豊富にあると要件定義がスムーズに進みます。システムに関する知識が少ない場合は、お客様要件のイメージができず、確認が必要な項目で漏れが多数発生することになります。これはトラブルの元です。システムに関する知識が豊富にあるということは、漏れを事前に抑止することが可能になり、スムーズな要件定義を実現します。要件定義に関しては、お客様の業務システムに関しても理解する必要があるため、システム以外にも業務上の知識は持っておいて損はないです。
マネジメントスキル
マネジメントスキルとは、例えば、メンバーをマネジメントしたり、スケジュールをマネジメントしたりするスキルです。システム開発の要件定義を担当する技術者は、基本的に開発チームのメンバーとは別の技術者が担当します。(要件定義から開発を同じ技術者が担当する場合ももちろんあります。)その際にメンバーをどのように利用していくか、システム開発にどの程度の人月がかかるかを考えなければ要件定義のスケジュールなどを作成することはできません。
システム開発における要件定義についてまとめ
お客様の要望・課題点を聞き取り、システムにより改善するための要件をまとめる作業です。要件定義の流れとしては下記です。
- 課題と目標の明確化
- 開発システムの明確化
- 機能要件定義
- 非機能要件定義
- プロジェクト内容の決定
- 要件定義書作成
また、要件定義を行う上で、必要なスキルとして、下記などが有用です。
・コミュニケーションスキル
・システムに関する知識
・マネジメントスキル
以上で今回の記事は終了です。要件定義がどのような流れになっているかや必要なスキルに関して理解できましたでしょうか?要件定義に必要なシステム開発関連の記事が気になる方は下記記事などご参照ください。