濱井です。
2002/01/18 09:29:08 +0900にoota_ken@....comさんが送られた
メールに関する返信です。
> 単純なもので良いですから、CMMや既存のソフトウェア工学を叩くというネガティ
>ブな形ではなく、濱井さんの主張を私たちのような技術者(技術者以外の方もメーリ
>ングリストに参加されていると思いますが)が実施し、その効果が分かるレベルまで
>ブレークダウンしていくような形でまとめてくださりませんか。
「ソフトウェアの規模があらわすものは、生産量でなくむしろコストである」
ということを理解する方が、「ソフトウェアの生産量については、一般には
金額ベースで計るべき」ということ理解するより簡単だと思います。前者が
理解できない人に後者を納得させる自信は全くありません。また、前者を
理解していないことによる害の方が後者を理解することによる益よりはるかに
多いと思っています。それで、ここではとりあえず前者についてだけまとめて
みます。
1.主張
私のソフトウェアの生産性などに関する意見の基礎になっているのが、
「ソフトウェアの規模があらわすものは、生産量でなくむしろコストである」
ということです。
このことは、ソフトウェアの規模は基本的には小さい方が良く、規模が大きく
なる場合はそのデメリットを相殺する以上のメリットがなければならないこと
を意味します。
また、このことは、パッケージソフトの開発であろうと、受託開発であろうと
当てはまります。
2.根拠
「ソフトウェアの規模があらわすものは、生産量でなくむしろコストである」
ということの根拠は、以下の3点です。
(1)ソフトウェアの規模とは、開発されたソフトウェアの量ではなく開発に
費やされたソフトウェアの要素の量である。
(2)ソフトウェアは一種の情報であり、その価値は規模とは無関係である。
(3)ソフトウェアの開発自体が本質的にコスト要因である。
ソフトウェアの規模とは、開発に費やされたソフトウェアの要素の量です。
不要な機能や冗長なコードにより、ソフトウェアの要素を無駄遣いすることは
いくらでも可能です。
また、ソフトウェアは情報なので、その価値は規模とは無関係です。本や
レコードの印税は、原稿用紙の枚数や曲の長さとは無関係です。同様に
ソフトウェアの価値は規模とは無関係なのです。
何よりも、ソフトウェアの開発自体が全体から見た場合コスト要因となります。
ソフトウェアの開発は製造業における製造や流通業における仕入れと同様、
顧客に製品やサービスを提供するための手段にすぎません。製造しただけ、
仕入れただけでは一円のお金も生み出さないように、ソフトウェアの開発も
それだけでは一円のお金も生み出しません。
一円のお金も生み出さずコストとなるだけなので、製造業における生産性改善
手法は売れる分しか*製造しない*、流通業における生産性改善手法は売れる
分しか*仕入れない*のを基本にしています。トヨタのカンバン方式、
コンビニの小口配送、どちらもそうです。『ザゴール』で取り上げられている
TOCやTOCから発展したSCMも例外ではありません。
企業にとっては、売れて、顧客に提供して、始めて製造や仕入れや開発が
意味をもつのです。売れないぐらいならしない方がましです。
パッケージソフトが売れなかったり、発注元が倒産して入金がなかったり
したら開発した意味がありません。
3.これまでの問題点
「ソフトウェアの規模が生産量をあらわす」という誤解は以下のような弊害を
生んでいると私は考えます。
・開発コストの増大。開発期間の増大。
・欠陥の増大。
・保守性の低下。保守工数の増大。
・ソフトウェア再の阻害。
・リファクタリングの阻害。
・技術者のモラールの低下。
・生産性低下。
規模が必要以上に膨れあがることは、開発コスト、開発期間の増大に
つながります。また、規模が大きくなれば、潜在的な欠陥も増加します。
保守性も低下し、欠陥の増大と相まって保守工数の増大を招きます。
生産量は大きい方が望ましいので、「ソフトウェアの規模が生産量をあらわす」
という誤解は、「ソフトウェアの規模は大きい方が良い」という誤解に
つながります。これは、ソフトウェアの開発規模を減少させるような、
ソフトウェア再利用やリファクタリングが実施されることを阻害します。
また、コンパクトでシンプルなソフトウェアを開発するような技術者は評価
されず、そうした技術者のモラールの低下につながります。
以上のような害と生産性自体の誤解が相まって生産性を低下させます。