要件定義の進め方とは?システム開発で失敗しないための準備やコツも解説
近年急速に進むIT化により、IT業界に限らず多くの方にとって”システム開発”という言葉をよく耳にするようになったのではないでしょうか?
システム開発と一言にいっても、多くの工程が存在します。十分な知見がない方からするとどこから着手すべきなのかわからなくなることも多いでしょう。
今回はシステム開発において初期段階(上流工程)である「要件定義」とは何かというところから、「要件定義」の進め方、進める上での準備やコツなどを詳しく解説していきます。
こちらの記事を読むことで、システム開発・要件定義についての疑問を解決することができますので、ぜひご一読ください。
システム開発における要件定義とは?
システム開発における要件定義とは、システムを導入する目的を明確化し、必要な機能や要望をまとめていく作業のことを指します。
本格的にシステム開発を開始する前段階であり、目的の脱線防止として重要な役割を果たす工程とも言えます。
この工程では、要件定義書というものを作成します。ここでシステムの各機能の必要性や問題解決方法を明確にしていきます。確認を怠ったり、記載漏れがあるとそれ以降の工程の流れが悪くなってしまいます。
下記項目でも説明しますが、要求定義に続き、要件定義はその後の作業を大きく左右する重要な工程と言えるでしょう。
また要件定義は原則として顧客(システム発注者)側が行うべき作業です。
この工程では、解決したい問題を洗い出し、何を作りたいかを決めていくため、システムに対する要望を理解している当事者(顧客)が適任といえます。
しかしながら、顧客側がシステム開発の方法を把握していることは少なく、現実として顧客側がシステム開発において適切な要件定義書を作成できることは多くありません。
そのため、システム開発のプロであるベンダー側が行う場合もあります。
システム開発側にも要件定義能力が必要とされています。
要求定義との違い
「要件定義」と似た言葉で「要求定義」というものがあります。
要件定義は、システム開発者がシステムを動かすための道筋を定義したものです。
システム開発の目的を実現するために必要な機能等に加え、運用・業務・予算・スケジュールなどのさまざまな「要件」をまとめていきます。
「これを解決するためにこの機能が必要」「この機能はこうであるべき」というような表現になります。
一方で要求定義は、顧客がシステムに何を求めるかを定義したものです。
システムへの「要求」を熟考して定義していくことで、システム開発者に”こういうものを作って欲しい”と正しく伝達するためのものといえます。
要求定義→要件定義→基本設計→詳細設計→開発→テスト→リリース・運用という全体の流れの中で、システム開発の初期段階で最重要工程という位置づけになります。
要件定義の進め方
要件定義の進め方を6つの段階に分けて説明していきます。
- 課題や目標の明確化
まずはじめに、システムを開発するために不可欠な課題と目標をはっきりさせていきます。
課題解決のためにどのようなシステムを開発するか決定しておくことでその後の軌道修正に役立ちます。
あわせて目標を全体共有しておくことで計画変更の際にも大きな修正を防ぐことができます。
またこの段階で顧客側とシステム開発者それぞれの課題を明確にしておくことで着手の優先順位を決めることができます。
いずれにせよ、顧客に対し丁寧なヒアリングを重ねることが必要不可欠です。
- システムの全体像を明確化
次に、システムの全体像(構成や内容)を明確にしていきます。
システム開発と一言に言っても、利用者のデバイスや使用環境によってさまざまな実現方法があります。
ここではまだ設計や詳細には触れず、システム全体の構成を整理していきます。
一般的に、業務フロー図やビジネスプロセス図・システム化業務フローなど図式化し整理する場合が多いです。
あらかじめシステムを構成する各要素を洗い出しておくことで、要件定義漏れを防ぎます。
要件漏れの内容によっては大きな出費が発生することもあるため、配慮に配慮を重ねる必要があります。
- 機能要件の定義
システム開発の要件定義では、「機能要件」と「非機能要件」の2種類に分類して定義していきます。
機能要件は、システム開発に必要な要件を指します。業務効率に直結する改善機能が含まれます。
例えば、「検索機能が欲しい」や、「システムからユーザーに対し自動で通知を送りたい」などです。
目に見える機能であるため「表向きの要件」といえます。
システム開発の知見がある顧客であれば、ある程度機能がまとまった状態で提示していただける場合もありますが、そうでない場合はこちらから必要機能をヒアリングする必要があります。
- 非機能要件の定義
非機能要件は、可用性(システムが継続して稼働できる能力)、拡張性(中核部分に大きな変更や交換、影響を与えず機能追加や性能向上を行えること)などの要件を指します。
例えば、「システムにアクセスが集中した時にダウンしないようにして欲しい」や、「◯秒以内に次の画面を表示させて欲しい」等です。
性能面やセキュリティ面において実現すべき要件であり、「裏向き要件」ともいえます。
機能要件と違い顧客が明確に意識していない部分であるため、地道で根気のいる
ヒアリングが不可欠ですが、非機能要件の実現が可能になれば顧客の満足度もシステムの完成度も格段に上がるため、大事な要件と言えるでしょう。
- プロジェクト内容を決定
プロジェクト内容とは、スケジュール・予算・開発メンバーなどのことを指します。
ここでどのようなスケジュールでプロジェクトを進行するかや、設計から開発、テストなどにどのくらいの人月が必要かをイメージしていきます。
要件定義の段階で大まかな実作業内容を把握しておくことで、然るべきプロジェクト内容となるのです。
曖昧なままプロジェクト内容を決めてしまうと、リソースの枯渇に繋がります。
IT業界はリソース不足であるため、余裕を持った人員の確保が難しく想定外の作業が増えてしまうと、予算超過や納期の遅延が発生してしまいます。
- 要件定義書を作成
上記5項目で決定した内容をまとめて、要件定義書に落とし込みます。
この資料は、システム開発メンバーと顧客との認識の齟齬を無くすために作成し、共有するものです。
要件定義書に決まったフォーマットはありませんが、概ね以下の内容を記載します。
【要件定義書の項目】
- システム開発の目的
- システムの導入環境
- システムの全体像
- システムの機能要件・非機能要件
- セキュリティ対策
- 想定工数
- 予算
- スケジュール
- 開発メンバー
- 開発者と顧客の連絡方法・頻度
要件定義の前にしておくべき準備・コツ
要件定義書の具体的な作成手順までわかったところで、要件定義の事前準備とコツをいくつかご紹介します。
要求や資料の洗い出しをしておく
要求定義はその後の工程を大きく左右する非常に重要な工程です。
システムを発注することで何を改善したのか・何を実現したのか・何が欲しいのかをあらかじめ洗い出しておくと要件定義をスムーズに行うことができます。
また、欲しいシステムに類似した機能をもつシステム、それに付随する資料などをまとめておくとより精度の高い要件定義書を作成することができるでしょう。
担当者にITスキルを身につけてもらう
システムの要件定義を実際に行う担当者には、基本的なITスキルを身につけてもらうことが重要です。
システム開発の流れや手法などを理解し、業務改善のための課題をどのように解決するかを把握しておく必要があります。
担当者のITスキルが乏しい場合は、可能であれば実際の開発常務を体験してもらうことも検討すべきです。
また、経験の場が作れない場合は、システム開発経験者に話を聞いてみることも視野に入れましょう。
スケジュール管理スキルを身につけておく
スケジュール管理スキルを身につけることで、プロジェクトの予定を把握し優先順位をつけ各タスクに必要な作業工数を見積もることが可能となるため、予算超過や納期の遅延を防ぐことができます。
業務フローや既存システムとについての理解を深める
効率よく要件定義を行なっていくために、単にクライアントから提示された要望・課題に対してヒアリングするだけでなく、業務フローや既存システムについて理解を深め、改善点を探していくことも重要です。
ヒアリングの精度向上にも繋がり、課題に対して別の解決案を提示することも可能になります。
そしてより良いシステムを開発することにつながるのです。
要件定義以降のシステム開発の流れ
要件定義書の作成が終わったらいよいよ次工程に移ります。
大まかに以下の流れでシステム開発が進んでいきます。
- 要件定義
- 基本設計
- 詳細設計
- 開発(プログラミング)
- 製造・単体テスト
- 結合テスト
- 総合テスト(システム全体を通したテスト)
- 運用テスト
- システムリリース
- 保守・運用
各工程がシステム開発においてそれぞれ大切な役割を担っています。
まとめ|要件定義の進め方を把握して、システム開発を円滑に進めよう
システム開発において、重要な役割を担う要件定義。
考慮しなければならない要素が多く、その先の工程を大きく左右することから、経験が浅い人または未経験者に限らず、経験者であっても難しいとされています。
しかしながら必ずしも1人で行わなければならないわけではありません。要件定義経験者や、システム開発に精通した人の力を借りながら1つ1つの業務を丁寧かつ確実に進めていくことで精度を上げていくことができます。
プロジェクトの成功の鍵は「要件定義」が握っています。
より良いシステムを作るために、要件定義を深く理解することが大切です。
システム開発をより円滑にしプロジェクトを成功に導くために、要件定義を的確に進めていきましょう。
クリーヴァでは、システム企画から実行までをワンストップでお任せいただけます。気になる方は、以下URLより弊社サービスをご覧ください。