生産性計測指標の新提案

 ソフトウェア開発の生産性指標に「テストケース数」をからませられないかと考えている。
 ソフトウェアの生産性を測ろうとすると、なぜか人月当たりの行数とかファンクションポイント数ということになるけども、これって変じゃないかと思っているのだ。確かに「全くの新規開発」の場合はいいかもしれないけど、システム開発の大部分を占める保守フェーズでの修正開発に当てはめることは出来ないはず。というのは、修正でIF文のブロックを一つ入れただけでも、場合によっては下流で出力している帳票を全部出力して確認しなければならない場合もあるから。その場合、全部で何人月かかるかに拘わらず修正行数は4行、などと言うこともあり得る。
 生産性を行数やファンクションポイント数で測るだけなら、新規開発と修正を混ぜると無意味な数値が出てくるよ、くらいで済む。無駄と言うだけだ。しかし、計測された生産性データを元に生産性向上を迫られると悪影響が出てくる。つまり、行数やファンクションポイントに算入されない部分、具体的にはテストを省略したいという要因が働くからだ。殆どの場合これは確実に品質低下を招く。
 例えコードレベルでしっかりプログラムが書けていたとしても、マイクロソフト製品を使っていた場合は同様だ。VisualStudioをバージョンアップしようと説明を読んでいると、なになに「殆どの場合は互換性がありますが、、、」おいどこがどう違うのか一覧表はないのか。つまり既存コードのどこをどう修正すればよいのか、机上での影響調査は出来ないのか。ということは、全ケーステストが必要だ。(この場合は、コンパイラやクラスライブラリのバージョンアップというコードを1行も書かない場合に、既存システム全テストケースを行う必要が出てくる。)
 極端な例ではあるが、マイクロソフト製品がこれだけのシェアを占めている以上、無視は出来ない。またマルチベンダーのクライアントサーバーシステムは、大なり小なりテストしないと分からない、という傾向を持っているだろう。

 テスト削減への圧力を防ぐためには、生産性を測る尺度として行数やファンクションポイント数ではなく「テストケース数」を使えばよい。これなら、新規開発でも修正開発でも共通の尺度が使える。またテストケースをしっかり洗い出そうという誘因が働く(納期に追われるとわからんが)。
 見積の根拠としても使えるぞ。「テストケースがこれくらいですから、いくらかかります。」これで「テストを省略してでもコストを下げろ」という人がいれば、仕方ない、言うことを聞きましょう。

 根本的問題は、生産性を測るとき
 「生産性」=「生産量」/「作業単位」(ここで、生産量に行数とかファンクションポイント数が入り、作業単位に人月が入る。)
という式を立ててしまったところにある。

 正確には
 「生産性」=「付加価値」/「投入資源」
であろう。ようするにいくら金をかけたら、いくら儲かったか、ということである。資本主義においては当たり前のことである。すると生産性向上の施策はとても考えやすい。「どうやって作ったものを高く売るか/高く売れるものを安く作るか」である。これならば参考に出来る例がありそうだ。
 これに対して「生産性」=「生産量」/「作業単位」の式は、共産主義の経済哲学を踏襲しているといえる。従って、こういう式を立てた人には、まず「あなた、コミュニストですか?」と聞いてみるのが適当だろう。「まー、心情的には」と答えるならもう少し話を聞いてみたい。
 どうやって共産主義的な発想で測られた生産性を、我々が活動している資本主義経済の枠組みと矛盾無く結びつけるか是非聞きたい。私にはできないからだ。できないから、はじめから資本主義的に生産性を測りたいなと思っているのだ。
 でもどうしても共産主義的に生産性を測るのであれば、測った後に来ると予測される生産性向上の圧力からシステムの品質を守るためのビルトインスタビライザーを組み込んでおきたいと考えているわけだ。

 ちなみに私は「コミュニスト」を蔑称として使うことはありません。こういう言い回しを突然されると、相手はどんな反応をするかなあ、、、という興味がちょっとあるだけです。

コンピュータネタ、目次
ホーム