システム開発(ソフトウェア開発)の進め方という記事では、システム開発の工程やその進め方について概要を説明しました。この記事では、システム開発の工程の一つである「要件定義」について詳しく説明していきます。

要件定義とは
そもそも要件定義とは、依頼者と開発者が話し合い、実現したいシステムについてすり合わせを行う工程のことです。
具体的には、システム開発の概要、目的、必要な機能、開発技術、必要な予算・人員、スケジュールなどについて話し合い、決定していきます。

ここで依頼者と開発者の間で認識の齟齬が発生すると開発途中段階での大幅な仕様変更などにつながります。開発途中での仕様変更は納期遅延やコスト増加の原因となります。ゆえに、要件定義で依頼者が実現したいシステムのイメージや解決したい課題を伝え、開発者が理解することがその後の工程にも大切な部分になっていきます。
そこで、要件定義の工程の中でも細かいステップに分けて認識の齟齬が起きないように進めていきます。
要件定義の進め方
要件定義は一般的に以下のようなステップに沿って進めていきます。各ステップについて詳しく説明します。
要求の整理
依頼者は、開発者と話し合いを始める前に実現するシステムに関する要求をまとめておきます。この工程は要求定義と呼ばれますが、この要求定義の内容を満たすことが開発の目標となっていきます。
そのため、まずはこの要求を整理するところから始まります。各要求について、実現可能性や予算、スケジュールを考慮しつつ取捨選択していきます。要求の方向性が明確には定まっていないケースもあるため、依頼者と開発者の間で各要求の意図や優先度についてすり合わせていきます。

解決する課題と最終目標の決定
要求の整理が出来たら、開発するシステムを用いて解決したい業務課題と、そのシステムの最終的な目標を定めます。
これらも依頼者のほうである程度定まっていることが多いですが、開発者の視点で実現可能であるかを確認したり、課題や目標をより簡素化できることもあるので、依頼者の意図に反しないように改めて決定していきます。

システム全体像の明確化
ここでは、システム全体の構成や概要を定めていきます。具体的な設計やプログラミングまではいかずに、システム全体のロジックの整理を行います。
実際に進めていく際には、下図のようなシステム概念図で図式化していく場合が多いです。

機能要件の定義
機能要件とは、依頼者からの要求を満たすため、システムの目標を達成するために必要な機能のことです。
要件定義の段階では、必要な機能の概要を整理します。機能の詳細は、要件定義の後の「設計」フェーズで定義します。機能要件はプロジェクトにかかる予算、メンバー、スケジュールなどに大きく影響する重要な要件です。

非機能要件の定義
非機能要件とは、上記の機能以外の性能、具体的には、可用性や性能・拡張性、運用・保守性、移行性、セキュリティ、システム環境・エコロジーなどを指します。
ユーザーが使用する際の処理速度、トラブル時の対処などはシステムの質、ユーザーの満足度に大きく関係する部分であり、非機能要件の定義もとても重要なものになっています。
また、長く使用する想定のシステムであれば、運用保守の面や変化するビジネスモデルに対応できるような拡張性などの定義も大切になっていきます。

プロジェクト概要の決定
ここではシステム開発のためのプロジェクトの概要を定めていきます。ここでの概要には、予算、スケジュール、メンバーなどが含まれます。
機能要件・非機能要件を参考に、開発者が実作業の内容をイメージしつつ、各工程でどれくらいの人数・時間が必要かを考えて適切なプロジェクト概要を組んでいきます。適切にプロジェクト概要を定めることで、プロジェクト進行中のリソース不足やそれによるスケジュール遅延や予算超過を避けることができます。
ここではガントチャートやプロジェクト体制図を利用することが多いです。


要件定義書の作成
ここまでのステップで決定してきた内容を踏まえ、それらをプロジェクトメンバーや依頼者と共有し、認識を合わせるための要件定義書を作成します。要件定義書に規定のフォーマットはなく、記載内容にも特定のルールはありません。概ね以下のような内容が記載されることが多いです。
【要件定義書の記載項目】
- システム開発の目的
- システムの導入環境
- 現状の問題点
- システムの全体像
- システムの機能要件
- システムの非機能要件
- 工数
- 予算
- スケジュール
- メンバー
- 開発者と発注者の今後の連絡方法、頻度
- セキュリティ対策の方法
まとめ
この記事では、システム開発の中でも要件定義について詳しく説明しました。システム開発の最初の工程であり、その後の工程に大きく影響する要件定義の進め方が正しく伝わりましたでしょうか。
システム開発のご依頼がございましたらお気軽にお問い合わせください。
(坂下)