表示
超・人工知能研究所 Super AI Research Lab トップへ超・人工知能研究所AI Research Lab / ぱそ太郎工事中

since
平成38年9月29日

← 検索結果に戻る

Javaメソッドの分割を、抽出回数・複雑度・行数から選ぶ

Multi-objective Integer Linear Programming approach for Automatic Software Cognitive Complexity Reduction

保存した記事を見るこのブラウザに保存します。無料会員で端末間の同期・フォルダ整理
原論文の図

Multi-objective Integer Linear Programming approach for Automatic Software Cognitive Complexity Reductionの原論文から掲載した図です。細部はクリックして拡大できます。

原論文の図の説明を読む

(c) 3D PF visualization.

出典:Multi-objective Integer Linear Programming approach for Automatic Software Cognitive Complexity Reduction / arXiv ↗

概要

  • Javaメソッドの分割案を、抽出回数、認知的複雑度の差、コード行数の差という三つの目的から求める。
  • 著者らの従来モデルは抽出回数を最小化する方式で、予備的な検討では分割後の複雑度と行数に偏りが生じたと報告されている。
  • 著者らは公開・民間のJavaコードで検証したと記すが、確認できた本文の範囲では結果表や方式間の数値比較を確認できない。
補足:編集した模式図で仕組みを確認する

VISUAL EXPLAINER

図でつかむ、Multi-objective Integer Linear Programming approach for Automatic Software Cognitive Complexity Reductionの仕組み

左から右へ読む
  1. 01Javaメソッド
  2. 02抽出候補の選別
  3. 03三つの目的を最適化
  4. 04分割案の集合

原論文の説明をもとにした模式図です。処理の細部は省略しています。

研究の背景

長いJavaメソッドを分割する際には、どの部分を新しいメソッドに移すかを決める必要がある。認知的複雑度は、分岐やループとその入れ子などを基に、コードを理解する難しさを表す指標である。

複雑度を下げる分割位置は複数あり得る。抽出回数だけを減らすと、分割後のメソッド間で複雑度や行数に偏りが残るため、保守担当者が複数の観点から案を選べることが重要になる。

手法

入力は、認知的複雑度を下げたいJavaメソッドと上限値である。コードの連続した部分を新しいメソッドへ移す「メソッド抽出」の候補から、制御構造を途中で切るなど適用できないものを除く。例えば、条件分岐とループが入れ子になったメソッドでは、移せるコードのまとまりを候補にする。

整数線形計画法は、各候補を採用するかを整数の変数で表し、制約を満たす組み合わせを探す手法である。本モデルは、互いに重なるため同時には選べない候補を制約で扱い、抽出回数、分割後の認知的複雑度の最大値と最小値の差、行数の最大値と最小値の差を小さくする。出力は、これらの目的間で異なる兼ね合いを持つ分割案の集合である。

新規性

著者らは、認知的複雑度を所定の値以下にするため抽出回数を最小化していた従来の整数線形計画モデルに、分割後の複雑度の差とコード行数の差を小さくする目的を加えた。

複数の目的を同時に扱い、目的間の兼ね合いが異なる分割案の集合を求める。著者らは、これを解くアルゴリズム群を組み込んだツールも提案している。

従来手法との違い

比較対象は著者らの従来モデルである。従来モデルは、元のメソッドと抽出後のメソッドの認知的複雑度を上限以下に保ちながら、抽出回数を最小化する。

著者らは、抽出回数だけを重視した予備的な検討で、分割後の複雑度と行数に大きな偏りが生じたと述べる。新モデルは両方の偏りも目的に加えるが、確認できた本文の範囲では、両モデルの結果を数値で比較した表はない。

実験結果

著者らは、公開ソースと民間企業のJavaプロジェクトに含まれるメソッドで、モデルとツールを検証したと記す。ただし、確認できた本文の範囲では、対象メソッド数、結果表、計算時間、方式間の数値比較は確認できない。

説明用の事例は、元の認知的複雑度が20のメソッドである。著者らは、28行に対する抽出候補数の上限を406、計算で確認した適用可能かつ複雑度を下げる抽出を23件とする。また、先行方式について専門開発者36人への調査を挙げ、特定の事例では複雑度と行数の均衡も望まれたと報告する。

応用の可能性

編集上の応用案 · 論文が実証した用途とは区別しています。

編集上の応用案:保守担当者が、改修予定のJavaメソッドについて分割位置を検討する。入力は対象のソースコードと認知的複雑度の上限、出力は抽出回数・複雑度・行数を見比べられる分割案とする。

担当者が案を選び、抽出後の命名と動作をレビューする。学習用データ、正解ラベル、センサー入力はモデルの必須入力として示されていない。社内コードでは、抽出候補の作成条件と複雑度の測定方法を合わせる必要がある。

応用先の候補からNauhに相談できます。

導入時の検証

導入時の検証案 · 対象データでの再評価が必要です。

導入時の検証案:少数の社内Javaメソッドを選び、元のソース、既存テスト、期待動作を確認できる事例をそろえる。同じ定義で認知的複雑度を測り、対象コードで抽出候補を作れるか確かめる。

比較基準は抽出回数を最小化する従来案とする。各案の抽出回数、分割後の複雑度の上限と差、行数の差を記録し、テストと開発者レビューで動作・命名・分割位置を確認する。学習データ、正解ラベル、センサーは必要な入力として示されておらず、適用時には候補生成と測定条件の調整を確認する。

限界と課題

確認できた本文の範囲では、著者が明示した失敗例の集計や適用範囲の限界は確認できない。また、複雑度と行数が均衡しても、メソッド名や責務の分かりやすさが評価されたとはいえない。

編集上の検証事項は、抽出後も元の動作を保てるか、開発者が分割境界を理解しやすいか、対象が大きい場合に解を得るまでどの程度かかるかである。これらを論文の実証結果として扱わず、導入先のコードで別途確かめたい。

技術
応用先の候補
研究内容と応用案に基づく分類です。業界での導入実績を示すものではありません。

出典

元のタイトル・要旨を確認する(英語)

Multi-objective Integer Linear Programming approach for Automatic Software Cognitive Complexity Reduction

Clear and concise code is necessary to ensure maintainability, so it is crucial that the software is as simple as possible to understand, to avoid bugs and, above all, vulnerabilities. There are many ways to enhance software without changing its functionality, considering the extract method refactoring the primary process to reduce the effort required for code comprehension. The cognitive complexity measure employed in this work is the one defined by SonarSource, which is a company that develops well-known applications for static code analysis. This extraction problem can be modeled as a combinatorial optimization problem. The main difficulty arises from the existence of different criteria for evaluating the solutions obtained, requiring the formulation of the code extraction problem as a multi-objective optimization problem using alternative methods. We propose a multi-objective integer linear programming model to obtain a set of solutions that reduce the cognitive complexity of a given piece of code, such as balancing the number of lines of code and its cognitive complexity. In addition, several algorithms have been developed to validate the model. These algorithms have been integrated into a tool that enables the parameterised resolution of the problem of reducing software cognitive complexity.

論文本体の取得範囲に基づく解説。AIが作成した未校閲の記事です。性能の数値は著者の評価条件に依存します。応用例と検証計画は編集上の提案です。解説更新:2026-10-01