品質保証者の憂鬱「IPA書籍・刊行物探訪 ソフトウェア開発データ白書 その2」
Back to Top
前回に引き続き、IPAが発行する「ソフトウェア開発データ白書」の中身を探っていきましょう。
年版ごとの特徴
#IPAのソフトウェア開発データ白書は2005年版から2018-2019年版まで発行されています。
これだけ長期に渡ってデータを収集しているのですから、収集している途中で分析の方針とか、収集データの変更などが発生していると思います。
データ白書の冒頭に、上記に対する答えが掲載されています。
(出典:データ白書2018-2019「データ白書2018-2019について」より)
年を追うごとに何度も細かい調整がされていることがわかります。
2016-2017年版から、本編の他に分冊として「金融保険業編」「情報通信業編」「製造業編」が出来たようです。
(実際にIPAの資料アーカイブを見ても、そのようになってます)
また、データ白書2018-2019では「統計値を基本的に近年6年間のデータに基づき算出するようにした」と書かれています。
これ以前の版ではどうだったのでしょうか?
過去のデータ白書(2016-2017年)も参照してみます。
2016-2017年版には以下のような記述があります。
(出典:データ白書2016-2017「3.4.2 本書の収集データの理解」より)
2016-2017年版では、同様の記述がありますが、一部追記されています。
(出典:データ白書2018-2019「3.4.2 本書の収集データの理解」より)
もともとは全累計データを使用して分析していたけど、一部については直近6年間のデータについて分析をするようにしたようです。
ただし、データ白書には以下のような記述もあります。
(出典:データ白書2018-2019「2.1.1 収集の基本方針」より)
優先して利用するデータ期間があることがわかりました。
また、2010-2011年版より以前の版では優先するデータは「直近3年間」だったようです。
次は、過去版に対して 2018-2019年版では何が「変更」「新規・追加」「削除」されたのかを見てみましょう。
2018-2019年版での変更点
#2018-2019年版での変更点は以下のとおり。
(出典:データ白書2018-2019「データ白書2018-2019での主な変更内容とその理由」より)
データ収集期間
#変更理由として「 6年間というのは、13年間のデータに対して、単年度でのデータの変動を抑止できる期間」って言っています。
なるほど、13年間の全データを使うよりも、直近6年間程度のデータの方が最新の統計値を提供できそうな気がします。
さすがに13年もの長期に渡れば、技術トレンドや開発手法が今とは変化しているでしょうし。
過去の全累積データは「変動要因分析」(長期的傾向を把握)に使い、最新6年間は「統計値の信頼性」と「現状把握」に適した期間と理解しました。
コロナ禍ではかなり開発スタイルが変わった企業もあったと思います。
残念ながらデータ白書は2018-2019年版が最後なので、コロナ禍に何か変化があったかは後続の「分析データ集」に期待しましょう。
開発言語
#2018-2019年版より前は Python,JavaScript が単独の選択項目になっていなかった事実にちょっと驚きます。
まあ、時代なんでしょう。
いまの時代、AIを扱う上でPythonは避けて通れないでしょうから。
ちなみに、「4章 収集データのプロファイル」に収集プロジェクト中の開発言語の件数が掲載されています。
(出典:データ白書2018-2019「図表4-4-11 開発言語」より)
項目が追加になったとは言っても、Python、JavaScript の件数はそれほど多くないですね。
この図表を見る限り、まだまだJavaが圧倒的に多いです。
また収集プロジェクトデータ全体の3分の1を金融・保険業が占めるだけあって、COBOLの割合も大きいです。
C#/VB.NETも善戦している感じがします。
またC/C++も一定数を確保していますね。
プラットフォーム種別
#どうやら、プラットフォームの分類の仕方を整理したようです。
Windowsは1つの会社が発売しているから追いやすいでしょうけど、Linuxなどはどんどん新種も出てくるし、変化も目まぐるしいから、整理は必要だと感じました。
2018-2019年版と、2016-2017年版の開発対象のプラットフォームを比べてみましょう。
2018-2019年版では以下のとおり。
(出典:データ白書2018-2019「図表4-4-9 開発対象プラットフォーム」より)
2016-2017年版では以下のとおり。
(出典:データ白書2016-2017「図表4-4-9 開発対象プラットフォーム」より)
う~ん。。。ごめん。やっぱりWindows系もたくさんあるから整理した方がいいですね。
Unix/LinuxはPC系/サーバ系で分けていませんが、おそらく殆どはサーバ系なんでしょうね。
この図表を見ていて思いましたが、Turbo Liunxとか最近聞かないですね。
いま勢いのあるLinuxディストリビューションは やっぱり Ubuntu とかでしょうか。
私がLinuxのカーネルをビルドして遊んでいたころは Slackwareとか、Gentooとか、もっと多くのLinuxディストリビューションがあったと思うのですが。そのあたりは全部「その他Linux」ってまとめられているのかもしれません。
2018-2019年版での新規・追加点
#2018-2019年版での新規・追加点は以下のとおり。
(出典:データ白書2018-2019「データ白書2018-2019での主な変更内容とその理由」より)
経年推移のデータ
#これまで「経年推移」のグラフは掲載されてい無かったようです。
(2016-2017年版には見当たりませんでした)
内容的には「集計期間変更の説明補完のため。但し、分析は控え、傾向のみに言及」と書かれていますが、意外としっかり記述されています。
例えば SLOC値の経年推移は以下のように記述されています。
(出典:データ白書2018-2019「図表10-2-4 SLOC 規模の経年推移(全開発種別)」より)
単年度での基本統計量(P25,中央値,P75)と、6年間単位の移動平均を取った基本統計量(P25,中央値,P75)が掲載されています。
ちなみに、ここで「SLOC規模は減少傾向にある」と書かれています。
えー、そんなんだ。ちょっと意外。
「1%有意」って書かれています。これは、各要素の値の差の傾向を Welch のT検定の結果(有意水準)したもののようです。
開発種別
#開発種別に変更が入っています。
2018-2019年版より前の分析データを使っていた人は、注意した方がいいでしょう。
赤字の部分が変更点です。
(出典:データ白書2018-2019「A.2 データ項目定義 Version 3.5」より)
確かに最近の開発では既存パッケージやOSSの利用が増えている感じがします。
規模と工期の分析
#これまで「規模と工期」の関係を分析したものが無かったようです。
確かに、「規模と工数」と「工数と工期」の分析があるのだったら、「規模と工期」の関係を知りたくなりますね。
例えば、SLOCと工期の関係では、次のようなグラフが掲載されています。
(出典:データ白書2018-2019「図表6-6-2 SLOC 規模と工期(全開発種別)対数表示」より)
業種編掲載内容
#業種編に以下の内容が追加になったようです。
- 工程別統計追加
- 生産性、信頼性変動要因分析追加
今回は業種別毎の冊子の内容は確認しませんが、今後は必要に応じて確認していきます。
理由の欄に「生産性、信頼性変動要因分析で、検定の有意水準は緩和する」という注意書きがあります。
おそらくですが、業種別にデータを分割したときに、データ量が少なくなり有意差が出にくくなったためかと推測します。
学会発表レベルの厳密さは求めないでしょうから、業種毎の傾向の把握・実務レベルでの有効性を示せればよいでしょう。
開発3工程での統計値
#開発3工程(詳細設計、製作、結合試験)において、外注対象の場合が多く、生産性に関する統計値の掲載要望が大きかったようです。
ただ、外部委託した部分の生産性って比較するのが難しいと思うんですよね。
例えば、新規開発のSLOC生産性の基本統計量は以下のように記述されています。
(出典:データ白書2018-2019「図表7-7-2 工程別 SLOC 生産性の基本統計量(新規開発)」より)
図表の一番下の行が「開発3工程(詳細設計、製作、結合試験)」の生産性になります。
ここだけ抜き出すと「あれ、めっちゃ値が低い」ってなってしまいそうです。
ソフトウェア開発の生産性については、また別の機会に「がっつり」話をしたいと思います。
2018-2019年版での削除点
#2018-2019年版での削除点は以下のとおり。
(出典:データ白書2018-2019「データ白書2018-2019での主な変更内容とその理由」より)
主開発言語グループ
#2016-2017年版までは「主要言語グループ」による層別がされていたのを、2018-2019年版では廃止したようです。
統計的に有意な差が出なくなってきたと言うことですね。
そもそも”主要”の意味も人それぞれでしょうから、問題ないかと思っています。
IFPUGグループ
#私は知らなかったのですが、FP計測法にはいくつかの種類があるみたいですね。
FP計測法の種類を調べたところ、以下のような種類があるようです。
- IFPUG法
- COSMIC法
- フルファンクションポイント法
- フィーチャポイント法
- Mark Ⅱ法
- NESMA概算法
- SPR法
(出典:FP計測手法におけるFP規模と工数の相関の差より)
過去の分析では IFPUGグループで層別する意味があったんでしょうね。
私は全然FP計測法に詳しくないです。
私の知り合いで 規模見積もりをFP計測法でしていた人は、私の40年近いソフトウェア・エンジニア人生で、たった一人しかいません。
FP 詳細値
#私的には問題ないですかね(笑)
言語別統計値
#言語別の統計値を掲載するのはやめにしたようです。
確かに「言語別の生産性、信頼性などの差は、言語そのものの差ではなく、QCD 要求レベルなど他の要因も含んだ開発の結果を示すものであり、誤解を招く恐れがあるため」というのはわかりますが、それは読み手が意識すればいい話かなと。
でも、誤解を受けることの方が多かったのでしょうか。
ちなみに主開発言語別のSLOC生産性などは、まだちゃんと掲載されています。
主開発言語別のSLOC 生産性(新規開発)箱ひげ図
(出典:データ白書2018-2019「図表8-4-40 主開発言語別のSLOC 生産性(新規開発)箱ひげ図」より)
主開発言語別のSLOC 生産性の基本統計量(新規開発)
(出典:データ白書2018-2019「図表8-4-41 主開発言語別のSLOC 生産性の基本統計量(新規開発)」より)
まあ、IPAからグラフの元データ(生データ)がExcel形式で公開されており、そこには言語情報が載っているので、必要に応じて利用できるからよしとしましょう。
Web 技術
#確かに最新Web技術を追うのが目的ではないので、致し方ないところだと思います。
顧客満足度による分析
#顧客満足度の分析も、他の書籍に譲った方がいい内容かな、と思いました。
ここまでのまとめ
#ソフトウェア開発データ白書は長い歴史があります。
収集データや分析方法・層別方法に、結構多くの変更点があったことに、意外と気が付いていませんでした。
これからソフトウェア開発データ白書を利用される方の助けになれば幸いです。