A Mono-and Multi-objective Approach for Recommending Software Refactoring

Created by W.Langdon from gp-bibliography.bib Revision:1.3872

@PhdThesis{ouni2014PhD,
  title =        "A Mono-and Multi-objective Approach for Recommending
                 Software Refactoring",
  author =       "Ali Ouni",
  year =         "2014",
  school =       "University of Montreal",
  address =      "Canada",
  month =        oct,
  keywords =     "genetic algorithms, genetic programming, SBSE,
                 Software Maintenance, Code-smells, Refactoring",
  URL =          "https://sites.google.com/site/ouniaali/ouni_PhD_thesis_2014.pdf",
  URL =          "http://hdl.handle.net/1866/11613",
  URL =          "https://papyrus.bib.umontreal.ca/xmlui/handle/1866/11613",
  URL =          "https://papyrus.bib.umontreal.ca/xmlui/bitstream/handle/1866/11613/Ouni_Ali_2014_these.pdf",
  size =         "245 pages",
  abstract =     "Les systemes logiciels sont devenus de plus en plus
                 repondus et importants dans notre societe. Ainsi, il y
                 a un besoin constant de logiciels de haute qualite.
                 Pour ameliorer la qualite de logiciels, l'une des
                 techniques les plus utilisees est le refactoring qui
                 sert A ameliorer la structure d'un programme tout en
                 preservant son comportement externe. Le refactoring
                 promet, s'il est applique convenablement, A ameliorer
                 la comprehensibilite, la maintenabilite et
                 l'extensibilite du logiciel tout en ameliorant la
                 productivite des programmeurs. En general, le
                 refactoring pourra s'appliquer au niveau de
                 specification, conception ou code. Cette these porte
                 sur l'automatisation de processus de recommandation de
                 refactoring, au niveau code, s'appliquant en deux
                 etapes principales: 1) la detection des fragments de
                 code qui devraient a ameliores (e.g., les defauts de
                 conception), et 2) l'identification des solutions de
                 refactoring A appliquer. Pour la premiere etape, nous
                 traduisons des regularites qui peuvent a trouves dans
                 des exemples de defauts de conception. Nous utilisons
                 un algorithme genetique pour generer automatiquement
                 des regles de detection A partir des exemples de
                 defauts. Pour la deuxieme etape, nous introduisons une
                 approche se basant sur une recherche heuristique. Le
                 processus consiste A trouver la sequence optimale
                 d'operations de refactoring permettant d'ameliorer la
                 qualite du logiciel en minimisant le nombre de defauts
                 tout en priorisant les instances les plus critiques. De
                 plus, nous explorons d'autres objectifs A optimiser: le
                 nombre de changements requis pour appliquer la solution
                 de refactoring, la preservation de la semantique, et la
                 consistance avec l'historique de changements. Ainsi,
                 reduire le nombre de changements permets de garder
                 autant que possible avec la conception initiale. La
                 preservation de la semantique assure que le programme
                 restructure est semantiquement coherent. De plus, nous
                 utilisons l'historique de changement pour suggerer de
                 nouveaux refactorings dans des contextes similaires. En
                 outre, nous introduisons une approche multi-objective
                 pour ameliorer les attributs de qualite du logiciel (la
                 flexibilite, la maintenabilite, etc.), fixer les
                 mauvaises a pratiques de conception (defauts de
                 conception), tout en introduisant les bonnes a
                 pratiques de conception (patrons de conception).",
  abstract =     "Software systems have become prevalent and important
                 in our society. There is a constant need for
                 high-quality software. Hence, to improve software
                 quality, one of the most-used techniques is the
                 refactoring which improves design structure while
                 preserving the external behaviour. Refactoring has
                 promised, if applied well, to improve software
                 readability, maintainability and extendibility while
                 increasing the speed at which programmers can write and
                 maintain their code. In general, refactoring can be
                 performed in various levels such as the requirement,
                 design, or code level. In this thesis, we mainly focus
                 on the source code level where automated refactoring
                 recommendation can be performed through two main steps:
                 1) detection of code fragments that need to be
                 improved/fixed (e.g., code-smells), and 2)
                 identification of refactoring solutions to achieve this
                 goal. For the code-smells identification step, we
                 translate regularities that can be found in such
                 code-smell examples into detection rules. To this end,
                 we use genetic programming to automatically generate
                 detection rules from examples of code-smells.

                 For the refactoring identification step, a search-based
                 approach is used. The process aims at finding the
                 optimal sequence of refactoring operations that improve
                 software quality by minimizing the number of detected
                 code-smells while prioritizing the most critical ones.
                 In addition, we explore other objectives to optimize
                 using a multi-objective approach: the code changes
                 needed to apply refactorings, semantics preservation,
                 and the consistency with development change history.
                 Hence, reducing code changes allows us to keep as much
                 as possible the initial design. On the other hand,
                 semantics preservation insures that the refactored
                 program is semantically coherent, and that it models
                 correctly the domain-semantics. Indeed, we use
                 knowledge from historical code change to suggest new
                 refactorings in similar contexts.

                 Furthermore, we introduce a novel multi-objective
                 approach to improve software quality attributes (i.e.,
                 flexibility, maintainability, etc.), fix bad design
                 practices (i.e., code-smells) while promoting good
                 design practices (i.e., design patterns).",
  notes =        "in english",
}

Genetic Programming entries for Ali Ouni

Citations