システムやソフトウェア開発に携わっている人だけでなく、仕事をしていると、要件定義という言葉を耳にするかと思います。
この言葉を知っている人は多いかと思いますが、「実際にどういった事を行うのか」や、「なぜ重要なのか」をしっかりと知っている方は多くないかもしれません。
そこで本記事では、この要件定義について基礎的な知識から重要性、そしてその流れをご紹介することで、改めて要件定義について再認識していただき、業務に少しでも役立つようになればと考えています。
要件定義とは
要件定義とは、システムやソフトウェアの開発において、「何を実現する必要があるのか」という目的を明確にする業務です。システムやソフトウェアの開発プロジェクトにおいては、システムに求められる必要な条件や、解決するべき課題などを明確化し分類していく事は非常に重要なプロセスとなります。
この要件定義と言うプロセスでは、プロジェクトの利害関係者の要求やニーズを聞き出し、それらを要求事項としてまとめ、機能要件、非機能要件、利用環境、性能目標、セキュリティ要件、ユーザーインターフェースといった要件に分類し、それらを「システム要件」としてまとめて文書化を行います。
この一連の業務はプロジェクトの根本と言っても過言ではなく、ここで決まった要件定義を軸に、設計・開発・テスト・導入などと工程が進んでいくため、全体的なプロセスに影響を及ぼし、プロジェクトの成功のために不可欠な要素となります。
従って、この要件定義を正確で明確に行う事は、プロジェクトの関係者が同じ目標に向かって作業し、予算やスケジュールの管理が可能になり、品質などの向上につながるため、最終的な成功を確保する役割を果たすものとなります。
要求定義と要求定義?一緒の事なのか?
要件定義と要求定義は密接な関連があるため時折混同されますが、異なる作業です。要求定義は要件定義を行うために、利害関係者から情報や要求を集めるプロセスの事で、ミーティング、インタビュー、ワークショップ、アンケートといった手法でコミュニケーション取り合い、彼らが抱える要求や課題、そしてニーズを理解し、要件定義を行うための情報を収集することです。
一方、要件定義は前述の通り、システムやソフトウェアの開発において、「何を実現する必要があるのか」を明確に定義するプロセスとなります。要求定義で収集された要求・課題・ニーズなどを、システムやソフトウェアの機能、特性そして制約条件などと照らし合わせて文書化し、プロジェクト全体の開発目標や範囲を明確にする役割となります。
したがって要求定義は、要件定義の前段階として行われることが一般的です。要求定義によって収集された情報が要件定義の基礎となり、具体的な要件が明確化されるので、要求定義は、要件定義の精度と正確性を向上させるために重要なステップとなります。
要件定義の進め方
それではここで、重要な要件定義をどのような手順で行うのか押さえておきましょう。
要件定義の大まか流れについては以下の通りとなります。
要件ヒアリング・利害関係者とのコミュニケーション
要件定義でまず最初に行われるのは、特定の業務に関連する要求やニーズを収集する事です。
収集するためにまずはヒアリングが行われることとなります。このヒアリングでは、プロジェクトの利害関係者とミーティングやインタビューを通じて業務の目的や課題を理解することから開始するのが一般的です。次に、業務の具体的な流れや手順を把握し、システムやソフトウェアに関与する人々や役割、データや情報の流れを把握します。これらの情報をもとに、現状の課題を抽出し、改善の必要性を洗い出していきます。
このヒアリングがプロジェクトの成功を左右する事もあり、利害関係者の要求を正確に捉える難易度の高い重要なステップとなります。
要求分析・システム要件の定義
ヒアリングで収集した要求を整理・優先順位付けを行います。
ここで重要になってくるのは、全ての要求がシステム化や実現できるわけではありません。要求によってはシステム化を避ける必要もあるため、要求事項の相互関係や競合関係を把握し、業務プロセスやフローなどと照らし合わせながら、その要求の妥当性や実現可能性を評価していく必要があります。
このように、収集した要求を分類・分析を行うことで、要求が正確なシステム仕様に変わっていき、優れたシステムの実現が近づきます。
要件定義書作成と要件管理
要求分析を行い、それらの妥当性や実現可能性などが決まった後に、改めて「要件定義書」として文書化することが重要です。
「要件定義書」はヒアリング、要求分析、そしてシステム要件定義の内容をドキュメント化したものです。これら要件を明確で具体的な形で、要求仕様書や要件仕様書といった形にし、要件の記述、優先順位、制約条件、依存関係などを記述して作成を行います。
重要なポイントは、要件定義書は要件を関係者や利害関係者と共有し、レビューを行う事です。そしてフィードバックや修正を受け入れ、要件を改善することで相互の認識にズレなどを埋めていき、最終的な承認を得て、要件が正式に確定されるまで繰り返しプロセスを行います。
確定した要件は適切に管理し、変更が生じた場合は変更管理プロセスを実施します。変更の影響評価や承認手続きを行い、変更が要件定義全体に与える影響を管理します。
要件定義はプロジェクトの特定のニーズや要件の複雑さに合わせて調整する必要があり、なかなか固まらない場合は要件定義に非常に時間がかかる事も予想されます。そのためスケジュールやコミュニケーションには柔軟性を持ってプロセスを進めることも重要です。
要件定義書に必要な内容
要件定義書という文書はなぜ必要になるのでしょうか。
システム開発やソフトウェア開発は基本的に要件を実現するための設計を行い、その設計をもとにプログラミングなどが行われていきます。そのため何か問題が起きた場合に、最終的に立ち返るのがこの要件の部分となります。何か問題が起きて、要件に立ち返った際に、要件が合意されたドキュメントとして残っていないと、致命的なトラブルに発展するのは明らかでしょう。
この場合、「言った」、「言わない」といった論争になります。このような事態を防ぐために、合意した要件を書面で残す事が非常に重要になってきます。
要件定義書がない場合にに起こりえるトラブル
- 予期せぬ設計や実装
要件が明確に定義されていないため、開発チームや利害関係者の間で要求の理解に差異が生じる可能性があります。これにより、予期せぬ機能の不足や誤った実装が行われる可能性があります。
- スコープの拡大
要件が明確に定義されていないと、プロジェクトのスコープが不明瞭になり、要求の増加や変更が頻繁に発生する可能性があります。これにより、予算やスケジュールの超過、開発の遅延が生じる可能性があります。
- コミュニケーションの混乱
開発チームと利害関係者の間でのコミュニケーションが困難になります。要求の把握や優先順位付け、変更管理などのプロセスが明確にされていないため、認識の食い違いや意思疎通の問題が生じる可能性があります。
- 品質の低下
設計時や開発時に、システムの品質やパフォーマンスに関する要件が見落とされる可能性があります。これにより、システムの信頼性やセキュリティの問題、ユーザーエクスペリエンスの低下などが生じる可能性があります。
このようなトラブルや、品質低下などを起こさないためにも、しっかりとした要件定義書を作成する事が重要です。
要件定義書で定義しておく内容
ぞのような要件定義書で記載する主な内容は以下の通りです。
- システムの概要
システムの目的や背景、対象範囲、利用者などの概要情報を記述します。利害関係者全員がプロジェクト概要を認識することで共通のゴールが見えやすくなります。
- 機能要件
システムが提供すべき具体的な機能や操作要件を列挙します。ユーザーの操作フローや画面表示、データ処理などが含まれます。
- ユーザー要件
システムを利用するユーザーの要求やニーズを明確化します。ユーザビリティや使いやすさの要件、ユーザーエクスペリエンスに関する要件が含まれます。
- データ要件
システムで扱うデータの種類や属性、データの入力・出力要件、データベースの設計などを明示します。
- パフォーマンス要件
システムの性能要件や応答時間、処理能力、負荷に関する要件を示します。
- セキュリティ要件
システムのセキュリティ要件やアクセス制御、データの保護に関する要件を明記します。
- 制約条件
システム開発における制約条件や規制要件、技術的な制約などを定義します。
- 優先順位
各要件の優先順位や重要度を設定し、開発やテストの際のリソース配分に役立つ情報を提供します。
- 依存関係
システム要件の中での相互の依存関係や他のシステムやサービスとの連携要件を明示します。
このように、ヒアリングで聞き出した要求事項を分類・分析し、要件として固めて書面に落とすことで、プロジェクトの羅針盤として活用することができるでしょう。
要件定義はプロジェクトで最も重要です。
システムやソフトウェアの開発において、「何を実現する必要があるのか」という目的を明確にする業務を要件定義と呼び、システムに求められる必要な条件や、解決するべき課題などを明確化し分類していく非常に重要なプロセスです。
要件定義を成功させるためには、プロジェクトのステークホルダーが持つ要求やニーズをヒアリングし、分析・分類を行いシステム要件として書面にまとめる事が重要です。書面にまとめないと、方向性を見失ったり、スコープが拡大するなど思わぬトラブルが発生し、プロジェクトの成功が難しくなる可能性が出てきます。
そのため、聞き出した要求やニーズはまとめるべき要件を把握して、正確で明確な要件定義として書面に落とし、利害関係者全員で共有し合意することがプロジェクトの成功へと近づくでしょう。