要件定義(Requirements Definition)とは
要件定義とは、システム開発のプロジェクトにおいて、開発に取り掛かる前に「新しく作るシステムで何を実現したいのか」「どのような機能を盛り込むべきか」を明確にし、ドキュメント(要件定義書)にまとめる作業のことです。発注元(顧客)と開発会社(システムエンジニア)が話し合い、お互いの認識にズレがないようにすり合わせる最も重要な工程です。ここが曖昧だと、完成したシステムが使えないものになってしまいます。
具体例
ネットショップを開発する際の要件定義の具体例です。
- 業務要件:クレジットカード決済のほか、主要な電子マネー決済ができること。
- 性能要件:セール時にアクセスが集中しても、画面が固まらずに3秒以内に表示されること。
- セキュリティ要件:顧客のパスワードは暗号化して保存され、社内からも見られないようにすること。
これらを一つずつ合意していき、「どのようなものを作るか」というゴールを共有します。
もう少し詳しく
要件定義は、システム開発の全工程において「最も失敗が許されない重要なフェーズ」と言われています。なぜなら、後から「やっぱりこの機能も欲しかった」「ここはこういう動きをすると思っていた」という変更(手戻り)が発生すると、設計のやり直しやプログラムの書き直しが必要になり、開発期間の延長やコストの大幅な増加につながるからです。そのため、要件定義では、システムの利用者であるユーザー部門の意見を徹底的にヒアリングし、業務の流れ(業務フロー)を可視化することが求められます。
要件定義は大きく「機能要件」と「非機能要件」の2つに分類して整理されます。「機能要件」とは、システムが「何をできるか」(例:商品をカートに入れる機能、売上をグラフ化する機能など)を指します。一方、「非機能要件」とは、システムが「どのような品質・性能を備えているか」を指し、処理スピード(レスポンスタイム)、同時にアクセスできる人数、24時間365日止まらずに動く可用性、セキュリティの強度などが含まれます。ユーザーは機能要件ばかりに目を向けがちですが、システムエンジニアの視点で非機能要件もしっかりと定義しておくことが、システムトラブルを防ぐために不可欠です。
試験でのポイント
試験では、要件定義の「目的」と、前後の工程(システム企画や設計)との関係性がよく問われます。「開発するシステムに必要な機能や性能を明らかにし、利害関係者(発注者と開発者)間で合意すること」といった説明文が出た場合は、要件定義を選びます。また、「機能要件」と「非機能要件」の違いを問う問題も頻出です。「システムの使い勝手、性能、セキュリティ、信頼性」などに関するものはすべて「非機能要件」に分類されることをしっかりと覚えておきましょう。要件定義が終わると、その内容を基に外部設計(基本設計)へと進みます。
関連する用語
要件定義を行う前段階で、ITベンダーに具体的な提案を求めるために提示されるのがRFPです。要件定義で決定した内容に基づいて、ユーザーから見える画面や帳票のレイアウトなどを決めていく工程が外部設計となります。また、システム開発の進め方全体を管理する手法として、ウォーターフォールモデルなどの開発モデルも関連してきます。