要件エンジニアリング
定義
ステークホルダーのニーズを理解し、検証可能な要件として定義・管理するための活動の総称。引き出し・分析・仕様化・検証・管理の5活動から構成される。
なぜ重要か
要件の曖昧さや欠落は後工程での手戻りコストを指数的に増加させる(IBM研究: 要件フェーズで発見した欠陥の修正コスト = 1、本番後 = 100)。
要件エンジニアリングの本質は「ステークホルダーが何を本当に必要としているかを引き出すこと」であり、「何を言っているかをそのまま書き起こすこと」ではない。ユーザーは自分のニーズを正確に言語化できないことが多い。
要件の種類
- 機能要件: システムが何をするか
- 非機能要件: システムがどのように動くか(パフォーマンス・セキュリティ・可用性)
- 制約: 変更できない前提条件(既存DBとの互換性等)
5つの活動
- 引き出し(Elicitation) — インタビュー・観察・プロトタイプで潜在ニーズを発掘する
- 分析(Analysis) — 競合・曖昧さ・実現可能性を評価する
- 仕様化(Specification) — ユースケース・ユーザーストーリー・SRSとして文書化する
- 検証(Validation) — ステークホルダーが要件を確認・合意する
- 管理(Management) — 変更を追跡し影響を評価する
ユーザーストーリーの構造
As a {ユーザータイプ},
I want to {やりたいこと},
So that {達成したい目的}.
受け入れ基準(Acceptance Criteria)とセットで書くことで検証可能になる。
適用場面
- プロジェクト開始時の要件定義フェーズ
- 要件変更の影響評価が必要なとき
- 「何を作るか」についてチームとステークホルダーの認識がずれているとき
出典
実践ソフトウェアエンジニアリング(Pressman)第7〜10章