• Search Research Projects
  • Search Researchers
  • How to Use
  1. Back to project page

2017 Fiscal Year Annual Research Report

A study on Frame-Based Refactoring

Research Project

Project/Area Number 15H02685
Research InstitutionRitsumeikan University

Principal Investigator

丸山 勝久  立命館大学, 情報理工学部, 教授 (30330012)

Co-Investigator(Kenkyū-buntansha) 林 晋平  東京工業大学, 情報理工学院, 助教 (40541975)
Project Period (FY) 2015-04-01 – 2019-03-31
Keywordsソフトウェアリファクタリング / ソフトウェア保守と進化 / ソフトウェア開発環境 / プログラム解析 / プログラム理解
Outline of Annual Research Achievements

リファクタリングにおいて、開発者や保守者の立場によって保存すべき外部的振る舞いは異なると考えるのが妥当である。本研究では、リファクタリングにおける外部的振る舞いの保存に対して、フレームという概念を導入することで、リファクタリングにおいて開発者が意識しているものと意識していないものを分離するための仕組みを確立する。平成29年度は、主に3つの研究項目を実施した。
1. 外部的振る舞いの保存を常に保証したままでリファクタリングを達成することは、実際のソフトウェア開発や保守において現実的でない。そこで、リファクタリングの起動から完了までを時間的フレームとして捉え、その間に任意の編集操作を許容する仕組みを考案し、プロトタイプツールを開発した。このツールを利用することで、リファクタリングの前提条件の検査をソースコードの編集操作に連動させ、利用者が起動したリファクタリングに関して、実際の適用を遅延させることができる。
2. 統合開発環境において、リファクタリング操作およびその適用前後に行われたコードの編集操作を自動的に収集するツールの改良を実施し、より精度と利便性の高い編集情報を記録するツールを開発し、オープンソースとして公開した。
3. リファクタリングにより新規にメソッドが抽出された際、そのメソッドをテストするコードが存在しないことで発生する問題を明らかにした。その上で、もとのメソッドのテストケースを利用することで、抽出したメソッドのテストコードを自動生成する手法を提案した。テストコードの生成は、リファクタリング前後のソースコードに対する静的解析と、ソースコードから変換したプログラムに対する動的解析を組み合わせることで達成している。

Current Status of Research Progress
Current Status of Research Progress

2: Research has progressed on the whole more than it was originally planned.

Reason

平成29年度の計画における研究項目は主に、(1)フレームに基づく外部的振る舞いの保存を保証する手法の確立とプロトタイプツールの作成、(2)リファクタリングツールの使用性に関する検討とリファクタリング環境の構築である。
研究項目(1)については、時間的フレームに基づき、事前条件の検査のタイミングを緩和した遅延リファクタリングという新しい概念を提唱した。さらに、この概念をメソッド抽出リファクタリングに適用したプロトタイプツールを開発した。この研究成果は、国際会議ICSE 2017のポスターセッションで発表した。プロトタイプツールのソースコードは、ソースコード共有ウェブサービスGitHubで広く一般に公開した。
研究項目(2)については、リファクタリング操作を正確に記録するツールの改良には成功した。このツールを利用することで、リファクタリングに関係する編集操作の記録が容易になっている。この研究成果は、国際会議SANER 2018のツールデモンストレーションセッションで発表した。また、このツールに関しても、GitHuBで広く一般に公開した。
平成29年度は、当初計画していた研究項目だけでなく、外部的振る舞いの保存を保証するためのテストケースとリファクタリングの適用によるコードの変化との関係を整理することに取り組んだ。これに関する研究成果は、情報処理学会および電子情報通信学会の研究会で発表した。
このように、平成29年度は、手法の検討だけでなくプロトタイプツールの開発にも力を入れた。その一方で、リファクタリングツールの使用性に関する検討がやや不十分となった。計画の一部が未完了ではあるものの、外部的振る舞いの保存という観点からテストケースの自動生成の意義を見いだすことに成功している点から、研究はおおむね順調に進展しているといえる。

Strategy for Future Research Activity

外部的振る舞いの保存を保証する手法の確立については一定の成果が得られたため、リファクタリングツールの使用性に関する検討に本格的に取りかかる。特に、テストケースに基づく空間的フレームについて、利用者がフレームを直感的に指定でき、さらに容易に管理できるリファクタリング環境の構築を目指す。
遅延リファクタリングについては、事前条件を緩和する仕組みをより一般化することで、メソッド抽出リファクタリングの他にも遅延可能なリファクタリングの種類を増やすことを目指す。
外部的振る舞いの保存を保証するテストコードの自動生成手法については、そのプロトタイプツールを完成させる。さらに、生成されたテストコードを空間的フレームとして維持管理する手法を確立し、リファクタリング環境に組み入れることを目指す。
このように、平成30年度では主に、平成27-29年度に提案したさまざまな手法を組み込んだ包括的なリファクタリング環境の構築に重点的に取り組む。さらに、構築したリファクタリング環境において具体的な適用例を数多く示すことで、フレームを導入することの優位性を立証し、リファクタリング分野においてフレームという概念の浸透を達成する。特に、研究成果の公開を強く意識し、数多くの学術誌に論文を投稿する。研究経費は主に、研究成果発表(論文掲載料、会議参加費、旅費)、および、研究打合わせの旅費に使用する。

  • Research Products

    (18 results)

All 2018 2017 Other

