生産性はこれでいいの?(ソフトウェア分析)
生産性とは
ソフトウェア開発の生産性とはなんでしょうか。どのような意味を持っていて、どのように定義すればいいのでしょうか。一般的に生産性は投入コストに対する成果量のことです。これに比すれば、ソフトウェア開発に掛けたコストに対するのソフトウェアの成果量になります。
ここでソフトウェア開発に掛けたコストを原始的な「人月」で定義してみます。x人がyか月掛けてソフトウェアを開発した場合は、x × y 人月となります。「人月の神話」という神託があるくらいの神代からある基本単位です。
少しだけ真面目に書きますと、人と月は交換可能ではありません。例えば、1人で10か月の作業は10人で1か月では無理です。1日に3100人を投入しても、絶対無理です。これを勘違いすると喜劇または悲劇を演じることになります。
でもここでは人月を投入コストとして使います。だって、昔から使っていて、簡単だから(こらっ)。
ソフトウェアの成果量とは
さらに問題なのはソフトウェアの成果量です。まず成果量を規模と置き換えて考えていきましょう。
そこでソフトウェア規模をどのように定義し計測するかが問題です。例えば、規模として一番計測が簡単なものには、ソースコード行数(SLOC、Source Lines Of Code)があります。これは計測があまりにも簡単なので、世の中に普及しまくっています。
次に規模としてあるのが、ファンクションポイント(FP)です。このFPの信奉者によれば、SLOCを思いっきりディスって、自らの優位性を保とうとしています。外から見れば、同じ穴のムジナに見えていることも知らずにがんばっています。
これらはソフトウェアの成果量を規模に置き換えているもので、本当の意味の成果量ではないでしょう。ソフトウェアの成果とはそのソフトウェアから得られる価値です。価値は定量的に計測しにくいので、例えば、そのソフトウェアでいくらお金が儲かるかです。これが一番の成果量です。
でもお金儲けは変数が多くあるので、ソフトウェアによって儲かったかどうかの判断は難しいです。この判断は恣意的にできます、嘘のつき放題です。そこで最初に戻って、SLOCになります。なんたることでしょう。
でも安心してください。IPAのソフトウェア開発データ白書もソフトウェア開発分析データ集もSLOCと人月で生産性を公開しています。
生産性の評価とは
仕方がないので、ソフトウェア開発の生産性をSLOCと人月で出したものとしましょう。残念ですが。この生産性をどのように評価すればいいのでしょうか。どれくらいであれば、ほめてもらえて、どれくらいであれば、怒られるのでしょうか。
評価に明確な基準がないときは、最強の学問である統計の出番です。例えば、予測値の信頼区間を調べます。信頼幅50%内にあれば普通です。信頼幅95%を外れていれば、きっと、ほめられるか、怒られるかになります。
生産性の評価がどうなるかで、どきどきな人はIPAのソフトウェア開発分析データ集2022を見てください。そこに信頼幅50%と95%の生産性散布図があります。これで調べて、覚悟をしてください。
ということで今日の結論。「生産性は統計的に評価」 以上です。
マンガFAQの引用元:ソフトウェア開発分析データ集2022 | 社会・産業のデジタル変革 | IPA 独立行政法人 情報処理推進機構
よろしければサポートをお願いします!