研究課題/領域番号 |
23K11046
|
研究種目 |
基盤研究(C)
|
配分区分 | 基金 |
応募区分 | 一般 |
審査区分 |
小区分60050:ソフトウェア関連
|
研究機関 | 京都工芸繊維大学 |
研究代表者 |
崔 恩瀞 京都工芸繊維大学, 情報工学・人間科学系, 准教授 (90755943)
|
研究期間 (年度) |
2023-04-01 – 2026-03-31
|
研究課題ステータス |
交付 (2023年度)
|
配分額 *注記 |
4,420千円 (直接経費: 3,400千円、間接経費: 1,020千円)
2025年度: 910千円 (直接経費: 700千円、間接経費: 210千円)
2024年度: 2,210千円 (直接経費: 1,700千円、間接経費: 510千円)
2023年度: 1,300千円 (直接経費: 1,000千円、間接経費: 300千円)
|
キーワード | 重複コード / モダンコードレビュー / コードクローン管理 / ソフトウェア品質 |
研究開始時の研究の概要 |
コードスメルは,ソースコードの設計上の問題を示す指標であり,将来的に保守コストを増大する要因になりうるため,適切な対応が必要である.コードスメルを管理するための方法としてMCR(Modern Code Review)がある.しかし,MCRにおいて開発者はコードスメルの変更に長い時間を通夜している.そこで,本研究は,MCRにおいて最も頻出するコードスメルであるコードクローンに着目して,MCRにおけるコードクローンへの変更を支援するシステムを開発する. 本研究が成功すれば,開発者はMCRにおいてコードクローンの変更を効率的に行うことができ,ソフトウェア品質の向上が期待できる.
|
研究実績の概要 |
コードスメルはソースコードの保守性を低下させる原因の1つであるため,ソースコードからコードスメルを識別し適切に対応する必要がある.モダンコードレビュー(MCR)はオープンソースソフトウェア(OSS)のコードスメルの削減に重要な役割を果たしている.しかし,OSSでレビューアの推薦に従ってコードスメルに対応するには開発者は長い時間を費やしている.特に,重複コード(ソースコード中の同一または類似した部分)は最も多く認識されるコードスメルであるため,その対応を支援することはOSSのコードスメルの削減のために重要である. 本研究は,過去に実際に行われたMCRのデータを調査することで,MCRにおいて重複コードの適切な対応を支援するシステムを開発できるかという本質的な問いを立て,この問いに答えることを目的としている.そのため,OSSで実際行われた過去のMCRデータを分析し,MCRでどのような特徴を持つ重複コードが認識され,異なる特徴の重複コードに対しどのように対応されたかを調査する.また,その調査結果に基づいてMCRにおける重複コードの対応を支援するシステムを開発する. 本研究の学術的独自性は,過去のMCRにおける重複コードの対応を詳細に調査し,その知見からMCRにおける重複コード対応支援システムを開発することである.既存研究ではOSSのMCRにおける一般的なコードスメルの傾向は調査されていたが,重複コードに特化した研究はない.また,既存の重複コードに着目してOSSの保守を支援するツールはMCRプロセスに使用することは適さない可能性が高い.そのため,本研究によってOSSの品質向上が期待できる.
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
2: おおむね順調に進展している
理由
本研究の課題の1つは,過去に行われたMCRにおける重複コードの対応を調査することである.この課題はMCRにおいて重複コードの変更支援に関する知見を得ることを目的としている. この目的を達成するため,提案者はOSSで実施されたMCRのパッチ(変更されたソースコード)とそのレビューコメントが含むデータセットであるCROPを対象に調査を行う予定だった.しかし,MCRに含まれているデータは最新のパッチとレビューコメントが含まれてないという課題があった.この課題を解決するために,提案者はGerritのREST APIを用いて最新のパッチとレビューコメントデータを取得した.さらに,近頃ではオープンソースオープンソースを開発のためにGithubが広く使用されているため,Githubの最新ののレビューデータであるPull Request(ソースコードに対する変更を提案し、レビューを受け、最終的にマージするためのリクエスト)のデータも収集した. 次に,重複コードが含むコードレビューかを識別するために,自然言語処理を用いてレビューコメントの中に’redundancy’や ’duplicate’など重複コードに関するするキーワードが含まれているパッチを識別した.現在,パッチに重複コードが含まれているかをより正確に識別するために,既存の重複コード検出ツールを自動的にパッチに提供する部分を実装している.
|
今後の研究の推進方策 |
今後の研究の推進方策として、まず,パッチに含まれている重複コードの特徴を詳細に分析する予定である.具体的には,パッチに含まれている重複コードの複雑度、類似度,重複コードの長さなどのメトリクスを用いて重複コードの特徴を分析する.また、異なる特徴を持つ重複コードに対してどのような対応が行われたかも調査する予定である.
次に,これらの調査結果に基づいて、MCRにおける重複コードの対応支援システムを開発する予定である.そのシステムは,Gerritにパッチが投稿されると,自動的にそのパッチに含まれている重複コードを検出し,その特徴を分析する.そして,過去にその特徴を持つ重複コードに対してどのような対応が行われたかに基づいて適切な対応を提案する仕組みである.例えば,長くて複雑度の高い重複コードに対しては,メソッドの抽出といったリファクタリングが最も多く行われていた場合,そのような対応を推薦することで,MCRにおける重複コードに対する適切な対応が期待できる.
|