昨日の
社内派閥や愛人関係「も」記述できる、ソフトウェア工学手法
http://blog.goo.ne.jp/xmldtp/e/aa87b665b95a125141eb688f291d81e3
の続きのような話。
大学の授業の場合、要求分析のところで、ステークホルダー分析は、そんなに深くやらないと思う。
やる内容は、
「ステークホルダーは、大きく、ユーザーと顧客と開発者です。
ユーザーと顧客は別です。
ユーザーはシステムを利用する人、顧客はシステム開発費用を負担する人。
たとえば、ECサイトだとすると、
ユーザーは、ECサイトのお客さんとECサイトの管理者
顧客はECサイトの社長
です」
くらいかしら・・・え、さすがにそれよりも、もう少しやるって?
「そのほかに抵抗勢力、またそのシステムを導入することにより、不利益を被る人
までも入ります。たとえば、システムを導入することにより合理化し、解雇される
従業員(抵抗勢力)、ECサイトを導入することにより、一日中会社を運営する
ことになるので、会社の周りがウルサクなることで困る周辺住人です。
これらを解析する手法として、オニオンモデルがあります」
このくらいは、やるのかしら・・・でも、ここから、先にすぐにいって、
業務分析と化しちゃうよね。
抵抗勢力など、後ろから殴ってくるような人がいるとか
→殴るのは、抵抗勢力だけでなく、顧客、ユーザー、開発者のときもある
そういう人をどうやって発見するかとか、
実は権力も無く、要件を聞いてしまってはいけない人がいて
→その人の要求をどうするか
とかまで、教えないような気がする。
むしろ、KAOSとか、CVCAとか教えてしまうと、
これらの人はきえる(そんなこんなで、
CVCAはオニオンモデルと比べると、ステークホルダー分析が甘い)
実際のソフトウェア工学の世界も、抵抗勢力とかを(とりあえず)考えず、
みんないいひと!で業務分析する、新興宗教みたいな分析方法がある。
それがKAOS。
KAOSの場合、「どういう状態になっているか」という理想像を分析する。
たとえば、「小さな家を建てる」については、こんなふうに分析(詳細化=洗練)
させていく
ここで、「あなた」は、「イヌ」レベルだ(^^;)
しかし、コレを、昨日やった、社内派閥や愛人関係「も」記述できる、
ソフトウェア工学手法であるi*のSDモデルで記述してみよう。
こんなかんじ。
不自然な図に見える
なにが、不自然かというと、ふつうは、
Dの文字が
Dと
ひっくり返ったDが
対応関係にあるのがふつう(Give&Takeの関係)
ところが、ここで、明子さんは(
なぜ明子なのか判らない20代、30代の人は、リンク先を見てね!)要求だけ(Dだけ)しているけど、反対側のDがない。見返りになにをするのかわからない。
さらに、大工さんから見た場合、明子さんとあなたの関係も良くわからない。
そして、「家を建てる」という要望は、明子さんとあなたで同じなのかどうかもわからない。
ここで、大工さんは不安になる。
明子さん、この図から、はずしてもよくないか?
もし、あなたの「家を建てる」要求と、明子さんの「家を建てる」と違って
明子さんが図から外れたら・・・明子さんの「家を建てる」要求でやっていると、
あとからどんでん返しを食らうぞ?
ということで、大工さんは、明子さんの要望に従っていいのか、不安になる。
ここで、大工さんとしては、あなたと明子さんの間の関係を知りたいが、ここに婚姻関係に基づく
依存性があれば簡単なんだけど、そうでないと、外から観察できる範囲では良くわからないし、
そもそも、婚姻関係でなければ、変更の危険性がある、弱い関係になる。
そこで、大工さんは、「ここで一発、契約だ!」として、
あなたと、大工さん間で契約を結び、
明子さんの要求を文書化し、あなたと大工さんの間で合意をとる。
→明子さんとあなたの要求が違った場合は、明子さんの要求は無視する
この「小さな家を建てるプロジェクト」の結末は皆さん知ってのとおり。
プロジェクトはすぐに終了する(家は建てない)
もし、KAOSで分析していたら、「あなた」の存在は、小さなものなので、
家は建つものとして詳細化、ユースケース分析に入る。
そこで、いきなりプロジェクト中止と「後ろから殴ってくるような」事態におちいる。
しかし、i*で分析し、依存関係の不自然さに気づけば、
あなたに契約内容を確認するため、いち早く、家は建てる気が無いことに気づく。
世の中の開発だと、結構そういうことがあって、現場の人はいろいろUI要求を
出してくれるんだけど、「あんたを解雇するためにシステム導入するんだから、
あんたの使いやすさなんて、ど~でもいいんだよ」というかんじなのに、
そこで、要求が膨らんだり、「やっぱり現場のXさんは、必要です」とかいう話になり、
さらに「お客様のXさまに喜んでもらい、プロジェクトは大成功しました」とか、
わけわかんないことで、開発者が自己満足、でも次の発注は来ないことになる。
顧客(ユーザーのXさんではない。カネを出す顧客)は、ユーザーXさんを笑顔
にすることを求めているのではなく、Xさんの首を切ることを求めている。
上記の場合、Xさんの首を切れなかったのだから、
顧客から見たら、システム開発は大失敗!
当然、そんなベンダーには、二度と開発は頼まない。
顧客の求めている要望をまったく無視しているのだから、
Xさんが喜び、業務が回っても、金をドブに捨てたことになる。
Xさんも一時的には幸せだが、
長い目で見ると、古い技術に固定され、転職できず、一生が終わる。
(COBOLの汎用機での帳票出力のためのパンチしか出来ません!みたいな)
この手のストーリーは、大学では、あんまり教えてないんじゃないかなあ?
でも、そこまで教えないと(上記みたいな)要求変更は教えられず、
システム開発の本質(だれかの首切りをしなければならないが、それによって、
きられるほうも、顧客も、開発者も、次の世界にいけて、実はHappy)
の話もできないわけで・・・
「ユーザーの要求を満たすことで、みんなハッピー」みたいな
箱庭みたいなソフトウェア工学を
教えることになる
もちろん、箱庭が悪いわけじゃなくって、
議論をするためには、箱庭をつくるんだけど、
その箱庭が、実社会と同じと思っちゃうと、それは勘違い。
これは、「箱庭で、社会はもっとどろどろしてるから、使えない部分があるんだよ」
という、限界を教えることが重要だと思うんですよ・・・