要求工学(Requirement Engneering)
ソフトウェアエンジニアリングの中で、要求定義の手順や要求事項を引き出す技法、ノウハウなどを体系化し、整理したものが要求工学です。
その内容はSWEBOKでも章立てに使われるなど業界でも共有化されつつありますのでここでもその内容を紹介しておきます。
| プロセス | プロセス要素 | 概要 |
| 要求開発 | 要求抽出・引出し | ユーザから要求事項を引出す |
同上 | 要求分析 | 引出した要求事項を分析する |
同上 | 要求仕様作成 | 分析結果をドキュメント(文面・図・表など)にまとめる |
同上 | 要求の妥当性確認 | 要求仕様の内容がシステムの意図や用途に合うのかを確認する |
| 要求管理 | - | プロジェクト全期間で作成した要求仕様の整合、完全性を確保する |
<注1>
「要求」とは、”ソフトウェアやシステムを利用することで実現すること、したいこと”を指しています。
その実現のためにソフトウェアやシステムのインターフェース、構造、機能を詳細に落とし込んだものが「仕様」です。
<注2>
要求工学では、これらのプロセスやタスクがシーケンシャルに進行していくのではなく、何度も繰り返しプロセスやタスクを実施しながら進行する、つまり要求の内容が段階的に、あるいは反復的に明確化・成長していくと考えられていることに注意してください。
【要求:Requirements】とは?
IEEEによれば、要求とは以下のように定義されています。
| 1.問題解決または目的達成のためにユーザが必要とする条件や能力 2.契約、標準、仕様、あるいは他の正式文書を遵守するために、システムやシステム構成要素が満足する、または保持しなければならない条件や能力 3.1や2のような条件や能力を文書で表現したもの |
このほかにも「製品が持つべき特性」「何を実装するべきかの仕様」など、いろいろな定義があるようです。
【要求:Requirements】の重要性
言うまでもありませんが、要求事項はソフトウェア開発にとって非常に重要です。
要求事項は、実作業を見積もり、計画するために必要ですのでプロジェクト管理の基盤であると言えます。
また、求めれられるソフトウェアを作り上げる(開発する)ための元となる情報源です。
要求 → (見積・計画立案) → 計画・スケジュール → (作業)
要求 → (分析・設計) → 仕様 → (実装)→ コード
要求事項は、ソフトウェア開発作業のすべての根源だということができますね。
要求事項を不明確、不整合なままにしたり、いい加減に取り扱われると、プロジェクト管理も、作り上げるソフトウェア自体もおかしなことになるのは当然のことです。
とはいえ、要求事項を開発し、管理することは簡単ではありませんし、銀の弾丸(あっという間に解決してくれる魔法のような手段)ももちろんありません。
人間の特性や必要な要求事項の切り口、管理方法を確実に把握した上で対応していきましょう。