All Journal Article (4 results) (of which Peer Reviewed: 4 results) Presentation (12 results) (of which Int'l Joint Research: 7 results) Remarks (2 results)

  • [Journal Article] コードの編集履歴を用いた競合解決支援2018

    • Author(s)
      西村雄一、紙名哲生、丸山勝久
    • Journal Title

      情報処理学会 論文誌

      Volume: 59 Pages: 1120-1136

    • Peer Reviewed
  • [Journal Article] Comparative Study between Two Approaches Using Edit Operations and Code Differences to Detect Past Refactorings2018

    • Author(s)
      Takayuki Omori、Katsuhisa Maruyama
    • Journal Title

      IEICE Trans. on Information and Systems (ED)

      Volume: E101-D Pages: 644-658

    • DOI

      https://doi.org/10.1587/transinf.2017EDP7160

    • Peer Reviewed
  • [Journal Article] クラス責務割当てのファジィ制約充足問題としての定式化2017

    • Author(s)
      林 晋平, 柳田 拓人, 佐伯 元司, 三村 秀典
    • Journal Title

      情報処理学会論文誌

      Volume: 58 Pages: 795-806

    • Peer Reviewed
  • [Journal Article] Context-based approach to prioritize code smells for prefactoring2017

    • Author(s)
      Sae-Lim Natthawute、Hayashi Shinpei、Saeki Motoshi
    • Journal Title

      Journal of Software: Evolution and Process

      Volume: - Pages: -

    • DOI

      10.1002/smr.1886

    • Peer Reviewed
  • [Presentation] ChangeMacroRecorder: Recording Fine-Grained Textual Changes of Source Code2018

    • Author(s)
      Katsuhisa Maruyama, Shinpei Hayashi, Takayuki Omori
    • Organizer
      25th International Conference on Software Analysis, Evolution, and Reengineering (SANER'18)
    • Int'l Joint Research
  • [Presentation] メソッド抽出リファクタリングにおけるテストコード生成2018

    • Author(s)
      三宅皐, 紙名哲生, 丸山勝久
    • Organizer
      電子情報通信学会 知能ソフトウェア工学研究会
  • [Presentation] 名前変更リファクタリングが行われた識別子間の関係性に関する実証的調査2018

    • Author(s)
      梅川 尚孝, 林 晋平, 佐伯 元司
    • Organizer
      電子情報通信学会ソフトウェアサイエンス研究会
  • [Presentation] 実行トレースの共通性分析に基づく機能開始点の特定2018

    • Author(s)
      中野 真明貴, 野田訓広, 小林 隆志, 林 晋平
    • Organizer
      電子情報通信学会ソフトウェアサイエンス研究会
  • [Presentation] 情報検索に基づくBug Localizationへの不吉な臭いの深刻度の利用2018

    • Author(s)
      高橋 碧, セーリム ナッタウット, 林 晋平, 佐伯 元司
    • Organizer
      情報処理学会 ソフトウェア工学研究発表会
  • [Presentation] A Tool Supporting Postponable Refactoring2017

    • Author(s)
      Katsuhisa Maruyama, Shinpei Hayashi
    • Organizer
      39th International Conference on Software Engineering (ICSE'17)
    • Int'l Joint Research
  • [Presentation] メソッド抽出リファクタリングにおけるテストケースの自動生成2017

    • Author(s)
      三宅皐, 紙名哲生, 丸山勝久
    • Organizer
      情報処理学会 ソフトウェアエンジニアリングシンポジウム2017
  • [Presentation] Revisiting Context-Based Code Smells Prioritization: On Supporting Referred Context2017

    • Author(s)
      Natthawute Sae-Lim, Shinpei Hayashi, Motoshi Saeki
    • Organizer
      9th International Workshop on Managing Technical Debt (MTD 2017)
    • Int'l Joint Research
  • [Presentation] Inference-Based Detection of Architectural Violations in MVC22017

    • Author(s)
      Shinpei Hayashi, Fumiki Minami, Motoshi Saeki
    • Organizer
      12th International Conference on Software Technologies (ICSOFT 2017)
    • Int'l Joint Research
  • [Presentation] Mediating Turf Battles! Prioritizing Shared Modules in Locating Multiple Features2017

    • Author(s)
      Maaki Nakano, Kunihiro Noda, Shinpei Hayashi, Takashi Kobayashi
    • Organizer
      41st IEEE Computer Society Signature Conference on Computers, Software and Applications (COMPSAC 2017)
    • Int'l Joint Research
  • [Presentation] How Do Developers Select and Prioritize Code Smells? A Preliminary Study2017

    • Author(s)
      Natthawute Sae-Lim, Shinpei Hayashi, Motoshi Saeki
    • Organizer
      33rd IEEE International Conference on Software Maintenance and Evolution (ICSME 2017)
    • Int'l Joint Research
  • [Presentation] Detecting Bad Smells of Refinement in Goal-Oriented Requirements Analysis2017

    • Author(s)
      Keisuke Asano, Shinpei Hayashi, Motoshi Saeki
    • Organizer
      4th International Workshop on Conceptual Modeling in Requirements and Business Analysis (MReBa 2017)
    • Int'l Joint Research
  • [Remarks] ChangeMacroRecorder

    • URL

      https://github.com/katsuhisamaruyama/ChangeMacroRecorder

  • [Remarks] PostponableRefactoring

    • URL

      https://github.com/katsuhisamaruyama/PostponableRefactoring

URL: 

Published: 2018-12-17  

Information User Guide FAQ News Terms of Use Attribution of KAKENHI

Powered by NII kakenhi