要望と要求と要件の違いをシステムと利用者との関係から捉えなおす
要望と要求と要件は日常会話においてほとんど同じ意味で使われることもありますが、別の言葉を使うからにははっきりとした輪郭をもっておきたいものです。この記事では要望と要求と要件の違いをシステムと利用者との関係から捉えなおしてみます。
ベン図表現は妥当か
要望と要求と要件の関係をベン図で表現した説明を目にすることがあります。この図では要望が最も広く、その中に要求があり、さらにその中に要件があります。要件は要求の、要求は要望のサブセットだというわけです。
要件定義の活動が項目の選定にとどまるとは思えません。ベン図は要望と要求と要件の関係をよく表しているでしょうか。要望と要求と要件にはもっと違った関係がありそうです。
機能一覧は要件定義か
"こんな機能がほしい"という利用者の声を集めた機能一覧を一度は目にしたことがあると思います。あるシステムをエンハンスすべく打ち合わせているとします。現行システムの利用者から集めた声を機能一覧としてまとめており、各項目には優先度を表す列を設けています。"それでは優先度の高い機能から実装していきましょう。"このような進め方をいくらか見てきましたが、違和感を覚えています。
利用者の声を集めた機能一覧から項目を選定して実装していくだけのやり方では対象システムの姿が見えてきません。それぞれの機能をひとつずつとりあげればなるほど納得はできます。しかしそれらの機能を実現していったとして、それで何がどうなると言えるのでしょうか。
システムを含めた利用者を取り巻く環境がどうなるかを想像してみましょう。システムをリリースした先に見るもの、その姿を描くのです。リリースをゴールにすればやってやれないことはないのでしょうが、それだけではいけません。
システムの姿を定義する
「システムの姿」とはどんなものでしょうか。利用者の声をそのまま要件にするのは楽ですが、それではシステムの姿が描けません。ベン図が表す要望と要求と要件の関係に従えば、利用者の声を選定すれば要件を定められることになります。この関係は間違いで、別の形で表現されるべき関係があると考えられます。
システムは利用者の課題を解決するものであるはずです。システムには利用者がいます。利用者には"こんな機能がほしい"というだけの課題があります。課題があればそれに向き合う解決があります。利用者とシステムは課題と解決で関係しています。
システムの姿をシステムと利用者との関係で描いてみてはどうでしょう。課題をもった利用者が存在するとき、それを解決するものとしてシステムが存在する。システムの姿にはそのすべて―利用者、課題、解決、システム―が含まれます。
要件は要望や要求から飛躍する
課題をもつ利用者、解決としてのシステム、その間の関係があるなら、それぞれの定義があってもよさそうです。そこで、要望と要求と要件の関係を次の絵に当てはめてみます。
次のような利用者の望み、これを要望とします。利用者はクリティカルパスにある特定の業務フローを迅速に回したいと考えたとします。この業務フローがシステムの利用を含むなら、暗黙的にシステムに期待することがあるかもしれません。しかし、要望そのものはシステムに向けたものではありません。
利用者がシステムにこうあってほしいと求める声、これを要求とします。利用者はシステムがバックグラウンドで処理する(時間のかかる)プロセスが完了したら通知がほしいと言うかもしれません。あるいはこのバックグラウンド処理の進捗状況を画面表示してほしいと言うかもしれません。これらはシステムに向けられています。
システムおよびそのシステムを含めた利用者を取り巻く環境を"このようにしよう"とする定義、これを要件とします。開発者は利用者の声をそのまま実現するとは限りません。開発者はシステムとの作用の中にある利用者を想像してシステムがどうあるべきかを考えます。開発者はバックグラウンドで処理するプロセスそのものの見直しを提案するかもしれません。
まとめ
要件とはシステムの姿を描いたものであると考えると、要件の定義はもっと能動的な活動であることが分かります。優先度の高い機能を実装していくだけの受け身な活動ではありません。
開発者は利用者の声に従うのではなく自発的にシステムの姿を描くべきでしょう。開発者が自発的にシステムの姿を描くには利用者の声・課題を理解する必要があります。利用者が何を望みシステムに何を求めているか、それを理解してはじめてシステムの姿を描くことができます。
利用者の望みとしての要望、システムに向けられた要求、そしてシステムの姿としての要件がある。そんな関係を考えてみました。要望と要求の発信元は利用者ですが、要件の発信元は開発者です。要望と要求は分析、要件は設計であるとも言えそうです。要件としてシステムの姿を描く、それがシステムをデザインする活動なのだと思います。
Discussion