Program Comprehension and Code Complexity Metrics: An fMRI Study

August 21, 2021

コードの複雑さのメトリクスがコードを理解する難しさの指標になるかは疑問視されてきた。 19人の被験者に16個のソースコードを読ませ、関数の返り値を回答してもらい、作業中の脳の状態をfMRIで観察することで、メトリクスと回答時間、正答率、脳の活性状態の相関関係を調べた。 メトリクスと主観的な評価を比較するために、回答後に被験者にコードの複雑さを評価してもらった。 調べたメトリクスは、41種類あり、コードの行数(LOC), 語彙の多さ(Halstead), とりえる実行パスの数(McCabe), 依存するデータの数(DepDegree)の4種類に大別できる。 相関関係をケンドールの順位相関係数\(\tau\)で評価し、相関なし(\(\tau <0.1\)), 弱い(\(0.1 < \tau < 0.3\)), 中(\(0.3 < \tau <0.5\)), 強い(\(0.5<\tau\))とみなす。

回答と脳の活性状態と相関関係にあったメトリクスはDepDegreeだったが、被験者の主観的な評価のほうが強い相関がみられた。 LOC, Halstead, DepDeegreeは回答時間や正答率と弱い〜中程度の相関があった。 この3つのメトリクスは脳の活性度合いと弱から中の相関があり、活性度合いと正答率には強い相関、回答時間には弱から中の相関があった。 一方、主観的な評価は、メトリクスと弱い相関があり、問題の正答率や脳の活性状態と強い相関関係があった。

論文をこちらからダウンロードできます。