昨日の話のつづきです。
結局、昨日の話はまとめると、システム開発する際に、要求仕様をまとめるけど、その場合、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]) );
}
でできます)
つーことは、大学でも、会社でも、マージなんていうのを、おしえないのだよ、きっと(ちなみに、聞かれたやつも、こたえられなかったみたいだから)。
ということで、そーなってしまうと、いったい業務は、どこまで細かくすればいいの。。。という歯止めがわかんないわけなんだな、これが(^^;)
言い換えると、どこまで細かくしたら、プログラム可能か、見えない。
ということで、こういう場合は、とにかく、思いついたら、頭から組んでいくしかない。手がとまったら、そこをさらに、詳細化するというかんじで。。。
。。。こんなんで、いいんかい??
。。。いいんだろうな、きっと。
ぎえー、昨日のブログのまだ答えにたどり着いてないけど、今日も、お仕事しないといけないので、このへんで、続きは、覚えていたら、書きます。