The Dragon Scroll

Be just and fear not.

ソフトウェア工場と再利用

 今月の日経SYSTEMSの3つ目の特集は、ソフトウェアファクトリーでした。


「製造業の工場をモデルにしたソフトウェア開発(=ソフトウェアファクト
リー)」、それは、開発ツール・マネジメントツール・コミュニケーション
ツールなどのリソースを集約し、開発の標準化を図るものであったり、
コンポーネントベースの開発のことであったり、いくつかのタイプがある。
そして、物理的にエンジニアを一箇所の場所(まさに工場)に集め、
開発のみを重点的に行うやり方も含まれるようだ。


 私は、この「製造業の工場のように、エンジニアを集める」という
考えを、否定している。
製造業の考えは、確かに非常に参考になる。
例えば、トヨタの徹底的にムダを省くやり方やかんばん方式などはリーンソフトウエア開発?アジャイル開発を実践する22の方法?に見られるように、SIの現場でも参考にすることが
できる。


 しかし、SIにおける開発とは、複雑で、クリエイティブで、
職人気質なものではないだろうか。そこに、画一的な考えを注入することは、果たしてできるのだろうか。
ましてや、”工場”のようにシステムを開発することができるのだろうか。
(標準化の考えもわかる。だが、これも懐疑的に思うところがある)


 ある機会があって、”工場”ようなところで、開発を行ったこともある。
そこは、偽装請負の温床になりかねないと思った。
 逆に”工場”が自社内にあったことも経験した。
そこは、現場(顧客との接点)から乖離してしまっていた。
私は、その機構を利用したいは思わなかった。


 その一方で、各種フレームワークによって、開発上のブレ幅が小さくなった
ことや、コンポーネントベース開発の意味するところは大きい。
SI開発は、”開発しない”ことを目指している。その方向には、
賛同する。
 いつまでも、”より良いソフトウェア*1”に顧客が満足することは
ないだろう。それは、開発側の一方的な自己弁護だと思う。
そこに胡坐をかいていてはいけない。
 EXCELが異常終了した場合に呪いの言葉を、我々が吐くように
本来、顧客とて、”不具合の無いソフトウェア”を望んでいるのだ。


 既にテストを終え、不具合の無い、ある意味”枯れたプログラム”を
組み合わせて、新たにシステムを構築する。
そこに不具合が入り込む可能性は、スクラッチ開発に比べ、
当然低くなる。


 ”再利用”の考えの延長には、SOAがある。
結局のところ幻想なのだろうと諦めかけていた”再利用”も
あながち、夢物語ではなくなってきたと、私は考えている。

*1:ここでの意味は、不具合が事前にあるかもしれないが、ソフトウェアとはそのようなものだと、作り手があきらめているケース