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

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

ソースコードが臭う?不吉な臭いがバグを増やすか確かめた研究

»

On the diffuseness and the impact on maintainability of code smells: a large scale empirical investigationというコードの臭いとバグや保守性の関係を大規模に調べた論文を紹介します。タイトルと出典の以下のとおり。

Palomba, F., Bavota, G., Di Penta, M., Fasano, F., Oliveto, R., De Lucia, A. (2018). On the diffuseness and the impact on maintainability of code smells: a large scale empirical investigation. In Proceedings of the 40th International Conference on Software Engineering (pp. 482-482).

こちらで原典が読めるので、詳細はこちらを確認してください。

Code smellsはコードの臭い/コードの不吉な臭い/コードスメルと呼ばれており、「ソースコードにある潜在的な問題の兆候」を指します。コードの臭いはそのままでバグになることはありませんが、設計上の問題や将来の保守性低下を招く恐れがある部分を指します。再設計やリファクタリングが必要となる部分の特徴でもあります。

コードを長期間保守したことがあれば、コードの臭いを感じたり書いたことがある方が多いでしょう。今回紹介する論文では、30のオープンソースソフトウェアの395のリリースを対象に13種類のコードの臭い17350件を手動で調査しています 。対象ソフトウェアには、Hadoop, Cassandra, JBossを含みます。30件の対象ソフトウェアはTable 2にリストアップされています。13種類のコードの臭いには、ゴッドクラス、スパゲッティコードを含みます。13種類のコードの臭いはTable 1にリストアップされています。

調査は3つありますが、このブログエントリではそのうちの一つである「コードの臭いの影響を受けるクラスは、そうでないクラスと比較して、どの程度変更のしやすさや欠陥の発生しやすさが異なるか」を紹介します。

  • 変更されやすさ(Change-proneness)
    コードの臭いの影響を受けるクラスは、そうでないクラスと比較して約3倍も変更されやすいことが明らかになりました(コードの臭いのあるクラスの中央値32、コードの臭いのないクラスの中央値12)。この差は統計的に有意でした。さらに、クラスに影響を与えるコードの臭いの数が増えるほど、変更のしやすさは高まります。コードの臭いがゼロのクラスと比較して、1つあれば+83%、2つで+167%、3つで+350%の増加がありました。

  • 欠陥の発生しやすさ(Fault-proneness)
    コードの臭いの影響を受けるクラスは、そうでないクラスと比較してバグが多かったことが報告されています(コードの臭いのあるクラスの中央値9件、臭いのないクラスの中央値3件)。この差は統計的に有意でした 。コードの臭いの数が増えるほど欠陥の発生しやすさも増加する傾向にあり、3つの臭いがあるクラスでは300%の増加がありました。

その他の調査の1つである、システム規模(クラス数、メソッド数など)が大きくなるほど、コードの臭いが増加するかを調べた結果、正の相関関係がありました。

Comment(0)