ちょっと、仕事でばたばたしているうちに、
ブログの更新がひさしぶりになってしまいました。
また、がんばって書きますので宜しくお願いします。
SEに必要とされる能力のうちシステムの内部設計に必要とされる部分は、
いままでブログで述べてきたようにプログラマに必要とされる能力の延長線上にあります。
しかしながらそれは半分でしかなく、
もう半分は現実世界をシミュレーションする能力であると思います。
業務システムの出来ることは「絵が出て、紙が出るだけ」と極論しましたが、
だからこそ業務システムが何を必要とされているかは
「絵や紙が出て何が起こるか」を正確に把握する必要があります。
システムの外部設計をするには業務知識が必要です、
このことは極々言い古された単純なことですが。。。
そしてそれは個々に独自の事情をもっていて、異なります。
それをどのように正確に早く把握するかがSEのスキルです。
そのために私はいつも次のようなことを気にかけています。
それは、人、物の実際の動きを出来る限り全体的にシミュレーションすることです。
「この○○一覧の作業中欄の値を見てA担当は何を判断してどの様なアクションを起すのか?
それはいったい何故なのか?
(例えば遅延が発生した場合の責任がA担当にあるため、
または業務数より遅延業務数が評価基準として重く上席者より叱咤されるため)
また、B担当、A統括者はどうなのか?」
「A担当が業務を終わらせるとその日時をシステムに入力し、
物がB担当に届く前に△△一覧に表示され、
B担当は△△一覧の□□欄を見て業務の事前準備として、、、、」
といった風にシステムの各所を全体に渡ってシミュレーションすることです。
コツは、出来るだけ早く全体的につじつまがあうようにシミュレーションすることです。
早い段階では、ほんの一部の情報から全体をシミュレーションしなくてはいけないわけですから
全体の九十パーセント以上が想像の場合もあります。
しかし、全体的にシミュレーションできていることが重要なのです。
それが無ければ、お客様との打ち合わせの際の一言で
「ある一箇所の想定が成り立たずに一部分を変えると、他の箇所の想定が覆り、
と言った具合にシミュレーションの全体像を書き換える。」ことが出来なくなります。
つまりシミュレーションの全体像があればこそ、ちょっとしたお客様の一言、
ちょっとした資料の一句から多くの情報を引き出せるのです。
ここで大事なのは、きちんとつじつまが合うことです。
断片的な情報から全体像を作ろうとするので
大きなブラックボックスが出来てしまうのはしょうがないのですが、
既知の事柄に対しては少しの矛盾も発生しないようにしなければなりません。
そしてシミュレーションの全体像があるからこそ、
的を得たシステムの外部設計を行うことが出来るのだと思います。
長い間、業務システム開発のプロフェッショナルとして仕事していれば
お客様と深くコミュニケーションを取れる場合もあれば、
まったくコミュニケーションを取れない場合もあります。
いずれにせよこの方法が有益であると思います。
お客様と話が出来ないとしても、
例えば既存データベースの項目名だけでも多くのことが想像できるはずです。
少なくとも何らかしらの資料は見せてもらえるはずです。
(何にも見せてもらえないのであれば、そもそもシステムを構築していくことは不可能です。)
入手できた情報は、古墳から発掘された壺のかけらのように大事に扱って下さい。
かけら自体は間違っていることはなく、
組み合わせ方のほうが絶対的に間違っているはずなのですから。
ちょっとした細かいことをないがしろにしてはいけません。
必ず得られた情報のバックボーンには現実世界が控えているのです。
おかしいと思えるところがあったなら、それは単に自分が解っていないだけの話なのです。
経験上、ほぼ百パーセントお客様のほうが正しいはずです。
私が経験した中では、ただ私の理解がそこまで到達していなかっただけということが全てです。
落ち着いて考えて見れば、現実世界で行われていることは
その道の数多くのプロフェッショナル達が長い年月かけて作り上げてきたものです。
それに対してシステム開発者側は、その道の実務についたこともない、
何も知らないに等しい素人の思いつきに過ぎません。
どう考えても前者の方が圧倒的に正しいのは当たり前のことです。
もちろん外から客観的に見ているからこそ解ることもあります。
現実世界のシミュレーションが細部まで出来上がれば、
的を得た疑問、問題意識の共有がはじめて可能となるでしょう。
良く良く考えた先にだけ的を得た提案を生む土壌があるのだと思います。