【見積】プログラミング言語別の1時間あたりの生産性

プログラミング全般 プログラミング全般

概要

プログラミング言語別の1時間あたりの参考となる生産性をまとめてみました。

見積の際に、製造工程の1時間あたりの目安がわかると見積しやすいと思うのですが、なかなかまとまっているものが見つからないので、調べてみました。

結果、IPAの「ソフトウェア開発データ白書 2018-2019」に開発5工程 ※1を含めた生産性(SLOC)の記載はあるので、製作フェーズの工数割合で除することである程度求められると考えました。

※1 : 基本設計、詳細設計、製作、結合テスト、総合テスト

プログラミング言語別 1時間あたりの生産性

まとめた結果を以下に記載します。製作フェーズの1時間あたりの生産性になります。

※ コメント行を除いたプログラミング行数(SLOC)

計算方法は後述します。経験的には、平均値よりも中央値が参考になるかなと思います。

言語 中央 平均
COBOL 19.60 23.05
C言語 20.64 45.82
VB 29.08 42.73
C# 24.42 34.62
Visual Basic.NET 27.95 40.16
Java 20.00 31.04

ここから、個人的に似ている言語は、同じ指標に類似すると思うので、類似言語を追加した表を記載します。

言語 中央 平均
COBOL 19.60 23.05
C言語、C++, JavaScript, Python 20.64 45.82
VB 29.08 42.73
C# 24.42 34.62
Visual Basic.NET 27.95 40.16
Java, PHP, Ruby 20.00 31.04

C言語とPython, JavaScriptはあまり似ているとは思いませんが、以下の内容から生産性が似ていたので同じ分類にいれています。

https://www.connellybarnes.com/documents/language_productivity.pdf

計算方法

IPAの「ソフトウェア開発データ白書 2018-2019」の図表 7-1-3 工程別の実績月数の比率の基本統計量(新規開発)から、開発5工程の製作フェーズの割合を参考にしています。(製作フェーズの割合:0.249)

図表 8-4-41 ● 主開発言語別の SLOC 生産性の基本統計量(新規開発)より、各プログラミング言語の中央値、中央値を参考にしています。これらの値を、製作フェーズの割合にしたいために、製作フェーズの値で除しています。

備考

一番いいのは、類似案件や自身の会社でまとめた生産性指標を用いることがいいとは思いますが、なかなか指標をとってなかったりすることもあると思います。

プログラミングの難易度や規模、プロジェクトの特性によっても変わりますので、そのあたりも考慮して見積すべきだと思います。

コメント