ビジネスコンポーネント指向開発
コンポーネント活用の開発法には、「コンポーネントベース開発」とか「コンポーネント指向開発」などと呼ばれているものがある。しかし、いずれもソフトウエアのコンポーネントという考えが強く、ビジネスの視点が弱いので、ここではあえて「ビジネスコンポーネント指向開発」とする。
さて、コンポーネントを使って開発しようというのは、まずは早く開発できること、すなわち開発効率があがること、変更要求に素早く対応できることなのだが、これだけだと、まだ前に言った「開発の2つのジレンマ」の解決にならない。特に仕様がなかなか固まらないことへの対策は弱い。それでは、なぜユーザは仕様を決めないのだろうか、決められないのだろうか。
おそらく、一番大きな「理由はユーザが“なかなかその気にならない”ということではないだろうか。そうですよね、どんなプロジェクトでも尻に火が着かないとまじめに考えないものなんです。いくら、開発側が早く仕様を決めてくれと言っても、いま忙しいからだとか、自分じゃ分からないので現場の人に聞いてみるからちょっと待ってくれだとか言っていっこうにフィックスできないことが多い。また、逆にあれやこれや思いつくものななんでもいいから仕様に入れておけということになる。これをどうにかしたいのだ。
ということは、ユーザに早く本気モードにさせるのはどうしたらいいのだろうか。筆者は、とりあえず動くものをその場ですぐに見せることだと思う。見たものがすぐに稼動できてしまうのだということがわかると真剣に向き合ってくれるはずだ。ユーザの心理としては、紙に書いたものを見せられてもよくわからないし、周りのメンバーにも説明できない、実際の画面がどう動くのかとかをチェックしながら決めたいと思っている。それに、いくつかのケースを動かしてみて比較して決めたいのですぐにそれができるようにしてほしいのだ。Ismael GhalimiがBPM2.0で必要な機能としてOne Click Deployを揚げていたのはこういうことではないかと思う。
コンポーネントベース開発の概略手順はつぎのようになる。
1.対象業務プロセスの特定
2.プロセスと機能のマトリックス表の作成
3.コンポーネントライブラリーから適用可能ものを選ぶ
4.ライブラリーにないものは書き出す
5.BPMのモデラーを使ってフローを書くと同時に適正化を行なう
6.必要に応じてハイレベル要件を埋め込む
7.ライブラリーにないものは極力コンポーネント化
8.すぐに実装してユーザと摺り合せ、戻って修正・テストを繰り返す
9.システム本番稼動
この開発の特徴は、キーワードでいうと、モデル駆動型、イテレーション開発、テスト重視というところでしょうか。また、大事なポイントは、ユーザに見せてから稼動までを最短でやるために、実際に動くものを見せて、その場で修正してやっていくようなことでないといけない。他所からそんなことはシステムを知らないやつが勝手に言っていることだという声が聞こえてきそうだが、無理を承知で知恵をだすべきだと思う。
このプロセスで難しいのはモデリングと実装のギャップをどう埋めていくかだが、そこはいわゆるSE(最近はITアーキテクトとも言う)の登場でしょう。すなわち、ビジネスプロセスデザイナーが業務モデルをデザインし、プログラマーがコンポーネントをつくり、システムエンジニアそれを実装するという役割になる。それぞれの間でのコラボレーションや「摺り合せ」が開発プロジェクトを成功に導くのだ。
この開発形態は、ウォーターフォール型では難しく、アジャイル開発、手法としてはXPに近い形になると思うが、ユーザの人にとっては、むしろ、「セル生産方式」といった方がわかりやすいのではないだろうか。あのキャノンの生産方式で多能化された少数の人で最初から最後まで組み立ててしまうやりかたで、「ビジネスコンポーネント指向開発」も「セル生産方式」のように、数人で組み上げるイメージなのではないだろうか。
この開発方法は、(株)日立製作所 ソフトウエア事業部の桐越信一氏が提示している「コンポーネントベースモデリング」が非常によく整理されて参考になる。ただ、データモデルにあまり言及していないことと開発はフェイズドアプローチを言っているのがちょっと気になる。
また、「コンポーネントベース開発」ということで言えば、コンポーネントスクエアという会社ができていて、CBDスクエアというコミュニティを運営して、まさに「コンポーネントベース開発」について議論している。ただし、ここでは、参加がSIer中心のようで、ビジネスというより、どうしても開発側のシステム寄り視点になっている。だから、いい業務プロセスを作ろうというのではなく、再利用性が高いコンポーネントをどうやって作ったらいいのかという開発効率重視の考えが強いように思える。これは、再三言いますが、このコミュニティだけの話ではなく世の中全般に言えることのようです。