ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

要求仕様がなかなか出てこなかったり、業務分析できない場合の仕様のまとめ方

2005-07-26 15:53:22 | 開発ネタ

 昨日の話のつづきです。

結局、昨日の話はまとめると、システム開発する際に、要求仕様をまとめるけど、その場合、2通りのケースがあり、

・1つは、ユーザーが業務についていえるとき
 →この場合は、UMLで業務分析できる

・もうひとつは、業務が言い表せなかったり、そもそも、新規事業で、業務がわからないとき
 →この場合、業務がわからないから、それをもとにして図を作成するUMLでつくるのは難しい

っていう話でした。

 で、このとき、一言加えておくと、よく、下のケースでは(ユーザーが業務がわからないとき)「業務について(あるいは、要求について)、あとで出てきます」といわれてしまうことがある。

 この場合、注意してね!これ、出てこないから。。。

 で、どうしょーもなくなって、ぎりぎりになって、えいや!と適当なものが出てきて、それを開発しすると。。。つじつま合わないとか、ぜんぜん違うなんていうケースになる。

 なのに、ユーザーさんなり、だれかから、「仕様はあとで出てくるみたいです」っていわれると、ずーーーと待ってしまって、作業がとまり、結局あとで、時間が足りない!とか言い出す人っているのよねえ。




 で、じゃあ、こういうふうに、新規なものとか、業務がわかんないものの、業務フローを出す方法だけど、その方法の1つとして、昨日、
(1)モノの流れをおさえる
(2)次にカネの流れをおさえる(カネが関係ない場合は、省略)
(3)で、モノとカネだけで、情報の流れ(必要データ)を確定してしまう

と、モノとカネの流れから、業務を推測して出すということを書いた。

で、これですめばいいんだけど、それだと、わかんない場合もある。
で、そういう場合は、類似業務、あるいは部分的業務の標準化を利用して、もってくることになる。

 たとえば、ホリエモンの「放送とITの融合」を例にとると、たぶん、その場合、テレビの動画配信ということになるでしょう。
 で、見た動画のお金を回収するのに、広告収入からとるなら、今のテレビ業界の広告業務を利用することになるし、個人個人に集金するということになれば、ネットでの標準的な集金方法ということになる。

 ネットでの基本的な集金方法っていうのは、やり方が決まってて(集金代行を利用する場合だけど)
・銀行振り込み
・口座引き落とし
・郵便振替(電信/一般)
・クレジットカード
・コンビニ決済
・代引き
とあり、それぞれの業務フローは、だいたい決まっている(決済代行会社のいうようにやると、決まってしまう)。それを利用することになる。

 こんなふうに、わかんないところは、類似業務の標準化されたものや、部分部分の標準化手法を使うことになる。
 通販サイトにおける、ショッピングカート、ショッピングカートから代金集金、さらにキャンセルの流れ、なんていうのは、もう、固まった手法があるので、こういうものに関しては、ユーザーがわかってなかったら、すぐに、こっちから、提案しちゃったほうが、いいよね。ユーザーの夢をきいてると、妄想におわり、いつまでたっても開発できない。はい。

 小売だと、統一伝票を使う場合。あの伝票をつかうと、もう、業務の流れが決まってしまう。ベンチャーで、業務がわかってなかったら、こっちから統一伝票の枠にはめてしまうっていう手もある(統一伝票自体は使わなくても)。




 で、そうやって、業務フローをつくるとき、どこまで細かくやるかっていうことなんだけど、デザインパターンレベルにまで落としてしまうとやりすぎ。
 90年代前半は、マッチングとか、リスティングとか、マージとか、ある程度、事務処理の基本的なパターン(ビジネスパターンとでも呼びましょうか)があって、そこの部分のプログラムは、もう枯れていたのが、会社にあったり、ユーティリティとして用意されていたので、そのレベルにまで落とせばよかったわけ。

 でも、いま、そんなパターンなんて、習わないでしょ!

 事実、このまえ、理工系の、情報系の、国立大学卒業の、経験2、3年の、さらに卒論がオブジェクト指向関連をやってる人が、Javaで、マージプログラムをどう書くのかというのを、ほかの人に聞いているところを目撃したもん!
(ちなみに、ハッシュマップで書きます。
HashMap mst; //マスター
HashMap trn; // トランザクション

// trnのキーが、mstに、なければデータ追加、あれば上書きする(=マージ)

String[] keylist = (HashMap)trn.keySet().toArray(new String[0]);
for(int i = 0 ; i <keylist.length ; i ++) mst.put(keylist[i],trn.get(keylist[i]) );
}
でできます)
つーことは、大学でも、会社でも、マージなんていうのを、おしえないのだよ、きっと(ちなみに、聞かれたやつも、こたえられなかったみたいだから)。

ということで、そーなってしまうと、いったい業務は、どこまで細かくすればいいの。。。という歯止めがわかんないわけなんだな、これが(^^;)
 言い換えると、どこまで細かくしたら、プログラム可能か、見えない。

 ということで、こういう場合は、とにかく、思いついたら、頭から組んでいくしかない。手がとまったら、そこをさらに、詳細化するというかんじで。。。
 。。。こんなんで、いいんかい??

 。。。いいんだろうな、きっと。




ぎえー、昨日のブログのまだ答えにたどり着いてないけど、今日も、お仕事しないといけないので、このへんで、続きは、覚えていたら、書きます。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする