Marouane Kessentini

dblp:90/382 · DBLP profile ↗
← Back
113ranked-venue papers
17as first author
27since 2021 · last 2026
—ORCID · conflict

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 97 · 15 first-author · 23 since 2021Artificial intelligence and machine learning · 19 · 2 first-author · 2 since 2021Databases, data management, data science and information retrieval · 3 · 3 since 2021Systems, architecture and hardware · 1 · 1 since 2021Computer networks · 1Human-computer interaction and ubiquitous computing · 1 · 1 since 2021Applied, interdisciplinary, general and emerging computing · 1
YearPublicationVenuePosition
2026 DIR-SMOTE: a density-influence resampling framework for imbalanced code smell detection
Ruchika Malhotra, Bhawna Jain, Marouane Kessentini
Autom. Softw. Eng.3
2025 Integrating Bird's Eye View Fusion and Reinforcement Learning for Efficient Autonomous Intersection Navigation
abstract
The automotive industry has seen rapid advancements with the integration of artificial intelligence (AI), particularly in autonomous driving. While significant progress has been made, navigating complex traffic scenarios, such as intersections, remains challenging due to their dynamic nature. Traditional rule-based systems often struggle to adapt, prompting the need for more advanced solutions. This study aims to enhance autonomous driving at intersections by integrating bird’s eye view (BEV) fusion and reinforcement learning (RL). Using the CARLA simulator, we fine-tune the UNetXST model to fuse multiple camera perspectives into a BEV representation, providing a holistic view of the vehicle’s surroundings. This comprehensive view serves as input for the RL agent, which is trained using the proximal policy optimization (PPO) algorithm to learn optimized driving strategies, avoid collisions, and ensure efficient navigation. Our results show that the proposed framework outperforms baseline techniques.
Ayoub Sassi, Emna Zedini, Hakim Ghazzai, Gianluca Setti, Marouane Kessentini
ISCAS5
2025 Build Code Needs Maintenance Too: A Study on Refactoring and Technical Debt in Build Systems
abstract
In modern software engineering, build systems play the crucial role of facilitating the conversion of source code into software artifacts. Recent research has explored high-level causes of build failures, but has largely overlooked the structural properties of build files. Akin to source code, build systems face technical debt challenges that hinder maintenance and optimization. While refactoring is often seen as a key tool for addressing technical debt in source code, there is a significant research gap regarding the specific refactoring changes developers apply to build code and whether these refactorings effectively address technical debt.In this paper, we address this gap by examining refactorings applied to build scripts in open-source projects, covering the widely used build systems of Gradle, Ant, and Maven. Additionally, we investigate whether these refactorings are used to tackle technical debts in build systems. Our analysis was conducted on 725 examined build-file-related commits. We identified 24 build-related refactorings, which we divided into 6 main categories. These refactorings are organized into the first empirically derived taxonomy of build system refactorings. Furthermore, we investigate how developers employ these refactoring types to address technical debts via a manual commitanalysis and a developer survey. In this context, we identified 5 technical debts addressed by these refactorings and discussed their correlation with the different refactorings. Finally, we introduce BuildRefMiner, an LLM-powered tool leveraging GPT40 to automate the detection of refactorings within build systems. We evaluated its performance and found that it achieves an F1 score of 0.76 across all build systems.This study will serve as a foundational building block for guiding future research and practice in the maintenance and optimization of build systems. BuildRefMiner and the replication package for this study are available at [1]
Anwar Ghammam, Dhia Elhaq Rzig, Mohamed Almukhtar, Rania Khalsi, Foyzul Hassan, Marouane Kessentini
MSR6
2025 Mining user reviews for method-level bug localization using transformers in java-based applications
Nesrine Mansouri, Makram Soui, Marouane Kessentini
Neural Comput. Appl.3
2025 QNet: exploring deep learning for quantum code smell detection
Ruchika Malhotra, Bhawna Jain, Marouane Kessentini
Softw. Qual. J.3
2024 Empirical Investigation of Accessibility Bug Reports in Mobile Platforms: A Chromium Case Study
abstract
Accessibility is an important quality factor of mobile applications. Many studies have shown that, despite the availability of many resources to guide the development of accessible software, most apps and web applications contain many accessibility issues. Some researchers surveyed professionals and organizations to understand the lack of accessibility during software development, but few studies have investigated how developers and organizations respond to accessibility bug reports. Therefore, this paper analyzes accessibility bug reports posted in the Chromium repository to understand how developers and organizations handle them. More specifically, we want to determine the frequency of accessibility bug reports over time, the time-to-fix compared to traditional bug reports (e.g., functional bugs), and the types of accessibility barriers reported. Results show that the frequency of accessibility reports has increased over the years, and accessibility bugs take longer to be fixed, as they tend to be given low priority.
Wajdi Aljedaani, Mohamed Wiem Mkaouer, Marcelo Medeiros Eler, Marouane Kessentini
CHI4
2024 Mind the Gap: The Disconnect Between Refactoring Criteria Used in Industry and Refactoring Recommendation Tools
abstract
Refactoring is a widely adopted practice that keeps code healthy and provides well known benefits like improving developer productivity. Developers routinely make decisions about how to refactor code (which specific refactoring changes to make), but the criteria that guide these decisions is not well studied. We conducted a multi-method study to understand the diversity of criteria that developers use in deciding what refactoring changes to make, the relative importance of different criteria, and the extent to which refactoring recommendation tools incorporate these criteria in their recommendation approaches. Our findings demonstrate that developers in industry situationally employ more than a dozen criteria when making refactoring decisions. However, no recommendation tool supports even half of those criteria and most criteria are supported by only a few tools. While research in refactoring recommendations tools is ripe, lack of support for criteria developers care about leaves industry without the kind of recommendation tools that they need. In this paper, we summarize findings from industry interviews, an industry survey, and an analysis of refactoring recommendation tools. We highlight gaps in refactoring recommendation tools that researchers and tool vendors should consider focusing on for successful practical application of refactoring recommendation tools at scale.
James Ivers, Anwar Ghammam, Khouloud Gaaloul, Ipek Ozkaya, Marouane Kessentini, Wajdi Aljedaani
ICSME5
2024 DRMiner: A Tool For Identifying And Analyzing Refactorings In Dockerfile
abstract
Software containerization using Docker has recently become the de facto standard for delivering reusable software artifacts. Integral to Docker's functionality are Dockerfiles, which serve as scripts that define the layers and components to be incorporated within a container. Although these files serve as the bedrock of container creation, their maintenance presents intricate challenges. Specifically, the task of Dockerfile refactoring is compounded by its inherent complexity. Although the importance of refactoring inside Docker ecosystems is apparent, detecting it remains challenging. Developers usually avoid documenting their refactoring efforts, often combining them with other changes.
Emna Ksontini, Aicha Abid, Rania Khalsi, Marouane Kessentini
MSR4
2024 Efficient Management of Containers for Software Defined Vehicles
abstract
Containerization technology, such as Docker, is gaining in popularity in newly established software-defined vehicle architectures (SDVA). However, executing those containers can quickly become computationally expensive in constrained environments, given the limited CPU, memory, and energy resources in the Electric Control Units (ECU) of SDVA. Consequently, the efficient management of these containers is crucial for enabling the on-demand usage of the applications in the vehicle based on the available resources while considering several constraints and priorities, including failure tolerance, security, safety, and comfort. In this article, we propose a dynamic software container management approach for constrained environments such as embedded devices/ECUs in SDVA within smart cars. To address the conflicting objectives and constraints within the vehicle, we design a novel search-based approach based on multi-objective optimization. This approach facilitates the allocation, movement, or suspension of containers between ECUs in the cluster. Collaborating with our industry partner, Ford Motor Company, we evaluate our approach using different real-world software-defined scenarios. These scenarios involve using heterogeneous clusters of ECU devices in vehicles based on real-world software containers and use-case studies from the automotive industry. The experimental results demonstrate that our scheduler outperforms existing scheduling algorithms, including the default Docker scheduler -Spread- commonly used in automotive applications. Our proposed scheduler exhibits superior performance in terms of energy and resource cost efficiency. Specifically, it achieves a 35% reduction in energy consumption in power-saving mode compared to the scheduler employed by Ford Motor Company. Additionally, our scheduler effectively distributes workload among the ECUs in the cluster, minimizing resource usage, and dynamically adjusts to the real-time requirements and constraints of the car environment. This work will serve as a fundamental building block in the automotive industry to efficiently manage software containers in smart vehicles, considering constraints and priorities in the real world.
Anwar Ghammam, Rania Khalsi, Marouane Kessentini, Foyzul Hassan
ACM Trans. Softw. Eng. Methodol.3
2024 EASE: An Effort-aware Extension of Unsupervised Key Class Identification Approaches
abstract
Key class identification approaches aim at identifying the most important classes to help developers, especially newcomers, start the software comprehension process. So far, many supervised and unsupervised approaches have been proposed; however, they have not considered the effort to comprehend classes. In this article, we identify the challenge of “ effort-aware key class identification ”; to partially tackle it, we propose an approach, EASE , which is implemented through a modification to existing unsupervised key class identification approaches to take into consideration the effort to comprehend classes. First, EASE chooses a set of network metrics that has a wide range of applications in the existing unsupervised approaches and also possesses good discriminatory power . Second, EASE normalizes the network metric values of classes to quantify the probability of any class to be a key class and utilizes Cognitive Complexity to estimate the effort required to comprehend classes. Third, EASE proposes a metric, RKCP , to measure the relative key-class proneness of classes and further uses it to sort classes in descending order. Finally, an effort threshold is utilized, and the top-ranked classes within the threshold are identified as the cost-effective key classes. Empirical results on a set of 18 software systems show that (i) the proposed effort-aware variants perform significantly better in almost all (≈98.33%) the cases, (ii) they are superior to most of the baseline approaches with only several exceptions, and (iii) they are scalable to large-scale software systems. Based on these findings, we suggest that (i) we should resort to effort-aware key class identification techniques in budget-limited scenarios; and (ii) when using different techniques, we should carefully choose the weighting mechanism to obtain the best performance.
Weifeng Pan 0001, Marouane Kessentini, Ming Hua 0003, Zijiang Yang 0006
ACM Trans. Softw. Eng. Methodol.2
2023 Dynamic Software Containers Workload Balancing via Many-Objective Search
abstract
Software containers are becoming the new state of the art in the industry as they are extensively used to deploy systems. Indeed, the use of containers enables better modularity, reusability, and portability compared to other technologies. As the complexity of software systems is dramatically increasing, it is critical to enable optimal usage of the needed resources to execute them such as memory and CPU. Thus, different scheduling strategies are proposed to select the most suitable nodes to execute a set of containers. For instance, the default strategy in the Docker Swarm kit scheduling framework is based on an equal distribution of the containers between nodes independent of their sizes and consumed resources. However, balancing the containers’ workload is a complex problem due to the conflicting objectives of minimizing the number of selected nodes, minimizing the number of containers per node, the number of changes compared to the original schedule, and the coupling between containers allocated to different nodes. To deal with those conflicting scheduling objectives, we propose a scheduler based on a many-objective optimization approach for scheduling the execution of containers between multiple nodes. The proposed approach aims at finding the best allocation for containers in nodes that leads to efficient utilization of resources. To evaluate our approach, we compared the performance of multiple many and multi-objective techniques based on NSGA-II, NSGA-III, and IBEA algorithms using 48 Docker-related systems and the results show that NSGA-III outperforms the other algorithms in quality attributes as well as in CPU, Memory and Network usage.
Anwar Ghammam, Thiago do Nascimento Ferreira, Wajdi Aljedaani, Marouane Kessentini, Ali Husain
IEEE Trans. Serv. Comput.4
2023 Dependent or Not: Detecting and Understanding Collections of Refactorings
abstract
Refactoring is a program transformation to improve the internal structure of a program while preserving its external behavior. Developers frequently apply multiple refactorings that depend on each other to achieve goals such as improving code reusability. Although manually applying a sequence of dependent refactorings is a common practice, existing refactoring recommendation tools treat refactorings in isolation without revealing the dependencies among them to developers. One reason is that these relationships among refactorings are poorly understood. Current approaches treat refactoring recommendations as a strictly ordered sequence limiting developers’ ability to understand, validate, and apply recommended refactorings. To address this gap, this paper describes a theory for reasoning about collections of refactorings through defining an ordering dependency relation among refactorings and organizing collection of refactorings as a set of refactoring graphs. We propose an algorithm for identifying refactoring dependencies and illustrate these concepts with a tool for visualizing such refactoring dependencies and refactoring graphs. Our validation results demonstrate that 43% of the 1,457,873 recommended refactorings from 9,595 projects that we studied are part of dependent refactoring graphs. Furthermore, refactorings are not only commonly involved in dependent relations, but also when applied, dependent refactoring graphs improve all of the quality attribute metrics in our experiments more than individual refactorings.
Thiago do Nascimento Ferreira, James Ivers, Jeffrey J. Yackley, Marouane Kessentini, Ipek Ozkaya, Khouloud Gaaloul
IEEE Trans. Software Eng.4
2022 Industry experiences with large-scale refactoring
abstract
Software refactoring plays an important role in software engineering. Developers often turn to refactoring when they want to restructure software to improve its quality without changing its external behavior. Small-scale (floss) refactoring is common in industry and is often performed by a single developer in short sessions, even though developers do much of this work manually instead of using refactoring tools. However, some refactoring efforts are much larger in scale, requiring entire teams and months or years of effort, and the role of tools in these efforts is not as well studied. In this paper, we report on a survey we conducted with developers to understand large-scale refactoring and its tool support needs. Our results from 107 industry developers demonstrate that projects commonly go through multiple large-scale refactorings, each of which requires considerable effort. Our study finds that developers use several categories of tools to support large-scale refactoring and rely more heavily on general-purpose tools like IDEs than on tools designed specifically to support refactoring. Tool support varies across the different activities, with some particularly challenging activities seeing little use of tools in practice. Furthermore, our analysis suggests significant impact is possible through advances in tool support for comprehension and testing, as well as through support for the needs of business stakeholders.
James Ivers, Robert L. Nord, Ipek Ozkaya, Chris Seifried, Christopher Steven Timperley, Marouane Kessentini
ESEC/SIGSOFT FSE6
2022 Generation of refactoring algorithms by grammatical evolution
Thainá Mariani, Marouane Kessentini, Silvia Regina Vergilio
Empir. Softw. Eng.2
2022 Variability testing of software product line: A preference-based dimensionality reduction approach
Thiago do Nascimento Ferreira, Silvia Regina Vergilio, Marouane Kessentini
Inf. Softw. Technol.3
2022 An empirical study on ML DevOps adoption trends, efforts, and benefits analysis
Dhia Elhaq Rzig, Foyzul Hassan, Marouane Kessentini
Inf. Softw. Technol.3
2022 How Does Refactoring Impact Security When Improving Quality? A Security-Aware Refactoring Approach
abstract
While state of the art of software refactoring research uses various quality attributes to identify refactoring opportunities and evaluate refactoring recommendations, the impact of refactoring on the security of software systems when improving other quality objectives is under-explored. It is critical to understand how a system is resistant to security risks after refactoring to improve quality metrics. For instance, refactoring is widely used to improve the reusability of code, however such an improvement may increase the attack surface due to the created abstractions. Increasing the spread of security-critical classes in the design to improve modularity may result in reducing the resilience of software systems to attacks. In this paper, we investigated the possible impact of improving different quality attributes (e.g., reusability, extendibility, etc.), from the QMOOD model, effectiveness on a set of 8 security metrics defined in the literature related to the data access. We also studied the impact of different refactorings on these static security metrics. Then, we proposed a multi-objective refactoring recommendation approach to find a balance between quality attributes and security based on the correlation results to guide the search. We evaluated our tool on 30 open source projects. We also collected the practitioner perceptions on the refactorings recommended by our tool in terms of the possible impact on both security and other quality attributes. Our results confirm that developers need to make trade-offs between security and other qualities when refactoring software systems due to the negative correlations between them.
Chaima Abid, Marouane Kessentini, Vahid Alizadeh, Mouna Dhaouadi, Rick Kazman
IEEE Trans. Software Eng.2
2022 X-SBR: On the Use of the History of Refactorings for Explainable Search-Based Refactoring and Intelligent Change Operators
abstract
Refactoring is widely adopted nowadays in industry to restructure the code and meet high quality while preserving the external behavior. Many of the existing refactoring tools and research are based on search-based techniques to find relevant recommendations by finding trade-offs between different quality attributes. While these techniques show promising results on open-source and industry projects, they lack explanations of the recommended changes which can impact their trustworthiness when adopted in practice by developers. Furthermore, most of the adopted search-based techniques are based on random population generation and random change operators (e.g., crossover and mutation). However, it is critical to understand which good refactoring patterns may exist when applying change operators to either keep them or exchange with other solutions rather than destroying them with random changes. In this paper, we propose knowledge-informed change operators and an improved seeding mechanism that we integrated in a multi-objective genetic algorithm. We also provide explanations for refactoring solutions. First, we generate association rules using the Apriori algorithm to find relationships between applied refactorings in previous commits, their locations, and their rationale (quality improvements). Then, we use these rules to 1) initialize the population, 2) improve the change operators and seeding mechanisms of the multi-objective search in order to preserve and exchange good patterns in the refactoring solutions, and 3) explain how a sequence of refactorings collaborate in order to improve the quality of the system (e.g., fitness functions). The validation on large open-source systems shows that X-SBR provides refactoring solutions of a better quality than those given by the state-of-the-art techniques in terms of reducing the invalid refactorings, improving the quality, and increasing trustworthiness of the developers in the suggested refactorings via the provided explanations.
Chaima Abid, Dhia Elhaq Rzig, Thiago do Nascimento Ferreira, Marouane Kessentini, Tushar Sharma 0001
IEEE Trans. Software Eng.4
2022 Enabling Decision and Objective Space Exploration for Interactive Multi-Objective Refactoring
abstract
Due to the conflicting nature of quality measures, there are always multiple refactoring options to fix quality issues. Thus, interaction with developers is critical to inject their preferences. While several interactive techniques have been proposed, developers still need to examine large numbers of possible refactorings, which makes the interaction time-consuming. Furthermore, existing interactive tools are limited to the ”objective space” to show developers the impacts of refactorings on quality attributes. However, the “decision space” is also important since developers may want to focus on specific code locations. In this paper, we propose an interactive approach that enables developers to pinpoint their preference simultaneously in the objective (quality metrics) and decision (code location) spaces. Developers may be interested in looking at refactoring strategies that can improve a specific quality attribute, such as extendibility (objective space), but such strategies may be related to different code locations (decision space). A plethora of solutions is generated at first using multi-objective search that tries to find the possible trade-offs between quality objectives. Then, an unsupervised learning algorithm clusters the trade-off solutions based on their quality metrics, and another clustering algorithm is applied within each cluster of the objective space to identify solutions related to different code locations. The objective and decision spaces can now be explored more efficiently by the developer, who can give feedback on a smaller number of solutions. This feedback is then used to generate constraints for the optimization process, to focus on the developer's regions of interest in both the decision and objective spaces. A manual validation of selected refactoring solutions by developers confirms that our approach outperforms state of the art refactoring techniques.
Soumaya Rebai, Vahid Alizadeh, Marouane Kessentini, Houcem Fehri, Rick Kazman
IEEE Trans. Software Eng.3
2021 Intelligent Change Operators for Multi-Objective Refactoring
abstract
In this paper, we propose intelligent change operators and integrate them into an evolutionary multi-objective search algorithm to recommend valid refactorings that address conflicting quality objectives such as understandability and effectiveness. The proposed intelligent crossover and mutation operators incorporate refactoring dependencies to avoid creating invalid refactorings or invalidating existing refactorings. Further, the intelligent crossover operator is augmented to create offspring that improve solution quality by exchanging blocks of valid refactorings that improve a solution’s weakest objectives. We used our intelligent change operators to generate refactoring recommendations for four widely used open-source projects. The results show that our intelligent change operators improve the diversity of solutions. Diversity is important in genetic algorithms because crossing over a homogeneous population does not yield new solutions. Given the inherent nature of design trade-offs in software, giving developers choices that reflect these trade-offs is important. Higher diversity makes better use of developers time than lots of incredibly similar solutions. Our intelligent change operators also accelerate solution convergence to a feasible solution that optimizes the trade-off between the conflicting quality objectives. Finally, they reduce the number of invalid refactorings by up to 71.52% compared to existing search-based refactoring approaches, and increase the quality of the solutions. Our approach outperformed the state-of-the-art search-based refactoring approaches and an existing deterministic refactoring tool based on manual validation by developers with an average manual correctness, precision and recall of 0.89, 0.82, and 0.87.
Chaima Abid, James Ivers, Thiago do Nascimento Ferreira, Marouane Kessentini, Fares E. Kahla, Ipek Ozkaya
ASE4
2021 Refactorings and Technical Debt in Docker Projects: An Empirical Study
abstract
Software containers, such as Docker, are recently considered as the mainstream technology of providing reusable software artifacts. Developers can easily build and deploy their applications based on the large number of reusable Docker images that are publicly available. Thus, a current popular trend in industry is to move towards the containerization of their applications. However, container-based projects compromise different components including the Docker and Docker-compose files, and several other dependencies to the source code combining different containers and facilitating the interactions with them. Similar to any other complex systems, container-based projects are prone to various quality and technical debt issues related to different artifacts: Docker and Docker-compose files, and regular source code ones. Unfortunately, there is a gap of knowledge in how container-based projects actually evolve and are maintained.In this paper, we address the above gap by studying refactorings, i.e., structural changes while preserving the behavior, applied in open-source Docker projects, and the technical debt issues they alleviate. We analyzed 68 projects, consisting of 19,5 MLOC, along with 193 manually examined commits. The results indicate that developers refactor these Docker projects for a variety of reasons that are specific to the configuration, combination and execution of containers, leading to several new technical debt categories and refactoring types compared to existing refactoring domains. For instance, refactorings for reducing the image size of Dockerfiles, improving the extensibility of Docker-compose files, and regular source code refactorings are mainly associated with the evolution of Docker and Docker-compose files. We also introduced 24 new Docker-specific refactorings and technical debt categories, respectively, and defined different best practices. The implications of this study will assist practitioners, tool builders, and educators in improving the quality of Docker projects.
Emna Ksontini, Marouane Kessentini, Thiago do Nascimento Ferreira, Foyzul Hassan
ASE2
2021 QScored: A Large Dataset of Code Smells and Quality Metrics
abstract
Code quality aspects such as code smells and code quality metrics are widely used in exploratory and empirical software engineering research. In such studies, researchers spend a substantial amount of time and effort to not only select the appropriate subject systems but also to analyze them to collect the required code quality information. In this paper, we present QScored dataset; the dataset contains code quality information of more than 86 thousand C# and Java GitHub repositories containing more than 1.1 billion lines of code. The code quality information contains seven kinds of detected architecture smells, 20 kinds of design smells, eleven kinds of implementation smells, and 27 commonly used code quality metrics computed at project, package, class, and method levels. Availability of the dataset will facilitate empirical studies involving code quality aspects by making the information readily available for a large number of active GitHub repositories.
Tushar Sharma 0001, Marouane Kessentini
MSR2
2021 Prioritizing refactorings for security-critical code
Chaima Abid, Vahid Alizadeh, Marouane Kessentini, Mouna Dhaouadi, Rick Kazman
Autom. Softw. Eng.3
2021 Considering dependencies between bug reports to improve bugs triage
Rafi Almhana, Marouane Kessentini
Autom. Softw. Eng.2
2021 How we refactor and how we document it? On the use of supervised machine learning algorithms to classify refactoring documentation
Eman Abdullah AlOmar, Anthony Peruma, Mohamed Wiem Mkaouer, Christian D. Newman, Ali Ouni 0001, Marouane Kessentini
Expert Syst. Appl.6
2021 Method-level bug localization using hybrid multi-objective search
Rafi Almhana, Marouane Kessentini, Mohamed Wiem Mkaouer
Inf. Softw. Technol.2
2021 Interactive Refactoring of Web Service Interfaces Using Computational Search
abstract
Successful Web services evolve through a process of continuous change due to several reasons such as improving the quality, fixing bugs and adding new features. However, this evolution process may weaken the design of the Web service's interface by aggregating many non-cohesive and semantically unrelated operations. Thus, the service interface becomes unnecessarily complex for users to find relevant operations to be used by their services-based systems. In this paper, we propose an interactive recommendation approach, based on evolutionary algorithms, that dynamically adapts and suggests a possible remodularization of the Web services interface design to users/developers and takes their feedback into consideration. Our approach uses an interactive multi-criteria decision-making algorithm, based on interactive Non-dominated Sorting Genetic Algorithm (NSGA-II), to find a set of good design interface modularization solutions. These solutions provide a trade-off between improving several interface design quality metrics (e.g., coupling, cohesion, number of port types, and number of antipatterns) and fix Web services design antipatterns, maximizing the satisfaction of the interaction constraints learnt from the user feedback during the execution of the algorithm while minimizing the deviation from the initial design. We evaluated our approach on a set of 22 real world Web services, provided by Amazon and Yahoo. Statistical analysis of our experiments shows that our dynamic interactive Web services interface modularization approach performed significantly better than the state-of-the-art modularization techniques in terms of generating well-designed Web services interface for users.
Marouane Kessentini, Ali Ouni 0001
IEEE Trans. Serv. Comput.2
2020 QScored: An Open Platform for Code Quality Ranking and Visualization
abstract
Though abundant source code repositories are available on code repository hosting platforms, their detailed code quality information is not available readily. Software engineering researchers often need to select a set of high-quality repositories. Despite the code quality is an important concern for repository selection, the lack of this information makes researchers depend on alternatives such as the number of issues and the number of stars associated with repositories. Furthermore, practitioners expect user-friendly visual ways to assess the quality of their projects during the evolution of the codebase without putting a considerable effort. We propose an open platform QScored to fill the gap for both researchers and practitioners. The platform hosts detailed code quality analysis information for a large number of repositories (currently more than twelve thousand containing more than 200 million LOC), computes quality score and assigns relative ranking of the hosted repositories based on detected architecture, design, and implementation smells, as well as offers a comprehensive set of visualization aids for code quality aspects. Furthermore, the platform provides REST APIs to search repositories based on their code quality scores and ranking of hosted software projects.Video of the demo: https://youtu.be/-IgvjGV-2X0.
Vishvajeet Thakur, Marouane Kessentini, Tushar Sharma 0001
ICSME2
2020 Understanding and Characterizing Changes in Bugs Priority: The Practitioners' Perceptive
abstract
Assigning appropriate priority to bugs is critical for timely addressing important software maintenance issues. An underlying aspect is the effectiveness of assigning priorities: if the priorities of a fair number of bugs are changed, it indicates delays in fixing critical bugs. There has been little prior work on understanding the dynamics of changing bug priorities. In this paper, we performed an empirical study to observe and understand the changes in bugs' priority to build a 3-W model on Why and When bug priorities change, and Who performs the change. We conducted interviews and a survey with practitioners as well as performed a quantitative analysis containing 225,000 bug reports, developers' comments, and source code changes from 24 open-source systems. The interviews with 11 developers from industry aim to establish an initial model to characterize the changes in bugs priority. The survey with an additional 38 developers was to understand their experience in why and when bug priorities change, and who performs the change. Then, we conducted a manual inspection of the collected data on open-source projects to compare our final bugs priority change model with changes identified in practice. Our quantitative results confirmed the outcomes of our interviews and surveys. For instance, we observed frequent changes in bug priorities and their impact on delaying critical bug fixes especially just before shipping a new release. Our findings can enable 1) researchers to build automated tools for checking and validating requests for bug priority changes, 2) practitioners to use a standard format in documenting and approving bug priority changes, and 3) educators to teach the better management of bug priorities.
Rafi Almhana, Thiago do Nascimento Ferreira, Marouane Kessentini, Tushar Sharma 0001
SCAM3
2020 Multi-criteria test cases selection for model transformations
Bader Alkhazi, Chaima Abid, Marouane Kessentini, Dorian Leroy, Manuel Wimmer
Autom. Softw. Eng.3
2020 Multi-objective code reviewer recommendations: balancing expertise, availability and collaborations
Soumaya Rebai, Abderrahmen Amich, Somayeh Molaei, Marouane Kessentini, Rick Kazman
Autom. Softw. Eng.4
2020 Early prediction of quality of service using interface-level metrics, code-level metrics, and antipatterns
Chaima Abid, Marouane Kessentini
Inf. Softw. Technol.2
2020 On the value of quality attributes for refactoring ATL model transformations: A multi-objective approach
Bader Alkhazi, Chaima Abid, Marouane Kessentini, Manuel Wimmer
Inf. Softw. Technol.3
2020 Recommending refactorings via commit message analysis
Soumaya Rebai, Marouane Kessentini, Vahid Alizadeh, Oussama Ben Sghaier, Rick Kazman
Inf. Softw. Technol.2
2020 Web service design defects detection: A bi-level multi-objective approach
Soumaya Rebai, Marouane Kessentini, Bruce R. Maxim
Inf. Softw. Technol.2
2020 Assessing the quality of mobile graphical user interfaces using multi-objective optimization
Makram Soui, Mabrouka Chouchane, Mohamed Wiem Mkaouer, Marouane Kessentini, Khaled Ghédira
Soft Comput.4
2020 An Interactive and Dynamic Search-Based Approach to Software Refactoring Recommendations
abstract
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.
Vahid Alizadeh, Marouane Kessentini, Mohamed Wiem Mkaouer, Mel Ó Cinnéide, Ali Ouni 0001, Yuanfang Cai
IEEE Trans. Software Eng.2
2019 On the Impact of Refactoring on the Relationship between Quality Attributes and Design Metrics
abstract
Background. Refactoring is a critical task in software maintenance and is generally performed to enforce the best design and implementation practices or to cope with design defects. Several studies attempted to detect refactoring activities through mining software repositories allowing to collect, analyze and get actionable data-driven insights about refactoring practices within software projects. Aim. We aim at identifying, among the various quality models presented in the literature, the ones that are more in-line with the developer's vision of quality optimization, when they explicitly mention that they are refactoring to improve them. Method. We extract a large corpus of design-related refactoring activities that are applied and documented by developers during their daily changes from 3,795 curated open source Java projects. In particular, we extract a large-scale corpus of structural metrics and anti-pattern enhancement changes, from which we identify 1,245 quality improvement commits with their corresponding refactoring operations, as perceived by software engineers. Thereafter, we empirically analyze the impact of these refactoring operations on a set of common state-of-the-art design quality metrics. Results. The statistical analysis of the obtained results shows that (i) a few state-of-the-art metrics are more popular than others; and (ii) some metrics are being more emphasized than others. Conclusions. We verify that there are a variety of structural metrics that can represent the internal quality attributes with different degrees of improvement and degradation of software quality. Most of the metrics that are mapped to the main quality attributes do capture developer intentions of quality improvement reported in the commit messages.
Eman Abdullah AlOmar, Mohamed Wiem Mkaouer, Ali Ouni 0001, Marouane Kessentini
ESEM4
2019 RefBot: Intelligent Software Refactoring Bot
abstract
The adoption of refactoring techniques for continuous integration received much less attention from the research community comparing to root-canal refactoring to fix the quality issues in the whole system. Several recent empirical studies show that developers, in practice, are applying refactoring incrementally when they are fixing bugs or adding new features. There is an urgent need for refactoring tools that can support continuous integration and some recent development processes such as DevOps that are based on rapid releases. Furthermore, several studies show that manual refactoring is expensive and existing automated refactoring tools are challenging to configure and integrate into the development pipelines with significant disruption cost. In this paper, we propose, for the first time, an intelligent software refactoring bot, called RefBot. Integrated into the version control system (e.g. GitHub), our bot continuously monitors the software repository, and it is triggered by any "open" or "merge" action on pull requests. The bot analyzes the files changed during that pull request to identify refactoring opportunities using a set of quality attributes then it will find the best sequence of refactorings to fix the quality issues if any. The bot recommends all these refactorings through an automatically generated pull-request. The developer can review the recommendations and their impacts in a detailed report and select the code changes that he wants to keep or ignore. After this review, the developer can close and approve the merge of the bot's pull request. We quantitatively and qualitatively evaluated the performance and effectiveness of RefBot by a survey conducted with experienced developers who used the bot on both open source and industry projects.
Vahid Alizadeh, Mohamed Amine Ouali, Marouane Kessentini, Meriem Chater
ASE3
2019 Less is More: From Multi-objective to Mono-objective Refactoring via Developer's Knowledge Extraction
abstract
Refactoring studies either aggregated quality metrics to evaluate possible code changes or treated them separately to find trade-offs. For the first category of work, it is challenging to define upfront the weights for the quality objectives since developers are not able to express them upfront. For the second category of work, the number of possible trade-offs between quality objectives is large which makes developers reluctant to look at many refactoring solutions. In this paper, we propose, for the first time, a way to convert multi-objective search into a mono-objective one after interacting with the developer to identify a good refactoring solution based on his preferences. The first step consists of using a multi-objective search to generate different possible refactoring strategies by finding a trade-off between several conflicting quality attributes. Then, an unsupervised learning algorithm clusters the different trade-off solutions, called the Pareto front, to guide the developers in selecting their region of interests and to reduce the number of refactoring options to explore. Finally, the extracted preferences from the developer are used to transform the multi-objective search into a mono-objective one by taking the preferred cluster of the Pareto front as the initial population for the mono-objective search and generating an evaluation function based on the weights that are automatically computed from the position of the cluster in the Pareto front. Thus, the developer will just interact with only one refactoring solution generated by the mono-objective search. We selected 32 participants to manually evaluate the effectiveness of our tool on 7 open source projects and one industrial project. The results show that the recommended refactorings are more accurate than the current state of the art.
Vahid Alizadeh, Houcem Fehri, Marouane Kessentini
SCAM3
2019 Interactive Refactoring Documentation Bot
abstract
The documentation of code changes is significantly important but developers ignore it, most of the time, due to the pressure of the deadlines. While developers may document the most important features modification or bugs fixing, recent empirical studies show that the documentation of quality improvements and/or refactoring is often omitted or not accurately described. However, the automated or semi-automated documentation of refactorings has not been yet explored despite the extensive work on the remaining steps of refactoring including the detection, prioritization and recommendation. In this paper, we propose a semi-automated refactoring documentation bot that helps developers to interactively check and validate the documentation of the refactorings and/or quality improvements at the file level for each opened pull-request before being reviewed or merged to the master. The bot starts by checking the pullrequest if there are significant quality changes and refactorings at the file level and whether they are documented by the developer. Then, it checks the validity of the developers description of the refactorings, if any. Based on that analysis, the documentation bot will recommend a message to document the refactorings, their locations and the quality improvement for that pull-request when missing information is found. Then, the developer can modify his pull request description by interacting with the bot to accept/modify/reject part of the proposed documentation. Since refactoring do not happen in isolation most of the time, the bot is documenting the impact of a sequence of refactorings, in a pull-request, on quality and not each refactoring in isolation. We conducted a human survey with 14 active developers to manually evaluate the relevance and the correctness of our tool on different pull requests of 5 open source projects and one industrial system. The results show that the participants found that our bot facilitates the documentation of their quality-related changes and refactorings.
Soumaya Rebai, Oussama Ben Sghaier, Vahid Alizadeh, Marouane Kessentini, Meriem Chater
SCAM4
2019 Simultaneous Refactoring and Regression Testing
abstract
Currently, refactoring and regression testing are treated independently by existing studies. However, software developers frequently switch between these two activities, using regression testing to identify unwanted behavior changes introduced while refactoring and applying refactoring on identified buggy code fragments. Our hypothesis is that the tools to support developers in these two tasks could transfer part of the knowledge extracted from the process of finding refactoring opportunities to identify relevant test cases, and vice-versa. We propose a simultasking, search-based algorithm that unifies the tasks of refactoring and regression testing, hence solving them simultaneously and enabling knowledge transfer between them. The salient feature of the proposed algorithm is a unified and generic solution representation scheme for both problems, which serves as a common platform for knowledge transfer between them. We implemented and evaluated the proposed simultasking approach on six opensource systems and one industrial project. Our study features quantitative and qualitative analysis performed with developers, and the results achieved show that the proposed approach provides advantages over mono-task techniques treating refactoring and regression testing separately.
Jeffrey J. Yackley, Marouane Kessentini, Gabriele Bavota, Vahid Alizadeh, Bruce R. Maxim
SCAM2
2019 Improving web service interfaces modularity using multi-objective optimization
Sabrine Boukharata, Ali Ouni 0001, Marouane Kessentini, Salah Bouktif
Autom. Softw. Eng.3
2019 A Hybrid Approach for Improving the Design Quality of Web Service Interfaces
abstract
A key success of a Web service is to appropriately design its interface to make it easy to consume and understand. In the context of service-oriented computing (SOC), the service’s interface is the main source of interaction with the consumers to reuse the service functionality in real-world applications. The SOC paradigm provides a collection of principles and guidelines to properly design services to provide best practice of third-party reuse. However, recent studies showed that service designers tend to pay little care to the design of their service interfaces, which often lead to several side effects known as antipatterns . One of the most common Web service interface antipatterns is to expose a large number of semantically unrelated operations, implementing different abstractions, in one single interface. Such bad design practices may have a significant impact on the service reusability, understandability, as well as the development and run-time characteristics. To address this problem, in this article, we propose a hybrid approach to improve the design quality of Web service interfaces and fix antipatterns as a combination of both deterministic and heuristic-based approaches. The first step consists of a deterministic approach using a graph partitioning-based technique to split the operations of a large service interface into more cohesive interfaces, each one representing a distinct abstraction. Then, the produced interfaces will be checked using a heuristic-based approach based on the non-dominated sorting genetic algorithm (NSGA-II) to correct potential antipatterns while reducing the interface design deviation to avoid taking the service away from its original design. To evaluate our approach, we conduct an empirical study on a benchmark of 26 real-world Web services provided by Amazon and Yahoo. Our experiments consist of a quantitative evaluation based on design quality metrics, as well as a qualitative evaluation with developers to assess its usefulness in practice. The results show that our approach significantly outperforms existing approaches and provides more meaningful results from a developer’s perspective.
Ali Ouni 0001, Marouane Kessentini, Salah Bouktif, Katsuro Inoue
ACM Trans. Internet Techn.3
2018 Reducing interactive refactoring effort via clustering-based multi-objective search
abstract
Refactoring is nowadays widely adopted in the industry because bad design decisions can be very costly and extremely risky. On the one hand, automated refactoring does not always lead to the desired design. On the other hand, manual refactoring is error-prone, time-consuming and not practical for radical changes. Thus, recent research trends in the field focused on integrating developers feedback into automated refactoring recommendations because developers understand the problem domain intuitively and may have a clear target design in mind. However, this interactive process can be repetitive, expensive, and tedious since developers must evaluate recommended refactorings, and adapt them to the targeted design especially in large systems where the number of possible strategies can grow exponentially.
Vahid Alizadeh, Marouane Kessentini
ASE2
2018 Introduction to the special section on Software Refactoring
Ali Ouni 0001, Marouane Kessentini, Mel Ó Cinnéide
Inf. Softw. Technol.2
2018 Guest Editorial for the 8th Symposium on Search Based Software Engineering Special Section
Federica Sarro, Kalyanmoy Deb, Marouane Kessentini
Inf. Softw. Technol.3
2018 Model refactoring by example: A multi-objective search based software engineering approach
abstract
Abstract Declarative rules are frequently used in model refactoring in order to detect refactoring opportunities and to apply the appropriate ones. However, a large number of rules is required to obtain a complete specification of refactoring opportunities. Companies usually have accumulated examples of refactorings from past maintenance experiences. Based on these observations, we consider the model refactoring problem as a multi objective problem by suggesting refactoring sequences that aim to maximize both structural and textual similarity between a given model (the model to be refactored) and a set of poorly designed models in the base of examples (models that have undergone some refactorings) and minimize the structural similarity between a given model and a set of well‐designed models in the base of examples (models that do not need any refactoring). To this end, we use the Non‐dominated Sorting Genetic Algorithm (NSGA‐II) to find a set of representative Pareto optimal solutions that present the best trade‐off between structural and textual similarities of models. The validation results, based on 8 real world models taken from open‐source projects, confirm the effectiveness of our approach, yielding refactoring recommendations with an average correctness of over 80%. In addition, our approach outperforms 5 of the state‐of‐the‐art refactoring approaches.
Adnane Ghannem, Marouane Kessentini, Mohamed Salah Hamdi, Ghizlane El-Boussaidi
J. Softw. Evol. Process.2
2018 Guest Editorial Special Issue on Search-Based Software Engineering
abstract
It is our pleasure to introduce this Special Issue on Search-Based Software Engineering (SBSE) focusing on the application of evolutionary computation to solve real-world software engineering problems. Evolutionary computation (EC) methods have now become integral part of software engineering. New advancements in EC, such as multi- and many-objective optimization, uncertainty handling for robust and reliable solutions, knowledge discovery and knowledge-augmented EC, dynamic EC, have a great deal of applications in software engineering. Many applications in software engineering have emerged based on the usage of EC for the automation of all phases of the software development process, including the analysis, design, implementation, testing, and maintenance of large software systems. A total of 26 papers were submitted to the Special Issue. Each was subjected to at least three reviews and finally six were accepted for publication as described in the following.
Federica Sarro, Marouane Kessentini, Kalyanmoy Deb
IEEE Trans. Evol. Comput.2
2018 Towards Prioritizing Documentation Effort
abstract
Programmers need documentation to comprehend software, but they often lack the time to write it. Thus, programmers must prioritize their documentation effort to ensure that sections of code important to program comprehension are thoroughly explained. In this paper, we explore the possibility of automatically prioritizing documentation effort. We performed two user studies to evaluate the effectiveness of static source code attributes and textual analysis of source code towards prioritizing documentation effort. The first study used open-source API Libraries while the second study was conducted using closed-source industrial software from ABB. Our findings suggest that static source code attributes are poor predictors of documentation effort priority, whereas textual analysis of source code consistently performed well as a predictor of documentation effort priority.
Paul W. McBurney, Siyuan Jiang, Marouane Kessentini, Nicholas A. Kraft, Ameer Armaly, Mohamed Wiem Mkaouer, Collin McMillan
IEEE Trans. Software Eng.3
2017 Search-based requirements traceability recovery: A multi-objective approach
abstract
Software systems nowadays are complex and difficult to maintain due to the necessity of continuous change and adaptation. One of the challenges in software maintenance is keeping requirements traceability up to date automatically. The process of generating requirements traceability is time-consuming and error-prone. Currently, most available tools do not support the automated recovery of traceability links. In some situations, companies accumulate the history of changes from past maintenance experiences. In this paper, we consider requirements traceability recovery as a multi objective search problem in which we seek to assign each requirement to one or many software elements (code elements, API documentation, and comments) by taking into account the recency of change, the frequency of change, and the semantic similarity between the description of the requirement and the software element. We use the Non-dominated Sorting Genetic Algorithm (NSGA-II) to find the best compromise between these three objectives. We report the results of our experiments on three open source projects.
Adnane Ghannem, Mohamed Salah Hamdi, Marouane Kessentini, Hany H. Ammar
CEC3
2017 On the Use of Smelly Examples to Detect Code Smells in JavaScript
Ian Shoenberger, Mohamed Wiem Mkaouer, Marouane Kessentini
EvoApplications (2)3
2017 A context-based refactoring recommendation approach using simulated annealing: two industrial case studies
abstract
Refactoring is a highly valuable solution to reduce and manage the growing complexity of software systems. However, programmers are "opportunistic" when they apply refactorings since most of them are interested in improving the quality of the code fragments that they frequently update or those related to the planned activities for the next release (fixing bugs, adding new functionalities, etc.). In this paper, we describe a search based approach to recommend refactorings based on the analysis of the history of changes to maximize the recommended refactorings for recently modified classes, classes containing incomplete refactorings detected in previous releases, and buggy classes identified in the history of previous bug reports. The obtained results on two industrial projects show significant improvements of the relevance of recommended refactorings, as evaluated by the original developers of the systems.
Marouane Kessentini, Troh Josselin Dea, Ali Ouni 0001
GECCO1
2017 Improving Web Services Design Quality Using Dimensionality Reduction Techniques
Marouane Kessentini
ICSOC2
2017 A Machine Learning-Based Approach to Detect Web Service Design Defects
abstract
Design defects are symptoms of poor design and implementation solutions adopted by developers during the development of their software systems. While the research community devoted a lot of effort to studying and devising approaches for detecting the traditional design defects in object-oriented (OO) applications, little knowledge and support is available for an emerging category of Web service interface design defects. Indeed, it has been shown that service designers and developers tend to pay little attention to their service interfaces design. Such design defects can be subjectively interpreted and hence detected in different ways. In this paper, we propose a novel approach, named WS3D, using machine learning techniques that combines Support Vector Machine (SVM) and Simulated Annealing (SA) to learn from real world examples of service design defects. WS3D has been empirically evaluated on a benchmark of Web services from 14 different application domains. We compared WS3D with the state-of-theart approaches which rely on traditional declarative techniques to detect service design defects by combining metrics and threshold values. Results show that WS3D outperforms the the compared approaches in terms of accuracy with a precision and recall scores of 91% and 94%, respectively.
Ali Ouni 0001, Marwa Daaji, Marouane Kessentini, Salah Bouktif, Mohamed Mohsen Gammoudi
ICWS3
2017 Web Service Interface Decomposition Using Formal Concept Analysis
abstract
In the service-oriented paradigm, Web service interfaces are considered contracts between Web service subscribers and providers. The structure of service interfaces has an extremely important role to discover, understand, and reuse Web services. However, it has been shown that service developers tend to pay little care to the design of their interfaces. A common design issue that often appears in real-world Web services is that their interfaces lack cohesion, i.e., they expose several operations that are often semantically unrelated. Such a bad design practice may significantly complicate the comprehension and reuse of the services functionalities and lead to several maintenance and evolution problems. In this paper, we propose a new approach for Web service interface decomposition using a Formal Concept Analysis (FCA) framework. The proposed FCA-based approach aims at identifying the hidden relationships among service operations in order to improve the interface modularity and usability. The relationships between operations are based on cohesion measures including semantic, sequential and communicational cohesion. The identified groups of semantically related operations having common properties are used to define new cohesive and loosely coupled service interfaces. We conducted a quantitative and qualitative empirical study to evaluate our approach on a benchmark of 26 real world Web services provided by Amazon and Yahoo. The obtained results show that our approach can significantly improve Web service interface design quality compared to state-of-the-art approaches.
Marwa Daaji, Ali Ouni 0001, Marouane Kessentini, Mohamed Mohsen Gammoudi, Salah Bouktif
ICWS3
2017 Detecting Refactorings among Multiple Web Service Releases: A Heuristic-Based Approach
abstract
A Web service interface is considered as a contract between Web service providers and their subscribers. The subscribers do not have access to the source code of the services but only to the interface containing a set of operations. However, the interface may change over time to meet new requirements. These changes affect the implementation of the subscribers' software. Thus, these clients need to understand the changes introduced to the previous releases of the Web services to co-evolve their own implementation to support the new release. Current studies are limited to the detection of only atomic changes (e.g. add and delete) and not able to detect complex/composite refactorings (merge operations, extract operation, etc.). In this paper, we propose to consider structural and textual similarities, based on a genetic algorithm, when analyzing the evolution of Web services to detect complex changes applied between multiple releases. The validation of our detection technique, on more than 110 releases of 6 real-world Web services, shows an average precision and recall respectively higher than 86% and 89%.
Marouane Kessentini
ICWS1
2017 Improving Web Services Design Quality Using Heuristic Search and Machine Learning
abstract
Web services evolve over time to fix bugs or update and add new features. However, the design of the Web service's interface may become more complex when aggregating many unrelated operations in terms of context and functionalities. A possible solution is to refactor the Web services interface into different modules that help the user quickly identifying relevant operations. The most challenging issue when refactoring a Web services interface is the high number of possible modularization solutions. The evaluation of these solutions is subjective and difficult to quantify. This paper introduces the use of a neural network-based evaluation function for the problem of Web services interface modularization. The users evaluate manually the suggested modularization solutions by a Genetic Algorithm (GA) for a number of iterations then an Artificial Neural Network (ANN) uses these training examples to evaluate the proposed Web services design changes for the remaining iterations. We evaluated the efficiency of our approach using a benchmark of 82 Web services from different domains and compared the performance of our technique with several existing Web services modularization studies in terms of generating well-designed Web services interface for users.
Marouane Kessentini, Troh Josselin Dea, Ali Ouni 0001
ICWS1
2017 On the Value of Quality of Service Attributes for Detecting Bad Design Practices
abstract
Service-Oriented Architectures (SOAs) successfully evolve over time to update existing exposed features to the users and fix possible bugs. This evolution process may have a negative impact on the design quality of Web services. Recent studies addressed the problem of Web service antipatterns detection (bad design practices). To the best of our knowledge, these studies focused only on the use of metrics extracted from the implementation details (source code) of the interface and the services. However, the quality of service (QoS) metrics, widely used to evaluate the overall performance, are never used in the context of Web service antipatterns detection. We start, in this work, from the hypothesis that these bad design practices may impact several QoS metrics such as the response time. Furthermore, the source code metrics of services may not be always available. Without the consideration of these QoS metrics, the current detection processes of antipatterns will still lack the integration of symptoms that could be extracted from the usage of services. In this paper, we propose an automated approach to generate Web service defect detection rules that consider not only the code/interface level metrics but also the quality of service attributes. Through multi-objective optimization, the proposed approach generates solutions (detection rules) that maximize the coverage of antipattern examples and minimize the coverage of well-designed service examples. An empirical validation is performed with eight different common types of Web design defects to evaluate our approach. We compared our results with three other state of the art techniques which are not using QoS metrics. The statistical analysis of the obtained results confirm that our approach outperforms other techniques and generates detection rules that are more meaningful from the services' user perspective.
Marouane Kessentini, Taghreed Hassouna, Ali Ouni 0001
ICWS2
2017 A guest editorial: special issue on search based software engineering and data mining
Marouane Kessentini, Tim Menzies
Autom. Softw. Eng.1
2017 Search-based detection of model level changes
Marouane Kessentini, Usman Mansoor, Manuel Wimmer, Ali Ouni 0001, Kalyanmoy Deb
Empir. Softw. Eng.1
2017 A robust multi-objective approach to balance severity and importance of refactoring opportunities
Mohamed Wiem Mkaouer, Marouane Kessentini, Mel Ó Cinnéide, Shinpei Hayashi, Kalyanmoy Deb
Empir. Softw. Eng.2
2017 Search-based software library recommendation using multi-objective optimization
Ali Ouni 0001, Raula Gaikovina Kula, Marouane Kessentini, Takashi Ishio, Daniel M. Germán, Katsuro Inoue
Inf. Softw. Technol.3
2017 MORE: A multi-objective refactoring recommendation approach to introducing design patterns and fixing code smells
abstract
Refactoring is widely recognized as a crucial technique applied when evolving object‐oriented software systems. If applied well, refactoring can improve different aspects of software quality including readability, maintainability, and extendibility. However, despite its importance and benefits, recent studies report that automated refactoring tools are underused much of the time by software developers. This paper introduces an automated approach for refactoring recommendation, called MORE, driven by 3 objectives: (1) to improve design quality (as defined by software quality metrics), (2) to fix code smells, and (3) to introduce design patterns. To this end, we adopt the recent nondominated sorting genetic algorithm, NSGA‐III, to find the best trade‐off between these 3 objectives. We evaluated the efficacy of our approach using a benchmark of 7 medium and large open‐source systems, 7 commonly occurring code smells (god class, feature envy, data class, spaghetti code, shotgun surgery, lazy class, and long parameter list), and 4 common design pattern types (visitor, factory method, singleton, and strategy). Our approach is empirically evaluated through a quantitative and qualitative study to compare it against 3 different state‐of‐the art approaches, 2 popular multiobjective search algorithms, and random search. The statistical analysis of the results confirms the efficacy of our approach in improving the quality of the studied systems while successfully fixing 84% of code smells and introducing an average of 6 design patterns. In addition, the qualitative evaluation shows that most of the suggested refactorings (an average of 69%) are considered by developers to be relevant and meaningful.
Ali Ouni 0001, Marouane Kessentini, Mel Ó Cinnéide, Houari Sahraoui, Kalyanmoy Deb, Katsuro Inoue
J. Softw. Evol. Process.2
2017 Multi-objective code-smells detection using good and bad design examples
Usman Mansoor, Marouane Kessentini, Bruce R. Maxim, Kalyanmoy Deb
Softw. Qual. J.2
2017 Multi-view refactoring of class and activity diagrams using a multi-objective evolutionary algorithm
Usman Mansoor, Marouane Kessentini, Manuel Wimmer, Kalyanmoy Deb
Softw. Qual. J.2
2017 Search-Based Web Service Antipatterns Detection
abstract
Service Oriented Architecture (SOA) is widely used in industry and is regarded as one of the preferred architectural design technologies. As with any other software system, service-based systems (SBSs) may suffer from poor design, i.e., antipatterns, for many reasons such as poorly planned changes, time pressure or bad design choices. Consequently, this may lead to an SBS product that is difficult to evolve and that exhibits poor quality of service (QoS). Detecting web service antipatterns is a manual, time-consuming and error-prone process for software developers. In this paper, we propose an automated approach for detection of web service antipatterns using a cooperative parallel evolutionary algorithm (P-EA). The idea is that several detection methods are combined and executed in parallel during an optimization process to find a consensus regarding the identification of web service antipatterns. We report the results of an empirical study using eight types of common web service antipatterns. We compare the implementation of our cooperative P-EA approach with random search, two single population-based approaches and one state-of-the-art detection technique not based on heuristic search. Statistical analysis of the obtained results demonstrates that our approach is efficient in antipattern detection, with a precision score of 89 percent and a recall score of 93 percent.
Ali Ouni 0001, Marouane Kessentini, Katsuro Inoue, Mel Ó Cinnéide
IEEE Trans. Serv. Comput.2
2017 Model Transformation Modularization as a Many-Objective Optimization Problem
abstract
Model transformation programs are iteratively refined, restructured, and evolved due to many reasons such as fixing bugs and adapting existing transformation rules to new metamodels version. Thus, modular design is a desirable property for model transformations as it can significantly improve their evolution, comprehensibility, maintainability, reusability, and thus, their overall quality. Although language support for modularization of model transformations is emerging, model transformations are created as monolithic artifacts containing a huge number of rules. To the best of our knowledge, the problem of automatically modularizing model transformation programs was not addressed before in the current literature. These programs written in transformation languages, such as ATL, are implemented as one main module including a huge number of rules. To tackle this problem and improve the quality and maintainability of model transformation programs, we propose an automated search-based approach to modularize model transformations based on higher-order transformations. Their application and execution is guided by our search framework which combines an in-place transformation engine and a search-based algorithm framework. We demonstrate the feasibility of our approach by using ATL as concrete transformation language and NSGA-III as search algorithm to find a trade-off between different well-known conflicting design metrics for the fitness functions to evaluate the generated modularized solutions. To validate our approach, we apply it to a comprehensive dataset of model transformations. As the study shows, ATL transformations can be modularized automatically, efficiently, and effectively by our approach. We found that, on average, the majority of recommended modules, for all the ATL programs, by NSGA-III are considered correct with more than 84 percent of precision and 86 percent of recall when compared to manual solutions provided by active developers. The statistical analysis of our experiments over several runs shows that NSGA-III performed significantly better than multi-objective algorithms and random search. We were not able to compare with existing model transformations modularization approaches since our study is the first to address this problem. The software developers considered in our experiments confirm the relevance of the recommended modularization solutions for several maintenance activities based on different scenarios and interviews.
Martin Fleck, Javier Troya, Marouane Kessentini, Manuel Wimmer, Bader Alkhazi
IEEE Trans. Software Eng.3
2016 Prediction of Web Services Evolution
Marouane Kessentini, Ali Ouni 0001
ICSOC2
2016 Bi-level Identification of Web Service Defects
Marouane Kessentini, Ali Ouni 0001
ICSOC2
2016 Identification of Web Service Refactoring Opportunities as a Multi-objective Problem
abstract
We propose, in this paper, to consider the problemof Web service antipatterns detection as a multi-objectiveproblem where examples of Web service antipatterns and welldesignedcode are used to generate detection rules. To thisend, we use multi-objective genetic programming (MOGP)to find the best combination of metrics that maximizes thedetection of Web service antipattern examples and minimizesthe detection of well-designed Web service design examples. We report the results of an empirical study using 8 differenttypes of common Web service antipatterns. We compared ourmulti-objective formulation with random search, one existingmono-objective approach, and one state-of-the-art detectiontechnique not based on heuristic search. Statistical analysis ofthe obtained results demonstrates that our approach is efficientin antipattern detection, on average, with a precision score of94% and a recall score of 92%.
Ali Ouni 0001, Marouane Kessentini, Bruce R. Maxim, William I. Grosky
ICWS3
2016 Recommending relevant classes for bug reports using multi-objective search
abstract
Developers may follow a tedious process to find the cause of a bug based on code reviews and reproducing the abnormal behavior. In this paper, we propose an automated approach to finding and ranking potential classes with the respect to the probability of containing a bug based on a bug report description. Our approach finds a good balance between minimizing the number of recommended classes and maximizing the relevance of the proposed solution using a multi-objective optimization algorithm. The relevance of the recommended classes (solution) is estimated based on the use of the history of changes and bug-fixing, and the lexical similarity between the bug report description and the API documentation. We evaluated our system on 6 open source Java projects, using the version of the project before fixing the bug of many bug reports. The experimental results show that the search-based approach significantly outperforms three state-of-the-art methods in recommending relevant files for bug reports. In particular, our multi-objective approach is able to successfully locate the true buggy methods within the top 10 recommendations for over 87% of the bug reports.
Rafi Almhana, Mohamed Wiem Mkaouer, Marouane Kessentini, Ali Ouni 0001
ASE3
2016 Automated refactoring of ATL model transformations: a search-based approach
Bader Alkhazi, Terry Ruas, Marouane Kessentini, Manuel Wimmer, William I. Grosky
MoDELS3
2016 A guest editorial: special section on search-based software engineering
Marouane Kessentini, Günther Ruhe
Empir. Softw. Eng.1
2016 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
Empir. Softw. Eng.2
2016 Introduction to the special issue on search-based software engineering (NasBASE 2015)
abstract
Peer Reviewed
Marouane Kessentini, Mel Ó Cinnéide
J. Softw. Evol. Process.1
2016 On the use of design defect examples to detect model refactoring opportunities
Adnane Ghannem, Ghizlane El-Boussaidi, Marouane Kessentini
Softw. Qual. J.3
2016 Multi-Criteria Code Refactoring Using Search-Based Software Engineering: An Industrial Case Study
abstract
One of the most widely used techniques to improve the quality of existing software systems is refactoring—the process of improving the design of existing code by changing its internal structure without altering its external behavior. While it is important to suggest refactorings that improve the quality and structure of the system, many other criteria are also important to consider, such as reducing the number of code changes, preserving the semantics of the software design and not only its behavior, and maintaining consistency with the previously applied refactorings. In this article, we propose a multi-objective search-based approach for automating the recommendation of refactorings. The process aims at finding the optimal sequence of refactorings that (i) improves the quality by minimizing the number of design defects, (ii) minimizes code changes required to fix those defects, (iii) preserves design semantics, and (iv) maximizes the consistency with the previously code changes. We evaluated the efficiency of our approach using a benchmark of six open-source systems, 11 different types of refactorings (move method, move field, pull up method, pull up field, push down method, push down field, inline class, move class, extract class, extract method, and extract interface) and six commonly occurring design defect types (blob, spaghetti code, functional decomposition, data class, shotgun surgery, and feature envy) through an empirical study conducted with experts. In addition, we performed an industrial validation of our technique, with 10 software engineers, on a large project provided by our industrial partner. We found that the proposed refactorings succeed in preserving the design coherence of the code, with an acceptable level of code change score while reusing knowledge from recorded refactorings applied in the past to similar contexts.
Ali Ouni 0001, Marouane Kessentini, Houari Sahraoui, Katsuro Inoue, Kalyanmoy Deb
ACM Trans. Softw. Eng. Methodol.2
2015 Web Service Antipatterns Detection Using Genetic Programming
abstract
Service-Oriented Architecture (SOA) is an emerging paradigm that has radically changed the way software applications are architected, designed and implemented. SOA allows developers to structure their systems as a set of ready-made, reusable and compostable services. The leading technology used today for implementing SOA is Web Services. Indeed, like all software, Web services are prone to change constantly to add new user requirements or to adapt to environment changes. Poorly planned changes may risk introducing antipatterns into the system. Consequently, this may ultimately leads to a degradation of software quality, evident by poor quality of service (QoS). In this paper, we introduce an automated approach to detect Web service antipatterns using genetic programming. Our approach consists of using knowledge from real-world examples of Web service antipatterns to generate detection rules based on combinations of metrics and threshold values. We evaluate our approach on a benchmark of 310 Web services and a variety of five types of Web service antipatterns. The statistical analysis of the obtained results provides evidence that our approach is efficient to detect most of the existing antipatterns with a score of 85% of precision and 87% of recall.
Ali Ouni 0001, Raula Gaikovina Kula, Marouane Kessentini, Katsuro Inoue
GECCO3
2015 On the use of time series and search based software engineering for refactoring recommendation
abstract
To improve the quality of software systems, one of the widely used techniques is refactoring, defined as the process of improving the design of an existing system by changing its internal structure without altering the external behavior. The majority of existing refactoring works do not consider the impact of recommended refactorings on the quality of future releases of a system. In this paper, we propose to combine the use of search-based software engineering with time series to recommend good refactoring strategies in order to manage technical debt. We used a multi-objective algorithm to generate refactoring solutions that maximize the correction of important quality issues and minimize the effort. For these two fitness functions, we adapted time series forecasting to estimate the impact of the generated refactorings solution on future next releases of the system by predicting the evolution of the remaining code smells in the system, after refactoring, using different quality metrics. We evaluated our approach on one industrial project and a benchmark of 4 open source systems. The results confirm the efficiency of our technique to provide better refactoring management comparing to several existing refactoring techniques.
Marouane Kessentini, William I. Grosky, Haythem Meddeb
MEDES2
2015 Improving multi-objective code-smells correction using development history
Ali Ouni 0001, Marouane Kessentini, Houari Sahraoui, Katsuro Inoue, Mohamed Salah Hamdi
J. Syst. Softw.2
2015 MOMM: Multi-objective model merging
Usman Mansoor, Marouane Kessentini, Philip Langer, Manuel Wimmer, Slim Bechikh, Kalyanmoy Deb
J. Syst. Softw.2
2015 Model transformation testing: a bi-level search-based software engineering approach
abstract
The process of writing model transformations is a complex and error-prone one. Thus, efficient techniques and tools for validating model transformations are needed. One of them is model transformation testing. The generation of test cases for model transformations is mainly based on metamodel and rules coverage criteria. In this paper, we propose to treat model transformation testing as a bi-level optimization problem to combine the generation of test cases with mutation testing. In our adaptation, the upper-level problem generates a set of test cases that maximizes the coverage of metamodels and errors introduced by the lower level to the transformation rules. The lower level maximizes the number of generated errors in the rules that cannot be detected by the test cases produced by the upper level. The main advantage of our bi-level formulation is that the evaluation of test cases is not limited to the coverage of metamodels, but it allows evaluating their ability to detect errors. The statistical analysis of our experiments on different transformation mechanisms confirms the outperformance of our bi-level proposal compared with state-of-the-art model transformation testing techniques. Copyright © 2015 John Wiley & Sons, Ltd.
Dilan Sahin, Marouane Kessentini, Manuel Wimmer, Kalyanmoy Deb
J. Softw. Evol. Process.2
2015 Prioritizing code-smells correction tasks using chemical reaction optimization
Ali Ouni 0001, Marouane Kessentini, Slim Bechikh, Houari Sahraoui
Softw. Qual. J.2
2015 Many-Objective Software Remodularization Using NSGA-III
abstract
Software systems nowadays are complex and difficult to maintain due to continuous changes and bad design choices. To handle the complexity of systems, software products are, in general, decomposed in terms of packages/modules containing classes that are dependent. However, it is challenging to automatically remodularize systems to improve their maintainability. The majority of existing remodularization work mainly satisfy one objective which is improving the structure of packages by optimizing coupling and cohesion. In addition, most of existing studies are limited to only few operation types such as move class and split packages. Many other objectives, such as the design semantics, reducing the number of changes and maximizing the consistency with development change history, are important to improve the quality of the software by remodularizing it. In this article, we propose a novel many-objective search-based approach using NSGA-III. The process aims at finding the optimal remodularization solutions that improve the structure of packages, minimize the number of changes, preserve semantics coherence, and reuse the history of changes. We evaluate the efficiency of our approach using four different open-source systems and one automotive industry project, provided by our industrial partner, through a quantitative and qualitative study conducted with software engineers.
Mohamed Wiem Mkaouer, Marouane Kessentini, Adnan Shaout, Patrice Koligheu, Slim Bechikh, Kalyanmoy Deb, Ali Ouni 0001
ACM Trans. Softw. Eng. Methodol.2
2014 High dimensional search-based software engineering: finding tradeoffs among 15 objectives for automating software refactoring using NSGA-III
abstract
There is a growing need for scalable search-based software engineering approaches that address software engineering problems where a large number of objectives are to be optimized. Software refactoring is one of these problems where a refactoring sequence is sought that optimizes several software metrics. Most of the existing refactoring work uses a large set of quality metrics to evaluate the software design after applying refactoring operations, but current search-based software engineering approaches are limited to using a maximum of five metrics. We propose for the first time a scalable search-based software engineering approach based on a newly proposed evolutionary optimization method NSGA-III where there are 15 different objectives to be optimized. In our approach, automated refactoring solutions are evaluated using a set of 15 distinct quality metrics. We evaluated this approach on seven large open source systems and found that, on average, more than 92% of code smells were corrected. Statistical analysis of our experiments over 31 runs shows that NSGA-III performed significantly better than two other many-objective techniques (IBEA and MOEA/D), a multi-objective algorithm (NSGA-II) and two mono-objective approaches, hence demonstrating that our NSGA-III approach represents the new state of the art in fully-automated refactoring.
Mohamed Wiem Mkaouer, Marouane Kessentini, Slim Bechikh, Kalyanmoy Deb, Mel Ó Cinnéide
GECCO2
2014 Recommendation system for software refactoring using innovization and interactive dynamic optimization
abstract
We propose a novel recommendation tool for software refactoring that dynamically adapts and suggests refactorings to developers interactively based on their feedback and introduced code changes. Our approach starts by finding upfront a set of non-dominated refactoring solutions using NSGA-II to improve software quality, reduce the number of refactorings and increase semantic coherence. The generated non-dominated refactoring solutions are analyzed using our innovization component to extract some interesting common features between them. Based on this analysis, the suggested refactorings are ranked and suggested to the developer one by one. The developer can approve, modify or reject each suggested refactoring, and this feedback is used to update the ranking of the suggested refactorings. After a number of introduced code changes, a local search is performed to update and adapt the set of refactoring solutions suggested by NSGA-II. We evaluated this tool on four large open source systems and one industrial project provided by our partner. Statistical analysis of our experiments over 31 runs shows that the dynamic refactoring approach performed significantly better than three other search-based refactoring techniques, manual refactorings, and one refactoring tool not based on heuristic search.
Mohamed Wiem Mkaouer, Marouane Kessentini, Slim Bechikh, Kalyanmoy Deb, Mel Ó Cinnéide
ASE2
2014 On the Use of Machine Learning and Search-Based Software Engineering for Ill-Defined Fitness Function: A Case Study on Software Refactoring
Boukhdhir Amal, Marouane Kessentini, Slim Bechikh, Troh Josselin Dea, Lamjed Ben Said
SSBSE2
2014 A Robust Multi-objective Approach for Software Refactoring under Uncertainty
Mohamed Wiem Mkaouer, Marouane Kessentini, Slim Bechikh, Mel Ó Cinnéide
SSBSE2
2014 Search-based metamodel matching with structural and syntactic measures
Marouane Kessentini, Ali Ouni 0001, Philip Langer, Manuel Wimmer, Slim Bechikh
J. Syst. Softw.1
2014 Model refactoring using examples: a search-based approach
abstract
ABSTRACT One of the important challenges in model‐driven engineering is how to improve the quality of the models' design in order to help designers understand them. Refactoring represents an efficient technique to improve the quality of a design while preserving its behavior. Most of existing work on model refactoring relies on declarative rules to detect refactoring opportunities and to apply the appropriate refactorings. However, a complete specification of refactoring opportunities requires a huge number of rules. In this paper, we consider the refactoring mechanism as a combinatorial optimization problem where the goal is to find good refactoring suggestions starting from a small set of refactoring examples applied to similar contexts. Our approach, named model refactoring by example, takes as input an initial model to refactor, a set of structural metrics calculated on both initial model and models in the base of examples, and a base of refactoring examples extracted from different software systems and generates as output a sequence of refactorings. A solution is defined as a combination of refactoring operations that should maximize as much as possible the structural similarity based on metrics between the initial model and the models in the base of examples. A heuristic method is used to explore the space of possible refactoring solutions. To this end, we used and adapted a genetic algorithm as a global heuristic search. The validation results on different systems of real‐world models taken from open‐source projects confirm the effectiveness of our approach. Copyright © 2014 John Wiley & Sons, Ltd.
Adnane Ghannem, Ghizlane El-Boussaidi, Marouane Kessentini
J. Softw. Evol. Process.3
2014 Code-Smell Detection as a Bilevel Problem
abstract
Code smells represent design situations that can affect the maintenance and evolution of software. They make the system difficult to evolve. Code smells are detected, in general, using quality metrics that represent some symptoms. However, the selection of suitable quality metrics is challenging due to the absence of consensus in identifying some code smells based on a set of symptoms and also the high calibration effort in determining manually the threshold value for each metric. In this article, we propose treating the generation of code-smell detection rules as a bilevel optimization problem. Bilevel optimization problems represent a class of challenging optimization problems, which contain two levels of optimization tasks. In these problems, only the optimal solutions to the lower-level problem become possible feasible candidates to the upper-level problem. In this sense, the code-smell detection problem can be treated as a bilevel optimization problem, but due to lack of suitable solution techniques, it has been attempted to be solved as a single-level optimization problem in the past. In our adaptation here, the upper-level problem generates a set of detection rules, a combination of quality metrics, which maximizes the coverage of the base of code-smell examples and artificial code smells generated by the lower level. The lower level maximizes the number of generated artificial code smells that cannot be detected by the rules produced by the upper level. The main advantage of our bilevel formulation is that the generation of detection rules is not limited to some code-smell examples identified manually by developers that are difficult to collect, but it allows the prediction of new code-smell behavior that is different from those of the base of examples. The statistical analysis of our experiments over 31 runs on nine open-source systems and one industrial project shows that seven types of code smells were detected with an average of more than 86% in terms of precision and recall. The results confirm the outperformance of our bilevel proposal compared to state-of-art code-smell detection techniques. The evaluation performed by software engineers also confirms the relevance of detected code smells to improve the quality of software systems.
Dilan Sahin, Marouane Kessentini, Slim Bechikh, Kalyanmoy Deb
ACM Trans. Softw. Eng. Methodol.2
2014 A Cooperative Parallel Search-Based Software Engineering Approach for Code-Smells Detection
abstract
We propose in this paper to consider code-smells detection as a distributed optimization problem. The idea is that different methods are combined in parallel during the optimization process to find a consensus regarding the detection of code-smells. To this end, we used Parallel Evolutionary algorithms (P-EA) where many evolutionary algorithms with different adaptations (fitness functions, solution representations, and change operators) are executed, in a parallel cooperative manner, to solve a common goal which is the detection of code-smells. An empirical evaluation to compare the implementation of our cooperative P-EA approach with random search, two single population-based approaches and two code-smells detection techniques that are not based on meta-heuristics search. The statistical analysis of the obtained results provides evidence to support the claim that cooperative P-EA is more efficient and effective than state of the art detection approaches based on a benchmark of nine large open source systems where more than 85 percent of precision and recall scores are obtained on a variety of eight different types of code-smells.
Wael Kessentini, Marouane Kessentini, Houari Sahraoui, Slim Bechikh, Ali Ouni 0001
IEEE Trans. Software Eng.2
2013 Search-based model merging
abstract
In Model-Driven Engineering (MDE) adequate means for collaborative modeling among multiple team members is crucial for large projects. To this end, several approaches exist to identify the operations applied in parallel, to detect conflicts among them, as well as to construct a merged model by incorporating all non-conflicting operations. Conflicts often denote situations where the application of one operation disables the applicability of another operation. Whether one operation disables the other, however, often depends on their application order. To obtain a merged model that maximizes the combined effect of all parallel operations, we propose an automated approach for finding the optimal merging sequence that maximizes the number of successfully applied operations. Therefore, we adapted and used a heuristic search algorithm to explore the huge search space of all possible operation sequences. The validation results on merging various versions of real-world models confirm that our approach finds operation sequences that successfully incorporate a high number of conflicting operations, which are otherwise not reflected in the merge by current approaches.
Marouane Kessentini, Wafa Werda, Philip Langer, Manuel Wimmer
GECCO1
2013 The use of development history in software refactoring using a multi-objective evolutionary algorithm
abstract
One of the widely used techniques for evolving software systems is refactoring, a maintenance activity that improves design structure while preserving the external behavior. Exploring past maintenance and development history can be an effective way of finding refactoring opportunities. Code elements which undergo changes in the past, at approximately the same time, bear a good probability for being semantically related. Moreover, these elements that experienced a huge number of refactoring in the past have a good chance for refactoring in the future. In addition, the development history can be used to propose new refactoring solutions in similar contexts. In this paper, we propose a multi-objective optimization-based approach to find the best sequence of refactorings that minimizes the number of bad-smells, and maximizes the use of development history and semantic coherence. To this end, we use the non-dominated sorting genetic algorithm (NSGA-II) to find the best trade-off between these three objectives. We report the results of our experiments using different large open source projects.
Ali Ouni 0001, Marouane Kessentini, Houari Sahraoui, Mohamed Salah Hamdi
GECCO2
2013 On the Influence of the Number of Objectives in Evolutionary Autonomous Software Agent Testing
abstract
Autonomous software agents are increasingly used in a wide range of applications. Thus, testing these entities is extremely crucial. However, testing autonomous agents is still a hard task since they may react in different manners for the same input over time. To address this problem, Nguyen et al. [6] have introduced the first approach that uses evolutionary optimization to search for challenging test cases. In this paper, we extend this work by studying experimentally the effect of the number of objectives on the obtained test cases. This is achieved by proposing five additional objectives and solving the new obtained problem by means of a Preference-based Many-Objective Evolutionary Testing (P-MOET) method. The obtained results show that the hardness of test cases increases with the rise of the number of objectives.
Sabrine Kalboussi, Slim Bechikh, Marouane Kessentini, Lamjed Ben Said
ICTAI3
2013 Competitive Coevolutionary Code-Smells Detection
Mohamed Boussaa, Wael Kessentini, Marouane Kessentini, Slim Bechikh, Soukeina Ben Chikha
SSBSE3
2013 Model Refactoring Using Interactive Genetic Algorithm
Adnane Ghannem, Ghizlane El-Boussaidi, Marouane Kessentini
SSBSE3
2013 Preference-Based Many-Objective Evolutionary Testing Generates Harder Test Cases for Autonomous Agents
Sabrine Kalboussi, Slim Bechikh, Marouane Kessentini, Lamjed Ben Said
SSBSE3
2013 Search-Based Refactoring Detection Using Software Metrics Variation
Rim Mahouachi, Marouane Kessentini, Mel Ó Cinnéide
SSBSE2
2013 Regression Testing for Model Transformations: A Multi-objective Approach
Jeffery Shelburg, Marouane Kessentini, Daniel R. Tauritz
SSBSE2
2013 Maintainability defects detection and correction: a multi-objective approach
Ali Ouni 0001, Marouane Kessentini, Houari Sahraoui, Mounir Boukadoum
Autom. Softw. Eng.2
2013 What you like in design use to correct bad-smells
Marouane Kessentini, Rim Mahouachi, Khaled Ghédira
Softw. Qual. J.1
2012 A New Design Defects Classification: Marrying Detection and Correction
Rim Mahouachi, Marouane Kessentini, Khaled Ghédira
FASE2
2012 Search-based detection of high-level model changes
abstract
Software models are iteratively refined, restructured and evolved. The detection and analysis of changes applied between two versions of a model are one of the most important tasks during evolution and maintenance activities. In this paper, we propose an approach to detect high-level model changes in terms of refactorings. Our approach takes as input an exhaustive list of possible refactorings, the initial model and revised model, and generates as output a list of detected changes representing a sequence of refactorings. A solution is defined as a combination of refactorings that should maximize as much as possible the similarity between the expected revised model and the generated model after applying the refactoring sequence on the initial model. Due to the huge number of possible refactoring combinations, a heuristic method is used to explore the space of possible solutions. To this end, we used and adapted genetic algorithm as global heuristic search. The validation results on various versions of real-world models taken from an open source project confirm the effectiveness of our approach.
Ameni ben Fadhel, Marouane Kessentini, Philip Langer, Manuel Wimmer
ICSM2
2012 Search-based refactoring: Towards semantics preservation
abstract
Refactoring restructures a program to improve its structure without altering its behavior. However, it is challenging to preserve the domain semantics of a program when refactoring is decided/implemented automatically. Indeed, a program could be syntactically correct, have the right behavior, but model incorrectly the domain semantics. In this paper, we propose a multi-objective optimization approach to find the best sequence of refactorings that maximizes quality improvements (program structure) and minimizes semantic errors. To this end, we use the non-dominated sorting genetic algorithm (NSGA-II) to find the best compromise between these two conflicting objectives. We report the results of our experiments on different open source projects.
Ali Ouni 0001, Marouane Kessentini, Houari Sahraoui, Mohamed Salah Hamdi
ICSM2
2012 Search-based model transformation by example
Marouane Kessentini, Houari Sahraoui, Mounir Boukadoum, Omar Benomar
Softw. Syst. Model.1
2011 Search-Based Design Defects Detection by Example
Marouane Kessentini, Houari Sahraoui, Mounir Boukadoum, Manuel Wimmer
FASE1
2011 Design Defects Detection and Correction by Example
abstract
Detecting and fixing defects make programs easier to understand by developers. We propose an automated approach for the detection and correction of various types of design defects in source code. Our approach allows to automatically find detection rules, thus relieving the designer from doing so manually. Rules are defined as combinations of metrics/thresholds that better conform to known instances of design defects (defect examples). The correction solutions, a combination of refactoring operations, should minimize, as much as possible, the number of defects detected using the detection rules. In our setting, we use genetic programming for rule extraction. For the correction step, we use genetic algorithm. We evaluate our approach by finding and fixing potential defects in four open-source systems. For all these systems, we found, in average, more than 80% of known defects, a better result when compared to a state-of-the-art approach, where the detection rules are manually or semi-automatically specified. The proposed corrections fix, in average, more than 78%of detected defects.
Marouane Kessentini, Wael Kessentini, Houari Sahraoui, Mounir Boukadoum, Ali Ouni 0001
ICPC1
2011 Example-based model-transformation testing
Marouane Kessentini, Houari Sahraoui, Mounir Boukadoum
Autom. Softw. Eng.1
2010 Example-Based Sequence Diagrams to Colored Petri Nets Transformation Using Heuristic Search
Marouane Kessentini, Arbi Bouchoucha, Houari Sahraoui, Mounir Boukadoum
ECMFA1
2010 Deviance from perfection is a better criterion than closeness to evil when identifying risky code
abstract
We propose an approach for the automatic detection of potential design defects in code. The detection is based on the notion that the more code deviates from good practices, the more likely it is bad. Taking inspiration from artificial immune systems, we generated a set of detectors that characterize different ways that a code can diverge from good practices. We then used these detectors to measure how far code in assessed systems deviates from normality.
Marouane Kessentini, Stéphane Vaucher, Houari Sahraoui
ASE1
2008 Model Transformation as an Optimization Problem
Marouane Kessentini, Houari Sahraoui, Mounir Boukadoum
MoDELS1