Skip to main content
QUICK REVIEW

[論文レビュー] An Empirical Study on the Impact of Refactoring Activities on Evolving Client-Used APIs

Raula Gaikovina Kula, Ali Ouni|arXiv (Cornell University)|Sep 27, 2017
Software Engineering Research参考文献 28被引用数 3
ひとこと要約

この実証的研究では、183バージョンにわたる8つの人気のあるJavaライブラリにおいて、リファクタリングがクライアントが使用するAPIに与える影響を分析している。自動化ツールを用いて12,900件のリファクタリングおよび9,700件のAPI破壊を検出している。その結果、クライアントが使用するAPIの破壊のうち37%しかリファクタリングによって直接引き起こされていないことが判明し、残りの63%はバグ修正や機能追加によって引き起こされている。これは、リファクタリング活動にもかかわらず、ライブラリメンテナが後方互換性を重視していることを示している。

ABSTRACT

Context: Refactoring is recognized as an effective practice to maintain evolving software systems. For software libraries, we study how library developers refactor their Application Programming Interfaces (APIs), especially when it impacts client users by breaking an API of the library. Objective: Our work aims to understand how clients that use a library API are affected by refactoring activities. We target popular libraries that potentially impact more library client users. Method: We distinguish between library APIs based on their client-usage (refereed to as client-used APIs) in order to understand the extent to which API breakages relate to refactorings. Our tool-based approach allows for a large-scale study across eight libraries (i.e., totaling 183 consecutive versions) with around 900 clients projects. Results: We find that library maintainers are less likely to break client-used API classes. Quantitatively, we find that refactoring activities break less than 37% of all client-used APIs. In a more qualitative analysis, we show two documented cases of where non-refactoring API breaking changes are motivated other maintenance issues (i.e., bug fix and new features) and involve more complex refactoring operations. Conclusion: Using our automated approach, we find that library developers are less likely to break APIs and tend to break client-used APIs when addressing these maintenance issues.

研究の動機と目的

  • 進化するソフトウェアライブラリにおけるリファクタリング活動がクライアントが使用するAPIに与える影響を理解すること。
  • クライアントが使用するAPIにおけるAPI破壊が、リファクタリングではなく他のメンテナンス活動によってどの程度引き起こされているかを調査すること。
  • リファクタリング時に、ライブラリメンテナがクライアント向けAPIの後方互換性を優先しているかどうかを評価すること。
  • 将来の再現性やさらなる研究のための、大規模かつツールベースのAPI破壊およびリファクタリングのデータセットを提供すること。

提案手法

  • 183回の連続するバージョンにおける8つの人気のあるJavaライブラリにおいて、リファクタリング操作(例:move_method、rename_methodなど)を検出するために静的解析を自動化して使用した。
  • API破壊は、バイナリ互換性をクラスファイルのバイトコード解析を用いてバージョン間で比較することで特定した。
  • クライアントがAPIを使用しているかどうかは、実世界のクライアントプロジェクト(約900プロジェクト)をマイニングすることで特定した。
  • リファクタリングの種類とAPI破壊頻度との関係を分析するために、非パラメトリック統計的検定を適用した。
  • 完全なリファクタリングおよび破壊のデータセットを含む再現パッケージを作成し、公開した。

実験結果

リサーチクエスチョン

  • RQ1進化するソフトウェアライブラリにおいて、リファクタリング活動によってクライアントが使用するAPIがどの程度破壊されているか。
  • RQ2クライアントが使用するAPIと使用しないAPIとの間で、リファクタリングの頻度と種類にどのような違いがあるか。
  • RQ3リファクタリングによって引き起こされない残りのAPI破壊の背後にある動機は何であり、バグ修正や機能追加などのメンテナンス作業とどのように関係しているか。
  • RQ4特定のリファクタリングの種類(例:rename_method、move_field)は、他の種類よりもクライアントが使用するAPIを破壊しやすいか。

主な発見

  • クライアントが使用するAPIの破壊のうち、わずか37%しかリファクタリング操作によって直接引き起こされていない。これは、破壊の大部分がリファクタリング以外の活動に起因していることを示している。
  • ライブラリメンテナは、内部クラスやクライアントが使用しないクラスよりも、クライアントが使用するAPIを破壊する可能性がはるかに低い。
  • 残りの63%のAPI破壊は、主にバグ修正や機能追加などの非リファクタリングメンテナンス作業によって引き起こされている。
  • move_method、rename_method、move_fieldといった単純なリファクタリングは、他のクラスに比べてクライアントが使用するAPIに適用される頻度が低い。
  • この研究では、複雑なリファクタリングが非リファクタリング要因に起因する破壊に関与していることが判明し、設計的・メンテナンス的課題が背後に潜んでいる可能性を示している。
  • 12,900件のリファクタリングおよび9,700件のAPI破壊を含む、公開されたデータセットは、今後のAPI進化研究における再現性やツール開発を可能にしている。

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

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

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

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