## Memo
## Memo with LLM
### 論文情報
- 論文のタイトル: Automatically Assessing Code Understandability: How Far Are We?
- 著者と所属: Simone Scalabrino (University of Molise), Gabriele Bavota (USI), Christopher Vendome (College of William & Mary), Mario Linares-Vasquez (Universidad de los Andes), Denys Poshyvanyk (College of William & Mary), Rocco Oliveto (University of Molise)
- カンファレンス/ジャーナル名: IEEE Transactions on Software Engineering (TSE)
- 発表年: 2021年 (ジャーナル版), 2017年 (ASEカンファレンス版)
### 論文概要
本論文は、ソフトウェアの保守性に直結する「コードの理解容易性(Understandability)」を自動的に測定できるかを探求した研究である。121種類の指標(コード、ドキュメント、開発者関連)を、63人の開発者による444件のコード評価データと照らし合わせた結果、単一の指標では理解容易性を予測できないという「否定的な結果」を明らかにした。
### 詳細解説
#### 問題設定
- **背景**: ソフトウェアの理解は開発時間の大部分を占めるが、その容易さを客観的に測る手段が不足している。
- **入力**: Javaコードスニペット(様々な品質レベルのもの)。
- **出力**: 理解容易性(Understandability)の予測値。
- **前提条件**: 「可読性(Readability)」や「複雑性(Complexity)」の既存指標が、実際の「理解容易性(実際の理解度や理解にかかった時間)」を反映しているかを確認する。
#### 提案手法
- **指標の選定**: 以下の3つのカテゴリから121の指標を収集。
1. **Code-related**: 従来の複雑度(Cyclomatic Complexity)、結合度、Halstead指標、および識別子の命名の質など。
2. **Documentation-related**: コメントの密度、コメントとコードの整合性など。
3. **Developer-related**: 開発者の経験年数、コードへの習熟度など。
- **モデル構築**: 指標を組み合わせて理解容易性を予測する機械学習モデル(Random Forest、Linear Regression等)を構築。
#### 新規性
- **包括的評価**: 121という膨大な数の指標を、実際の人間による大規模な評価データ(実際のテスト問題への正答率や所要時間)を用いて検証した点が最大の新規性。
- **神話の打破**: 「可読性が高ければ理解しやすい」といった一般的な前提が、必ずしも定量的指標には当てはまらないことを実験的に示した。
#### 実験設定
- **データセット**: 開発者63名、評価対象のJavaスニペット、計444件の評価データ。
- **ベースライン**: 既存の主要な可読性指標(Buse and Weimerなど)や複雑度指標。
- **評価指標**:
- Perceived Understandability (主観的な理解しやすさ)
- Actual Understanding (コードに関するクイズの正答率)
- Time (理解にかかった時間)
#### 実験結果
- **単一指標の限界**: 121の指標のうち、どれ一つとして実際の理解度(クイズの正答率)と強い相関を持つものはなかった。
- **可読性 vs 理解容易性**: 既存の可読性指標は「主観的な理解しやすさ」とは相関するが、「実際の理解度」や「所要時間」とはほとんど相関しなかった。
- **複合モデルの効果**: 指標を組み合わせることで、単一指標よりは予測精度が向上したが、依然として実用レベル(開発者に警告を出すなど)には達していない。
#### 強み (Strengths)
- 大規模な人間を対象とした実験に基づき、直感に反する「否定的な結果」を提示したことで、今後の研究の方向性(より高度な認知モデルの必要性など)を明確にした。
- 使用したデータセットやスクリプトが公開されており、追試や改善が容易。
#### 弱点・課題 (Weaknesses / Limitations)
- 実験対象が小規模なJavaコードスニペットに限定されており、大規模なシステム全体の理解容易性には適用できない可能性がある。
- 指標が静的解析に基づいているため、動的な振る舞いやコンテキスト(ドメイン知識)の影響を十分に反映できていない。
## Abstract
ソフトウェアの理解は、多くの保守・進化タスクにおいて不可欠な要件です。コードを徹底的に理解していなければ、開発者はバグを修正したり新しい機能を適時に追加したりすることはできません。コードの理解容易性を測定することは、開発者がより良いコードを書くための指針となり、コードを修正するために必要な工数の見積もりにも役立つ可能性があります。残念ながら、コードスニペットの理解容易性を評価するために設計された指標は存在しません。本研究では、121個の既存および新規のコード関連、ドキュメント関連、開発者関連の指標について広範な評価を行いました。我々は、(i) 各指標と理解容易性の相関関係を調べ、(ii) 指標を組み合わせたモデルを構築して理解容易性を評価することを試みました。このために、63人の開発者から得られた444件の人間による評価を使用し、「実験した121個の指標のどれもコードの理解容易性を捉えることができない」という大胆な否定的な結果を得ました。これは、コードの可読性や複雑さなど、一見関連があると思われる品質属性を評価するとされる指標であっても同様でした。モデルにおいて指標を組み合わせることで一定の改善は見られましたが、その有効性は実用的なアプリケーションに適したものにするにはまだ程遠い状況です。