Supporting Reactive and Proactive Source Code Refactoring : A Context-Based Approach

(邦訳:コンテキスト情報に基づいたリアクティブおよびプロアクティブなソースコード・リファクタリング支援)
 
Sae-Lim Natthawute
(株)ヤフー
 
キーワード
ソースコード品質 リファクタリング コードの臭い

[背景]低品質ソースコードを改善(リファクタリング)する開発者を支援

[問題]リファクタリングすべき個所の特定が困難
[貢献]リファクタリングすべき個所の特定時間の軽減


 コードの臭いは,ソースコードの設計上の欠陥や問題の指標としてよく使用される.コードの臭いを含むコード個所にリファクタリング手法を適用することにより,その品質を向上させる.リファクタリングは,ソースコードの品質を向上させるために,外的振る舞いを変更せずにソースコードを再構築する手法であり,その適用タイミングと目的によって,リアクティブリファクタリングとプロアクティブリファクタリングに分類される.リアクティブリファクタリングは,コードが臭いを発した後に,その臭いを取り除くために適用されるリファクタリングである.一方,プロアクティブリファクタリングは,コードの臭いを防ぐために,コードが臭いを発する前に適用されるリファクタリングである.

 ソフトウェア開発プロジェクトでは,開発タスクを管理するためにイシュー管理システムが利用されている.この状況では,開発者がイシューで取り上げられた機能を実装するために変更するモジュールがコンテキストに相当する.多くの研究は,開発者が,コンテキストに関連するコードをリファクタリングする可能性が高いことを示している. ただし,リファクタリング適用個所を推薦するほとんどのツールは,このような情報を考慮していない.したがって,開発者はリファクタリングするモジュールを識別する時間のかかるプロセスを実行する必要がある.

 本研究では,開発者のコンテキストを考慮し,リアクティブおよびプロアクティブなリファクタリングを支援する手法を提案した. 本研究の成果は,大きく3つに分けられる.

(1)開発者によるコードの臭いのフィルタリング・優先順位付けの要因に関する調査
 既存のコードの臭い検出ツールの結果を改善するために,開発者がコードの臭いをフィルタリングしたり優先順位付けたりする方法について調査した.その結果,開発者はコンテキストに関連するコードの臭いをリファクタリングする可能性が高いことが分かった.この結果は,リファクタリングするモジュールを推奨する際に開発者のコンテキストを考慮する必要があるという意味で,本研究の基礎を築いている.

(2)リアクティブなリファクタリングを支援する手法
 本研究では,既存のコード臭い検出ツールの結果を改善するために,開発者のコンテキストを利用してコードの臭いを推薦する手法を提案した.変更影響分析手法を使用し,開発者が変更する可能性が高く,コンテキストと見なすモジュールを予測する.そのような情報に基づいて,コードの臭いを推薦する.評価結果から,本手法が,既存ツールより関連性の高い結果を提供できることが分かった.

(3)プロアクティブなリファクタリングを支援する手法
 プロアクティブなリファクタリングの対象を特定するために,コードの臭いには至っていないものの,臭いの発生に近づきつつある腐敗モジュールの概念を提案した.腐敗モジュールを積極的にリファクタリングすることで,コードの臭いの発生を防ぐことができる.本研究では,リファクタリング戦略を計画する開発者を支援するために腐敗モジュールを予測する手法を提案した.予測手法では,ソースコードの品質メトリクスを説明変数として使用し,モジュールが次のリリースで腐敗するかどうかを目的変数として定めた.また,予測モデルの性能を向上させるための開発者のコンテキストの使用についても調査した.

 

(2020年5月6日受付)
 
取得年月日:2019年9月
学位種別:博士(学術)
大学:東京工業大学



推薦文
:(ソフトウェア工学研究会)


本論文では,ソースコードに対してリファクタリングを適用すべき個所を特定する手法を提案している.リファクタリングを,保守性の低下を改善するリアクティブな活動と将来の保守性の低下に対処するプロアクティブな活動の両面から捉えるという点で,新たな研究の可能性を切り開いており,研究分野における貢献が大きい.


研究生活


自分がソフトウェアエンジニアとして働いたことがきっかけで,ソフトウェア工学に興味を持ちました.そのため,大学院に進学するときには,ソフトウェア工学を研究テーマにしました.学部まででは,しっかりと定義された課題を解決する方法を学びますが,大学院の研究では,まだ解決されていない課題に取り組みます.ときには,その課題自体ですら曖昧で,自分が何をしているのか分からなくなってしまうこともあります.自分がやっていることが正しいかどうかは本当に誰にも分かりませんので,ある意味大変です.しかし,こういった正解・不正解が存在しない世界だからこそ興味深いと感じました.世の中に多在する課題を解決したい方には,ぜひ博士進学をおすすめします.新しい知識を積み重ねて世界に貢献できるだけでなく,自分磨きもして,成長できると思います.

最後に,博士論文執筆にあたり,佐伯元司教授,林晋平准教授からは多大な助言を賜りました.厚く感謝を申し上げます.また,佐伯研究室,林研究室の先輩,同期,後輩の皆様にも感謝の意を表します.