オルタナティブ・ブログ > 森崎修司の「どうやってはかるの?」 >

計測できそうでできない多くのこと。エンピリカル(実証的)アプローチで。

UML図が含まれるオープンソースリポジトリがバグレポートが少ないか調査した研究

»

UMLモデル図を含むオープンソースリポジトリ(プロジェクト)はそうでないリポジトリよりもバグレポートの数が少ないという内容を報告している論文がありますので紹介します。タイトルは「Does UML Modeling Associate with Lower Defect Proneness?: A Preliminary Empirical Investigation」

出版社のサイト(定期購読していないと購入の必要があります)か、著者らの研究グループのサイト(無料)から読めます。

調査対象
調査対象となったリポジトリは143件です。UMLモデル図を含むリポジトリがJava 31件、C# 6件、C++ 13件、UMLモデル図を含まないリポジトリはJava 63件、C# 10件、C++ 20件となっています。

リポジトリは既存の公開データセットから選ばれ、特定の活動基準(最低6ヶ月間の活動、2人以上の貢献者、最低30件のIssue、英語の使用、C++、C#、またはJavaでの記述、最低10スター、最初のコミットと最初のIssueの間の期間が1年以内、2009年以降に開始)を満たすものです。UML図を含むリポジトリに対して含まないリポジトリのほうが数が多いので、含まないほうはランダムにサンプリングされUMLモデルを使用しているプロジェクトと同じ選定基準を満たすようにしてあります。

調査方法と結果
重回帰分析で下の変数とバグレポートの数(バグに関するissue数)の対数をとった値の関係を分析しています。言い換えると、バグレポートの数(対数)に以下の各変数にどのような関連があるかを確かめています。重回帰分析をはじめとする統計手法では各変数が影響を与えているかという因果関係は明らかにはできませんが、因果関係があるかもしれない関連は明らかにできます。

下の変数のアルファベットの名称は元論文での変数の名称です。表や本文に使われているので、元論文を読む際には参考になります。

  • UMLモデルの有無 has UML

  • プロジェクトの年齢(対数) log(age + 1) : 最初のコミットからの日数の対数

  • コミット数(対数) log(num commits)

  • 貢献者数(対数) log(num contributors)

  • スター数(対数) log(stars + 1): GitHubプロジェクトについているスター数

  • 主要プログラミング言語 languageC#, languageC++, Java

  • CI (Continuous Integration) の使用 has CI

  • ライセンスの有無 has licenseプロジェクトにライセンス宣言があるかどうか

  • テストスイート比率 test suite ratio: テストコード行数に対するソースコード行数の割合

  • コードコメント比率 comment ratio: 全コード行数に対するコメント行数の割合

これらの中で、コミット数(対数)、スター数(対数)がバグ報告のissue数(対数)と統計的に有意に正の関連がありました。UML図の有無、ライセンスの有無、C++言語はバグ報告のissue数(対数)と負の関連がありました。

以下の表は結果の詳細です。「係数」がバグに関するissue数(対数)と表の「変数」の関連を表しています。「***」と「*」は統計的に有意に影響を与えていることを表しています。「***」はp<0.001、「*」はp<0.05

画像

これらは大規模なプロジェクトやユーザーが多いプロジェクトはバグ報告が多くなる傾向があり、ライセンスを宣言しているプロジェクトはバグ報告が少なくなる傾向があることを示しています。

Comment(0)