ソフトウェア開発における部品化のメリットは乏しい

ソフトウェアの再利用について、昨日のエントリで言及した。では、部品化についてはどうだろうか。

ハードウェアにおける部品化は部品交換と製造効率向上のため

ハードウェアにおいて、互換性のある部品の集合として製品を設計する最大の理由は、磨耗したり、破損したりした部品を容易に交換できるようにするためである。部品の種類が増えれば増えるほど、交換用に用意しておくべき部品の数が増える。用意しておける部品の量には限界があるので、部品の種類が増えれば増えるほど、交換部品が無いというリスクが高まる。
同じものを作り続けると、学習効果により製造効率が高まる。また、同じものを多量に作る場合は、専用の機械を開発するなどして、その面からも製造効率を高めることができる。

ソフトウェア開発においては、これらは意味を持たない。ソフトウェアにおいては、ハードウェアのような部品交換の必要はない。ソフトウェアは磨耗しないし、ウィルスや操作ミスなどで、破損した場合もバックアップから復旧すればすむ。ハードウェアにおける製造に相当するのはソフトウェアにおいてはコピーであり、そのコストは極めて小さいからコピーの効率を向上させるためにコストを費やしてもほとんど割に合わない。

ムダな開発を減らそうとするとコストが増大する

部品化により開発の重複を減らし、ムダな開発を減らそうとすること自体は間違っていない。問題は、部品化により開発コストが増大する面があることである。汎用的な部品の開発は、汎用性を考慮していないものの開発より何倍もコストがかかる。さらに、汎用的な部品を使って開発するためにはそのような部品があることを知っていなければならない。そのような部品を探して見つけ出すことができなければならない。部品の登録、検索のための扱いやすいシステムがなければならない。そのようなシステムの構築・運用にかかるコストはけして小さなものではない。