2010年12月25日土曜日

Win-Win 達成の方法論 〜 Value-Based Software Engineering

ではソフトウェア開発において Win-Win を達成するためには,どうしたらいいでしょうか.それを目指しているのが Value-Based Software Engineering (VBSE) です.VBSE の目指す開発は,ソフトウェア開発に関わる利害関係者(stakeholder)全員が Win-Win になるようにすることです.

VBSE の基本理論は4つあります.ちょうどこの4つの理論がそれぞれ理想的に達成されるのであれば,順番に適用すると Win-Win が達成できると主張しています.
  1. Dependency Theory: どんな利害関係者がいるのかを特定する
  2. Utility Theory: それぞれの利害関係者の価値観を見える化する
  3. Decision Theory: 衝突する利害を調整し,方針を決定する
  4. Control Theory: 開発が決められた方針を守っているか,監視する
利害を調整しながら行わなければならないソフトウェア開発プロジェクトは,たいてい無意識のうちにこのように行っているのではないでしょうか?

これらの理論は主に経済学を背景にしています.分かりやすいのは Utility Theory です.みなさん「需要供給曲線」を知りませんか? これは縦軸に商品の価格,横軸に商品の数量をとったグラフで説明されます(下図).合理的な消費者は,価格が安くなると大量に購入し,価格が高くなると少量しか購入しません(図中の赤実線).合理的な生産者は,価格が高くなると大量に出荷し,価格が安くなると少量しか出荷しません(図中の緑実線).最初は価格が高すぎたり安すぎたりします.高すぎる場合は,消費者が少量しか購入しないのに対し,生産者が大量に出荷します.そうすると商品が余るので買い手がつかず,やむを得ず生産者が価格を下げます.安すぎる場合には逆のことが起こり,消費者が価格が高くても買おうとします.これを繰り返すと次第に均衡価格(図中の青破線)で落ち着きます.これは経済学で最初に習うことです.
これは見方を変えると,図中の赤実線は消費者の,緑実線は生産者の,それぞれ商品の価格と数量に対する価値観を表していると考えられます.経済学的な立場では価値観を一種の関数として表すことができると考えられています.複数の利害関係者の価値観をそれぞれ関数として表現できれば,最適な開発方針を選択することは利害関係者の関数からなる方程式の最適解を求めることを意味します.これが VBSE の基本的な考え方になっています.

価値観の関数化などできるのか?という疑問は当然持つでしょう.これはインタビューを通じて行うことがあります.たとえばアイスクリームの価格と数量の需要曲線を求める場合,消費者Aに「アイスクリームの価格が○○円だったとしたら,何個欲しいですか?」というような質問を投げかけます.それを辛抱強く聞き続けるわけです.統計的な方法もあります.価格が変動したときに,どのくらい需要や供給が変化するかを観察する方法です.

ソフトウェア開発においても,何かの懸案事項に対して「こういう条件だったら採用しますか?しませんか?」と利害関係者に聞いて回ることができるでしょう.あるいは会議の場で,ある条件が提示されたときの利害関係者の反応から推察することもできるでしょう.

このように,VBSE によって,すべての利害関係者が Win-Win になるようになるというわけですが,もちろん実際にはそううまくいきません.VBSE の本を読んでも,そんなに理想的にうまくいくとは限らないだろうという指摘をしたくなることが多々あります.現時点ではあくまで理想論だと私は考えます.

しかし,VBSE が提示しているソフトウェア開発のあり方や,それを実現するためのアイデアの数々は,理想的なソフトウェア開発の姿を示唆しているのではないでしょうか.