266 citations · 415 across the 20 of their papers we have counts for
19 papers · 1 filter
On the Rationale and Use of Assertion Messages in Test Code: Insights from Software Practitioners
Anthony Peruma, Taryn Takebayashi, Rocky Huang +4
Unit testing is an important practice that helps ensure the quality of a software system by validating its behavior through a series of test cases. Core to these test cases are ass…
Do the Test Smells Assertion Roulette and Eager Test Impact Students' Troubleshooting and Debugging Capabilities?
Wajdi Aljedaani, Mohamed Wiem Mkaouer, Anthony Peruma +1
To ensure the quality of a software system, developers perform an activity known as unit testing, where they write code (known as test cases) that verifies the individual software…
An Exploratory Study on the Usage and Readability of Messages Within Assertion Methods of Test Cases
Taryn Takebayashi, Anthony Peruma, Mohamed Wiem Mkaouer +1
Unit testing is a vital part of the software development process and involves developers writing code to verify or assert production code. Furthermore, to help comprehend the test…
On the Use of Static Analysis to Engage Students with Software Quality Improvement: An Experience with PMD
Eman Abdullah AlOmar, Salma Abdullah AlOmar, Mohamed Wiem Mkaouer
Static analysis tools are frequently used to scan the source code and detect deviations from the project coding guidelines. Given their importance, linters are often introduced to…
Finding the Needle in a Haystack: On the Automatic Identification of Accessibility User Reviews
Eman Abdullah AlOmar, Wajdi Aljedaani, Murtaza Tamjeed +2
In recent years, mobile accessibility has become an important trend with the goal of allowing all users the possibility of using any app without many limitations. User reviews incl…
An Ensemble Approach for Annotating Source Code Identifiers with Part-of-speech Tags
Christian D. Newman, Michael J. Decker, Reem S. AlSuhaibani +7
This paper presents an ensemble part-of-speech tagging approach for source code identifiers. Ensemble tagging is a technique that uses machine-learning and the output from multiple…
On Preserving the Behavior in Software Refactoring: A Systematic Mapping Study
Eman Abdullah AlOmar, Mohamed Wiem Mkaouer, Christian Newman +1
Context: Refactoring is the art of modifying the design of a system without altering its behavior. The idea is to reorganize variables, classes and methods to facilitate their futu…
One Thousand and One Stories: A Large-Scale Survey of Software Refactoring
Yaroslav Golubev, Zarina Kurbatova, Eman Abdullah AlOmar +2
Despite the availability of refactoring as a feature in popular IDEs, recent studies revealed that developers are reluctant to use them, and still prefer the manual refactoring of…
SATDBailiff- Mining and Tracking Self-Admitted Technical Debt
Eman Abdullah AlOmar, Ben Christians, Mihal Busho +4
Self-Admitted Technical Debt (SATD) is a metaphorical concept to describe the self-documented addition of technical debt to a software project in the form of source code comments.…
Test Smell Detection Tools: A Systematic Mapping Study
Wajdi Aljedaani, Anthony Peruma, Ahmed Aljohani +6
Test smells are defined as sub-optimal design choices developers make when implementing test cases. Hence, similar to code smells, the research community has produced numerous test…
Using Grammar Patterns to Interpret Test Method Name Evolution
Anthony Peruma, Emily Hu, Jiajun Chen +3
It is good practice to name test methods such that they are comprehensible to developers; they must be written in such a way that their purpose and functionality are clear to those…
Refactoring Practices in the Context of Modern Code Review: An Industrial Case Study at Xerox
Eman Abdullah AlOmar, Hussein AlRubaye, Mohamed Wiem Mkaouer +2
Modern code review is a common and essential practice employed in both industrial and open-source projects to improve software quality, share knowledge, and ensure conformance with…
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 +3
Refactoring is the art of improving the design of a system without altering its external behavior. Refactoring has become a well established and disciplined software engineering pr…
Toward the Automatic Classification of Self-Affirmed Refactoring
Eman Abdullah AlOmar, Mohamed Wiem Mkaouer, Ali Ouni
The concept of Self-Affirmed Refactoring (SAR) was introduced to explore how developers document their refactoring activities in commit messages, i.e., developers' explicit documen…
On the Generation, Structure, and Semantics of Grammar Patterns in Source Code Identifiers
Christian D. Newman, Reem S. AlSuhaibani, Michael J. Decker +4
Identifiers make up a majority of the text in code. They are one of the most basic mediums through which developers describe the code they create and understand the code that other…
Many-Objective Software Remodularization using NSGA-III
Mohamed Wiem Mkaouer, Marouane Kessentini, Adnan Shaout +4
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 gen…
MigrationMiner: An Automated Detection Tool of Third-Party Java Library Migration at the Method Level
Hussein Alrubaye, Mohamed Wiem Mkaouer, Ali Ouni
In this paper we introduce, MigrationMiner, an automated tool that detects code migrations performed between Java third-party library. Given a list of open source projects, the too…
Do Design Metrics Capture Developers Perception of Quality? An Empirical Study on Self-Affirmed Refactoring Activities
Eman Abdullah AlOmar, Mohamed Wiem Mkaouer, Ali Ouni +1
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…
On the Use of Information Retrieval to Automate the Detection of Third-Party Java Library Migration at the Method Level
Hussein Alrubaye, Mohamed Wiem Mkaouer, Ali Ouni
The migration process between different third-party libraries is hard, complex and error-prone. Typically, during a library migration, developers need to find methods in the new li…