Skip to main content
QUICK REVIEW

[論文レビュー] The Impact of Auto-Refactoring Code Smells on the Resource Utilization of Cloud Software

Asif Imran, Tevfik Kosar|arXiv (Cornell University)|Aug 14, 2020
Cloud Computing and Resource Management参考文献 19被引用数 4
ひとこと要約

本研究では、OpenStack上にデプロイされた6つのオープンソースSaaSアプリケーションにおけるCPUおよびメモリ使用量に、自動リファクタリングによる7つの古典的コードスモール(ゴッドクラス、フィーチャー・エンヴィ、型チェック、循環的依存、ショットガン・サージェリー、ゴッドメソッド、スパゲッティコード)の影響を評価した。JDeodrantとJSparrowといったツールを用いて分析した結果、ゴッドクラス、フィーチャー・エンヴィ、ゴッドメソッドのリファクタリングは、CPU使用量(+14.8%)およびメモリ使用量(OneDataShareでは最大88.1%)を顕著に増加させた一方、他のスモールはリソース消費を低減させた。これは、一部の自動リファクタリングが、コード品質の向上とは裏腹にクラウドリソース効率を損なう可能性があることを示している。

ABSTRACT

Cloud-based software-as-a-service (SaaS) have gained popularity due to their low cost and elasticity. However, like other software, SaaS applications suffer from code smells, which can drastically affect functionality and resource usage. Code smell is any design in the source code that indicates a deeper problem. The software community deploys automated refactoring to eliminate smells which can improve performance and also decrease the usage of critical resources. However, studies that analyze the impact of automatic refactoring smells in SaaS on resources such as CPU and memory have been conducted to a limited extent. Here, we aim to fill that gap and study the impact on resource usage of SaaS applications due to automatic refactoring of seven classic code smells: god class, feature envy, type checking, cyclic dependency, shotgun surgery, god method, and spaghetti code. We specified six real-life SaaS applications from Github called Zimbra, OneDataShare, GraphHopper, Hadoop, JENA, and JAMES which ran on Openstack cloud. Results show that refactoring smells by tools like JDeodrant and JSparrow have widely varying impacts on the CPU and memory consumption of the tested applications based on the type of smell refactored. We present the resource utilization impact of each smell and also discuss the potential reasons leading to that effect.

研究の動機と目的

  • クラウドベースのSaaSアプリケーションにおけるコードスモールの自動リファクタリングがCPUおよびメモリ使用量に与える影響を調査すること。
  • 特定のコードスモールがリファクタリングされた場合、クラウド環境でリソース消費が増加または減少する要因を特定すること。
  • 既存のリファクタリングツール(JDeodrantおよびJSparrow)がクラウドリソース効率の向上にどの程度効果を発揮するかを評価すること。
  • 特にリソースが課金されるマルチテナントクラウドプラットフォームにおいて、自動リファクタリングによる意図しないパフォーマンス劣化のリスクを浮き彫りにすること。
  • 不要なクラウドコストを回避するため、SaaSプロバイダーがコードスモールを的確にリファクタリングする手がかりを提供すること。

提案手法

  • GitHubから実世界のSaaSアプリケーション(Zimbra、OneDataShare、GraphHopper、Hadoop、JENA、JAMES)6つを抽出し、分析対象とした。
  • JDeodrant(ゴッドクラス、フィーチャー・エンヴィ、型チェック)およびJSparrow(循環的依存、ショットガン・サージェリー、ゴッドメソッド、スパゲッティコード)を用いて7つの古典的コードスモールを検出。
  • 検出されたスモールに対して、JDeodrantおよびJSparrowを用いて自動リファクタリングを実施。
  • リファクタリング済みアプリケーションをOpenStackクラウドインfraにデプロイし、リファクタリング前後におけるCPUおよびメモリ使用量を測定。
  • 異なるリファクタリング処理を比較するための制御実験を実施し、リソース消費メトリクスを分析。
  • 結果を分析し、特定のリファクタリング手法とCPUおよびメモリ使用量の変化との相関関係を特定。

実験結果

リサーチクエスチョン

  • RQ1コードスモールの自動リファクタリングは、クラウドベースのSaaSアプリケーションにおけるCPU使用量にどのような影響を与えるか?
  • RQ2OpenStack上で実行されるSaaSアプリケーションにおいて、特定のコードスモールをリファクタリングした場合、メモリ消費量にどのような影響があるか?
  • RQ3コード品質の向上とは裏腹にリソース使用量を増加させるリファクタリング手法は何か?
  • RQ4特定のリファクタリング処理(例:ゴッドクラス、ゴッドメソッド)がクラウド環境でCPUおよびメモリ使用量を増加させる理由は何か?
  • RQ5JDeodrantやJSparrowといった既存のリファクタリングツールは、クラウドリソース効率をどの程度向上または低下させるか?

主な発見

  • ゴッドクラススモールのリファクタリングにより、OneDataShareではCPU使用量が14.8%増加し、メモリ使用量が最大88.1%増加した。これは顕著なリソースオーバーヘッドを示している。
  • フィーチャー・エンヴィスモールは、全6つのSaaSアプリケーションでCPU使用量が11.00%増加し、顕著なメモリ消費増加を引き起こした。
  • ゴッドメソッドスモールのリファクタリングにより、CPU使用量が3.5%増加し、関数呼び出し回数の増加に伴い、顕著なメモリ消費増加が観察された。
  • 一方、循環的依存、ショットガン・サージェリー、スパゲッティコード、型チェックのリファクタリングはCPU使用量を低減させた。これは、これらの変更が効率性を向上させている可能性を示している。
  • ゴッドクラスのリファクタリング後、メモリ使用量は顕著に増加した(例:GraphHopperでは54.8%、OneDataShareでは88.1%)。これは、クラスの分解と関数呼び出し頻度の増加によるものと推定される。
  • 本研究では、現在の自動リファクタリングツールが、ゴッドクラス、フィーチャー・エンヴィ、ゴッドメソッドスモールに対しては、コード構造の改善とは裏腹にクラウドリソースコストを増加させる可能性があることが明らかになった。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。