ct 16(9): e2

Research Article

A Genetic Algorithm for Automated Refactoring of Component-Based Software

Download1556 downloads
  • @ARTICLE{10.4108/eai.3-12-2015.2262353,
        author={Salim Kebir and Isabelle Borne and Djamel Meslati},
        title={A Genetic Algorithm for Automated Refactoring of Component-Based Software},
        journal={EAI Endorsed Transactions on Creative Technologies},
        keywords={genetic algorithm, refactoring, component-based software engineering, bad smells},
  • Salim Kebir
    Isabelle Borne
    Djamel Meslati
    Year: 2016
    A Genetic Algorithm for Automated Refactoring of Component-Based Software
    DOI: 10.4108/eai.3-12-2015.2262353
Salim Kebir1,*, Isabelle Borne2, Djamel Meslati3
  • 1: Ecole Nationale Supérieure d'informatique, Alger, Algeria
  • 2: IRISA, Vannes, France
  • 3: LISCO, Université Badji Mokhtar, Annaba, Algeria
*Contact email: s_kebir@esi.dz


Nowadays a software undergoes modifications done by different people to quickly fulfill new requirements, but its underlying design is not adjusted properly after each update. This leads to the emergence of bad smells. Refactoring provides a de facto behavior-preserving means to eliminate these anomalies. However, manually determining and performing useful refactorings is known as an NP-Complete problem as stated by Harman et al. because seemingly useful refactorings can improve some aspect of a software while making another aspect worse. Therefore it has been proposed to view object-oriented automated refactoring as a search based technique. However the review of the litterature shows that automated refactoring of component-based software has not been investigated yet. Recently a catalogue of component-relevant bad smells has been proposed in the literature but there is a lack of component-relevant refactorings. In this paper we propose a catalogue of component-relevant refactoring as well as detections rules for component-relevant bad smells. Then we rely on these two ingredients to propose a genetic algorithm for automated refactoring of component-based software systems.