Search-based Software Refactoring: Towards Semantics Preservation
Add to Google Calendar
Successful software products are evolved by introducing continuous changes. However, this may in turn introduce poor design effects and make systems complex. This complexity leads to significantly reduced productivity, decreased system's performance, increased fault-proneness, made software costly and even canceled projects. Many studies reported that software engineers spend around 60% of their time in understanding the code. Clearly, there is an urgent need for our software engineers to find better ways to reduce and manage the growing complexity of software systems and improve their productivity. Refactoring, which improves design structure while preserving the overall functionalities and behavior, is an extremely important solution to address this challenge.
After more than a decade of research in the field, it is not sufficient to detect refactoring opportunities and suggest refactoring solutions based only on structural (metrics) indications. In object-oriented programs, objects reify domain concepts and/or physical objects, implementing their characteristics and behavior. Unlike other programming paradigms, grouping data and behavior into classes is not guided by development or maintenance considerations. Methods and fields of classes characterize the structure and behavior of the implemented domain elements. Consequently, a program could be syntactically correct, implement the appropriate behavior, but violate the domain semantics if the reification of domain elements is incorrect. During the initial design/implementation, programs usually capture well the domain semantics when object-oriented principles are applied. However, when these programs are refactored during maintenance, the adequacy with regards to domain semantics could be compromised. Semantics preservation is an important issue not well-addressed in current refactoring literature.
I will explore in this talk several approaches that we proposed based on mono/multi/many-objective optimization techniques for detecting refactoring opportunities and suggesting viable refactoring solutions based on several measures inspired from NLP (vocabulary-based similarity) such as cosine similarity to estimate the similarity between the name of code elements, comments and code documentation to recommend new code changes. I will also present several other applications of our vocabulary-based techniques to model transformation and meta-model matching. An evaluation of the proposed contributions on large scale open-source and industrial systems will be also presented during this talk. Finally, I will describe several challenges and future research directions to automatically generate software documentation based on summarization techniques.
Dr. Marouane Kessentini is an Assistant Professor in the Department of Computer and Information Science at the University of Michigan Dearborn, MI, USA. He is the founder of the Search-Based Software Engineering (SBSE) research lab including now one post-doc, six PhD students and seven master students. He has several collaborations with different industrial companies on studying software engineering problems by optimization techniques such as software quality, software testing, software migration, software evolution, etc. He also received the best dissertation award in 2012 from University of Montreal. He published more than 50 papers in software engineering conferences and journals including three best paper awards. He has served as program committee member in several major conferences (GECCO, MODELS, COMPSAC, ICMT, etc.) and as organization member of many conferences and workshops. He is also the co-chair of GECCO2014 and the general chair of SSBSE2016.