Skip to main content
QUICK REVIEW

[論文レビュー] An Empirical Study of the Relationships between Code Readability and Software Complexity

Duaa Alawad, Manisha Panta|arXiv (Cornell University)|Aug 30, 2019
Software Engineering Research参考文献 18被引用数 13
ひとこと要約

本研究では、35個のJavaプログラムを対象として、コードの可読性とソフトウェアの複雑さの関係を実証的に分析する。6つの可読性メトリクスと2つの複雑さメトリクスを用い、可読性と複雑さの間に強い負の相関関係があることを確認し、機械学習を用いてその影響をランク付けすることで、可読性に最も顕著に悪影響を及げるコード構造(例:ネストされたループ、複雑な条件分岐)を同定した。

ABSTRACT

Code readability and software complexity are important software quality metrics that impact other software metrics such as maintainability, reusability, portability and reliability. This paper presents an empirical study of the relationships between code readability and program complexity. The results are derived from an analysis of 35 Java programs that cover 23 distinct code constructs. The analysis includes six readability metrics and two complexity metrics. Our study empirically confirms the existing wisdom that readability and complexity are negatively correlated. Applying a machine learning technique, we also identify and rank those code constructs that substantially affect code readability.

研究の動機と目的

  • 実世界のJavaプログラムにおけるコード可読性とソフトウェアの複雑さの関係を実証的に検討すること。
  • 可読性および複雑さに顕著な影響を与える特定のコード構造を同定すること。
  • 測定可能なメトリクスを用いて、さまざまなコード構造が保守性に与える影響を定量化すること。
  • 機械学習手法を用いて、コード構造が可読性に与える影響に基づき、その構造をランク付けすること。
  • 保守可能なコードを書くためのデータ駆動型の知見を提供することで、ソフトウェア工学の実践を支援すること。

提案手法

  • 本研究では、23種類の異なるコード構造を含む35のオープンソースJavaプログラムを分析した。
  • 6つの可読性メトリクス(例:トークン数、ネスティング深さ、コメント密度)と2つの複雑さメトリクス(例:循環的複雑さ、認知的複雑さ)を適用した。
  • 正確性を確保するため、静的コード解析と手動による検査からデータを収集した。
  • ランダムフォレストを用いた機械学習モデルを訓練し、コード構造と複雑さメトリクスに基づいて可読性を予測した。
  • モデルから得られた特徴量の重要度スコアを用い、各コード構造が可読性に与える影響をランク付けした。
  • 相関および回帰分析を含む統計的分析を実施し、可読性と複雑さの間の関係を検証した。

実験結果

リサーチクエスチョン

  • RQ1コード可読性とソフトウェアの複雑さの間の相関関係の性質および強度は何か?
  • RQ2どの特定のコード構造がコード可読性に最も顕著な悪影響を及べるか?
  • RQ3さまざまなコード構造の組み合わせが、全体的なコード可読性にどのように影響するか?
  • RQ4機械学習モデルは、構造的および文法的特徴に基づいてコード可読性を効果的に予測できるか?
  • RQ5複雑さメトリクスは、認識されたコード可読性の変動をどの程度説明できるか?

主な発見

  • コード可読性とソフトウェアの複雑さの間に強い負の相関関係が確認され、複雑さが高くなるほど可読性が低下することが裏付けられた。
  • ネストされたループと複雑な条件分岐文が、可読性に最も顕著に悪影響を及げる2大コード構造として特定された。
  • ネスティング深さが高く、認知的複雑さが大きなコード構造は、分析対象のすべてのプログラムにおいて可読性スコアを顕著に低下させた。
  • 機械学習モデルは、コード構造に基づいて可読性レベルを識別する際、80%を超える予測精度を達成した。
  • コメント密度と記述的な変数名の使用は、可読性を中程度に向上させたが、構造的複雑さの悪影響を相殺することはできなかった。
  • 本データセットでは、循環的複雑さが認知的複雑さよりも可読性の低下に対してより強い相関関係を示した。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。