An Interactive and Dynamic Search-Based Approach to Software Refactoring Recommendations

被引:30
|
作者
Alizadeh, Vahid [1 ]
Kessentini, Marouane [2 ]
Mkaouer, Mohamed Wiem [3 ]
Ocinneide, Mel [4 ]
Ouni, Ali [5 ]
Cai, Yuanfang [6 ]
机构
[1] Univ Michigan, Dearborn, MI 48128 USA
[2] Univ Michigan, Dept Comp & Informat Sci, Dearborn, MI 48128 USA
[3] Rochester Inst Technol, B Thomas Golisano Coll Comp & Informat Sci, Software Engn Dept, Rochester, NY 14623 USA
[4] Univ Coll Dublin, Sch Comp Sci, Dublin 4, Ireland
[5] ETS, Montreal, PQ H3C 1K3, Canada
[6] Drexel Univ, Comp Sci, Philadelphia, PA 19104 USA
关键词
Manuals; Tools; Software quality; Maintenance engineering; Optimization; Electronic mail; Search-based software engineering; Refactoring; interactive optimization; software quality; MULTIOBJECTIVE EVOLUTIONARY ALGORITHMS; DEFECTS DETECTION; TOOLS;
D O I
10.1109/TSE.2018.2872711
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Successful software products evolve through a process of continual change. However, this process may weaken the design of the software and make it unnecessarily complex, leading to significantly reduced productivity and increased fault-proneness. Refactoring improves the software design while preserving overall functionality and behavior, and is an important technique in managing the growing complexity of software systems. Most of the existing work on software refactoring uses either an entirely manual or a fully automated approach. Manual refactoring is time-consuming, error-prone and unsuitable for large-scale, radical refactoring. On the other hand, fully automated refactoring yields a static list of refactorings which, when applied, leads to a new and often hard to comprehend design. Furthermore, it is difficult to merge these refactorings with other changes performed in parallel by developers. In this paper, we propose a refactoring recommendation approach that dynamically adapts and interactively suggests refactorings to developers and takes their feedback into consideration. Our approach uses NSGA-II to find a set of good refactoring solutions that improve software quality while minimizing the deviation from the initial design. These refactoring solutions are then analyzed to extract interesting common features between them such as the frequently occurring refactorings in the best non-dominated solutions. Based on this analysis, the refactorings are ranked and suggested to the developer in an interactive fashion as a sequence of transformations. The developer can approve, modify or reject each of the recommended refactorings, and this feedback is then used to update the proposed rankings of recommended refactorings. After a number of introduced code changes and interactions with the developer, the interactive NSGA-II algorithm is executed again on the new modified system to repair the set of refactoring solutions based on the new changes and the feedback received from the developer. We evaluated our approach on a set of eight open source systems and two industrial projects provided by an industrial partner. Statistical analysis of our experiments shows that our dynamic interactive refactoring approach performed significantly better than four existing search-based refactoring techniques and one fully-automated refactoring tool not based on heuristic search.
引用
下载
收藏
页码:932 / 961
页数:30
相关论文
共 50 条
  • [1] Search-based refactoring for software maintenance
    O'Keeffe, Mark
    Cinneide, Mel O.
    JOURNAL OF SYSTEMS AND SOFTWARE, 2008, 81 (04) : 502 - 516
  • [2] Exploiting Antipheromone in Ant Colony Optimisation for Interactive Search-Based Software Design and Refactoring
    Simons, Chris
    Smith, Jim
    PROCEEDINGS OF THE 2016 GENETIC AND EVOLUTIONARY COMPUTATION CONFERENCE (GECCO'16 COMPANION), 2016, : 143 - 144
  • [3] Interactive and Guided Architectural Refactoring with Search-Based Recommendation
    Lin, Yun
    Peng, Xin
    Cai, Yuanfang
    Dig, Danny
    Zheng, Diwen
    Zhao, Wenyun
    FSE'16: PROCEEDINGS OF THE 2016 24TH ACM SIGSOFT INTERNATIONAL SYMPOSIUM ON FOUNDATIONS OF SOFTWARE ENGINEERING, 2016, : 535 - 546
  • [4] Model refactoring using examples: a search-based approach
    Ghannem, Adnane
    El Boussaidi, Ghizlane
    Kessentini, Marouane
    JOURNAL OF SOFTWARE-EVOLUTION AND PROCESS, 2014, 26 (07) : 692 - 713
  • [5] Automatic Refactoring of Component-based Software by Detecting and Eliminating Bad Smells A Search-based Approach
    Kebir, Salim
    Borne, Isabelle
    Meslati, Djamel
    ENASE: PROCEEDINGS OF THE 11TH INTERNATIONAL CONFERENCE ON EVALUATION OF NOVEL SOFTWARE APPROACHES TO SOFTWARE ENGINEERING, 2016, : 210 - 215
  • [6] On the use of many quality attributes for software refactoring: a many-objective search-based software engineering approach
    Mkaouer, Mohamed Wiem
    Kessentini, Marouane
    Bechikh, Slim
    Cinneide, Mel O.
    Deb, Kalyanmoy
    EMPIRICAL SOFTWARE ENGINEERING, 2016, 21 (06) : 2503 - 2545
  • [7] On the use of many quality attributes for software refactoring: a many-objective search-based software engineering approach
    Mohamed Wiem Mkaouer
    Marouane Kessentini
    Slim Bechikh
    Mel Ó Cinnéide
    Kalyanmoy Deb
    Empirical Software Engineering, 2016, 21 : 2503 - 2545
  • [8] Automated Refactoring of ATL Model Transformations: A Search-Based Approach
    Alkhazi, Bader
    Ruas, Terry
    Kessentini, Marouane
    Wimmer, Manuel
    Grosky, William, I
    19TH ACM/IEEE INTERNATIONAL CONFERENCE ON MODEL DRIVEN ENGINEERING LANGUAGES AND SYSTEMS (MODELS'16), 2016, : 295 - 304
  • [9] Search-based refactoring: an empirical study
    O'Keeffe, Mark
    Cinneide, Mel O.
    JOURNAL OF SOFTWARE MAINTENANCE AND EVOLUTION-RESEARCH AND PRACTICE, 2008, 20 (05): : 345 - 364
  • [10] Challenges Classification in Search-Based Refactoring
    Shafiei, Narjes
    Keyvanpour, Mohammad Reza
    2020 6TH INTERNATIONAL CONFERENCE ON WEB RESEARCH (ICWR), 2020, : 106 - 112