Papers by Qusay Idrees Sarhan
2023 IEEE Conference on Software Testing, Verification and Validation (ICST)

The IDE - ICSE, 2024
Spectrum-Based Fault Localization (SBFL) is a technique to be used during debugging, the premise ... more Spectrum-Based Fault Localization (SBFL) is a technique to be used during debugging, the premise of which is that, based on the test case outcomes and code coverage, faulty code elements can be automatically detected. SBFL is popular among researchers because it is lightweight and easy to implement, and there is a lot of potential in it when it comes to research that aims to improve its effectiveness. Despite this, the technique cannot be found in contemporary development and debugging tools, only a handful of research prototypes are available. Reasons for this can be multiple, including the algortihms' sub-optimal effectiveness and other technical weaknesses. But, also the lack of clear functional and non-functional requirements for such a tool, either standalone or integrated into IDEs. In this paper, we attempt to provide such a list in form of recommendations, based on surveying the most popular SBFL tools and on our own researchers' and tool builders' experience.

International Conference on Computer Science and Software Engineering (CSASE), 2022
The Internet of Things (IoT) is a new technological trend involved in many of our day-to-day acti... more The Internet of Things (IoT) is a new technological trend involved in many of our day-to-day activities, and its applications cover many aspects of our lives, including healthcare, military, industry, etc. Therefore, testing IoT applications, services, and systems is crucial to avoid losses in resources and lives, especially in critical application domains. This paper presents a survey on IoT testing and its types. Each testing type is briefly introduced in many cases with its main challenges and possible solutions. Thus, it contributes to the understanding of IoT testing along with the significant efforts introduced in this regard. Furthermore, it provides several directions that need more attention from academia and industry. Several publications on the topic were gathered, read, and analyzed to achieve the aforementioned goals.

IEEE Access, 2022
In software debugging, fault localization is the most difficult, expensive, tedious, and timecons... more In software debugging, fault localization is the most difficult, expensive, tedious, and timeconsuming task, particularly for large-scale software systems. This is due to the fact that it requires significant human participation and it is difficult to automate its sub-tasks. Therefore, there is a high demand for automatic fault localization techniques that can help software engineers effectively find the locations of faults with minimal human intervention. This has led to the proposal of implementing different types of such techniques. However, Spectrum Based Fault Localization (SBFL) is considered amongst the most prominent techniques in this respect due to its efficiency and effectiveness. In SBFL, the probability of each program element (e.g., statement, block, or function) being faulty is calculated based on the results of executing test cases and their corresponding code coverage information. However, SBFL techniques are not yet widely adopted in the industry. The rationale behind this is that they pose a number of issues and their performance is affected by several influential factors. For example, the characteristics of bugs, target programs, test suites, and supporting tools make their effectiveness differ dramatically from one case to another. There are massive studies on SBFL that cover its usage, formulas, performance, etc. So far, no dedicated survey points out comprehensively the issues of SBFL. In this paper, various SBFL challenges and issues have been identified, categorized, and discussed alongside many directions. Also, the paper raises awareness of the works being achieved to address the identified issues and suggests some potential solutions too.

Academic Journal of Nawroz University, 2021
Java is one of the most demanding programming languages nowadays and it is used for developing a ... more Java is one of the most demanding programming languages nowadays and it is used for developing a wide range of software applications including desktop, mobile, embedded, and web applications. Writing efficient Java codes for those various types of applications (which some are critical and time-sensitive) is crucial and recommended best practices that every Java developer should consider. To date, there is a lack of in-depth experimental studies in the literature that evaluate the impact of writing efficient Java programming strategies on the performance of desktop applications in terms of runtime. Thus, this paper aims to perform a variety of experimental tests that have been carefully chosen and implemented to evaluate the most important aspects of desktop efficient Java programming in terms of runtime. The results of this study show that significant performance improvements can be achieved by applying different programming strategies.

IEEE Transactions on Software Engineering
Software module clustering is an unsupervised learning method used to cluster software entities (... more Software module clustering is an unsupervised learning method used to cluster software entities (e.g., classes, modules, or files) with similar features. The obtained clusters may be used to study, analyze, and understand the software entities' structure and behavior. Implementing software module clustering with optimal results is challenging. Accordingly, researchers have addressed many aspects of software module clustering in the past decade. Thus, it is essential to present the research evidence that has been published in this area. In this study, 143 research papers from well-known literature databases that examined software module clustering were reviewed to extract useful data. The obtained data were then used to answer several research questions regarding state-of-the-art clustering approaches, applications of clustering in software engineering, clustering processes, clustering algorithms, and evaluation methods. Several research gaps and challenges in software module clustering are discussed in this paper to provide a useful reference for researchers in this field.

IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2021), 2021
Fault localization is one of the most time-consuming and error-prone parts of software debugging.... more Fault localization is one of the most time-consuming and error-prone parts of software debugging. There are several tools for helping developers in the fault localization process, however, they mostly target programs written in Java and C/C++ programming languages. While these tools are splendid on their own, we must not look over the fact that Python is a popular programming language, and still there are a lack of easy-touse and handy fault localization tools for Python developers. In this paper, we present a tool called "CharmFL" for software fault localization as a plug-in for PyCharm IDE. The tool employs Spectrum-based fault localization (SBFL) to help Python developers automatically analyze their programs and generate useful data at run-time to be used, then to produce a ranked list of potentially faulty program elements (i.e., statements, functions, and classes). Thus, our proposed tool supports different code coverage types with the possibility to investigate these types in a hierarchical approach. The applicability of our tool has been presented by using a set of experimental use cases. The results show that our tool could help developers to efficiently find the locations of different types of faults in their programs.

IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2021), 2021
In Spectrum-Based Fault Localization (SBFL), a suspiciousness score is assigned to each code elem... more In Spectrum-Based Fault Localization (SBFL), a suspiciousness score is assigned to each code element based on test coverage and test outcomes. The scores are then used to rank the code elements relative to each other in order to aid the programmer during the debugging process when seeking the source of a fault. However, probably none of the known SBFL formulae are guaranteed to produce different scores for all the program elements, hence ties emerge between the code elements. Based on our experiments, ties in SBFL are prevalent: in Defects4J, 54-56% of buggy methods are members of ties, i.e., there is at least one other method with the same score in these cases (but typically much more, on average 6), and this inevitably reduces the effectiveness of any SBFL approach. In this work, we present a technique to break ties in such cases based on the so-called method calls frequencies. This counts the number of different contexts of method calls (both as callees and as callers) in failing test cases. The intuition is that if a method appears in many different calling contexts during a failing test case, it will be more suspicious and get a higher rank position compared to other methods with the same scores. This method can be applied to any underlying SBFL formula, and can favourably break the occurring ranks in the ties in many cases. The experimental results show that our novel tie-breaking strategy achieved a significant reduction in both size and number of critical ties in our benchmark. In 72-73% of the cases, the ties were completely eliminated and the average reduction rate was more than 80%.

Journal of Cloud Computing: Advances, Systems and Applications, 2021
Serverless computing has gained importance over the last decade as an exciting new field, owing t... more Serverless computing has gained importance over the last decade as an exciting new field, owing to its large influence in reducing costs, decreasing latency, improving scalability, and eliminating server-side management, to name a few. However, to date there is a lack of in-depth survey that would help developers and researchers better understand the significance of serverless computing in different contexts. Thus, it is essential to present research evidence that has been published in this area. In this systematic survey, 275 research papers that examined serverless computing from well-known literature databases were extensively reviewed to extract useful data. Then, the obtained data were analyzed to answer several research questions regarding state-of-the-art contributions of serverless computing, its concepts, its platforms, its usage, etc. We moreover discuss the challenges that serverless computing faces nowadays and how future research could enable its implementation and usage.

IEEE 21st International Arab Conference on Information Technology (ACIT), 2021
The technological revolution of the Internet of Things (IoT) increased the number of objects (e.g... more The technological revolution of the Internet of Things (IoT) increased the number of objects (e.g., vehicles) connected to the Internet, making our lives easier, safer, and smarter. Putting IoT objects on the wheel has created a new technology called the Internet of Vehicle (IoV). The massive progress in communication and computing concepts brought the IoV to real implementation. The IoV is the advanced version of Vehicular Ad hoc Network (VANET), mainly designed to provide safe driving. Although the number of vehicles connected to the IoV keeps growing, there are various challenges and opportunities of the IoV technology that are still not clear. In this paper, several research papers related to the IoV were examined to identify and categorize the existing challenges of implementing and employing IoV in urban cities. Furthermore, this work outlines the IoV technical limitations that must be addressed. Moreover, various existing and future solutions that tackle the identified challenges were briefly discussed.

2020 International Conference on Computer Science and Software Engineering (CSASE), 2020
With the growing usage and migration of interactive applications and systems into today's environ... more With the growing usage and migration of interactive applications and systems into today's environment, the significance of the graphical user interfaces (GUIs) increases as they act as the gates into using systems efficiently. Therefore, extensive efforts are spent to enhance the usability of the GUIs. However, most of the works focus on testing the functional properties of applications' GUIs rather than nonfunctional features such as performance. For this reason, it is worthwhile to assess the performance of various GUI components at runtime. In this paper, the most popular programming languages used to create GUI based applications namely, Java and C# were compared experimentally to evaluate their performance in terms of the creation and manipulation of GUI components/controls. The experimental results of this study, which is based on 32 testing scenarios, showed that Java outperformed C# in all test scenarios. This might be because of the “HotSpot” performance engine that Java uses. This study is useful for developers to get insights into the performance of different GUI components provided by different programming languages. Also, it helps them to choose the right programming language for their GUI based applications hence enhance the overall applications' performance and user satisfaction.
2020 International Conference on Computer Science and Software Engineering (CSASE), 2020
Smart home systems have gained importance nowadays owing to the various applications they provide... more Smart home systems have gained importance nowadays owing to the various applications they provide to the users. Applications of smart home systems cover many aspects of our daily life and help to reduce the cost of living via controlling and managing home appliances as an example. Currently, there are a huge number of studies on smart home systems; these studies mostly cover smart home visions, enabling technologies, etc. So far, a limited number of surveys point out, comprehensively, the applications and services of smart home systems. This paper presents a survey on smart home applications alongside many directions. The applications are classified into many categories each with a brief discussion on its purpose, advantages, and limitations.

2020 IEEE 6th International Conference on Control Science and Systems Engineering (ICCSSE), 2020
The need for smart home warning systems is in high demand nowadays as they are used to warn owner... more The need for smart home warning systems is in high demand nowadays as they are used to warn owners about undesired situations that could happen while they are far away from their homes. This paper aims to present the design and implementation of an Arduino based smart home warning system. In this system, Arduino Uno microcontroller has been used with several compatible sensors (DHT22, MQ2, and camera), actuators (buzzer and relays with attached water valve, air fan, and light bulb), and GSM as a wireless communication medium to enable the interaction between users and the proposed system. The experimental results of using the proposed system show that a variety of undesired events can be detected efficiently. Fire, gas leakage, and housebreaking situations can be detected and users get notified about them via SMS messages, emails with attached pictures, etc. Besides, some proper actions can also be performed by the proposed system including stopping fire via water and decreasing gas concentration via air ventilation. The proposed system is very useful to prevent losses in resources and human life caused by unwanted events.

IEEE Access, 2020
Smart home safety and security systems have gained much importance over the last few years owing ... more Smart home safety and security systems have gained much importance over the last few years owing to their notable impact in reducing and preventing losses in resources and human life caused by unwanted situations that could occur while homeowners are far away from their homes. To date, there is a lack of an in-depth literature analysis that could help researchers and developers better understand these systems and their applications in different contexts. It is therefore crucial that research evidence published in this area is presented. In this study, 63 research papers that examined smart home safety and security systems using the Arduino platform from popular literature databases were thoroughly surveyed to extract useful data. Then, the extracted data were analyzed to answer many research questions concerning state-of-the-art applications of these systems, their architectures, their enabling technologies, their components, etc. In addition, several challenges that these systems currently face and how future research could enable better implementation and use of these systems were discussed.
Journal of Duhok University, 2019
Writing good software is not an easy task, it requires a lot of coding experience and skills. The... more Writing good software is not an easy task, it requires a lot of coding experience and skills. Therefore, inexperienced software developers or newbies suffer from this critical task. In this paper, we provide guidelines to help in this important context. It presents the most important best practices and recommendations of writing good software from software engineering perspective regardless of the software domain (whether for desktop, mobile, web, or embedded), software size, and software complexity. The best practices provided in this paper are organized in taxonomy of many categories to ease the process of considering them while developing software. Furthermore, many useful, practical, and actionable recommendations are given mostly in each category to be considered by software developers.

Innovaciencia, 2018
Introduction: With the rapid deployment of embedded databases
across a wide range of embedded dev... more Introduction: With the rapid deployment of embedded databases
across a wide range of embedded devices such as mobile devices, Internet
of Things (IoT) devices, etc., the amount of data generated by such
devices is also growing increasingly. For this reason, the performance
is considered as a crucial criterion in the process of selecting the most
suitable embedded database management system to be used to store/
retrieve data of these devices. Currently, many embedded databases are
available to be utilized in this context. Materials and Methods: In this
paper, four popular open-source relational embedded databases; namely,
H2, HSQLDB, Apache Derby, and SQLite have been compared experimentally
with each other to evaluate their operational performance
in terms of creating database tables, retrieving data, inserting data, updating data, deleting data. Results and Discussion: The experimental
results of this paper have been illustrated in Table 4. Conclusions: The
experimental results and analysis showed that HSQLDB outperformed
other databases in most evaluation scenarios.

Innovaciencia, 2018
Introduction: Lists are used in various software applications including
web applications, desktop... more Introduction: Lists are used in various software applications including
web applications, desktop applications, and Internet of Things (IoT)
applications to store different types of items (e.g. country name, product
model, and device category). Users can select one or more of these
items to perform specific tasks such as filling forms, ordering products,
reading device data, etc. In some software applications, lists store a huge
number of items to be iterated over in order to know what users have
selected. From a software development perspective, there are a number
of methods to iterate over list items. Materials and Methods: In this
paper, five list iteration methods: Classic For, Enhanced For, Iterator,
List Iterator, and For Each have been compared experimentally with
each other with regard to their performance (execution time required
to iterate over list items). Thus, a number of experimental test scenarios
have been conducted to obtain the comparison results. Results and
Discussion: The experimental results of this study have been presented
in Table 4. Conclusions: Overall performance evaluation showed
that Iterator and List Iterator methods outperformed other list iteration
methods in all test scenarios. However, List Iterator outperformed Iterator when the list size was small. On the other hand, Iterator outperformed List Iterator when the list size was large.

Software integration is a crucial aspect of collaborative software applications and systems. It e... more Software integration is a crucial aspect of collaborative software applications and systems. It enables a number of different software applications, created by different developers, using different programming languages, and even located at different places to work with each other collaboratively to achieve common goals. Nowadays, a number of techniques are available to enable software integration. Messaging is the most prominent technique in this respect. In this paper, two leading open-source messaging brokers, Apache ActiveMQ and Apache Apollo, have been experimentally compared with each other with regard to their messaging capabilities (message sending and receiving throughputs). Both brokers support exchanging messages between heterogeneous and distributed software applications using several messaging mechanisms including Java Message Service (henceforth JMS). A number of experimental test scenarios have been conducted to obtain the comparison results that indicate the one-to-one JMS messaging performance of each broker. Overall performance evaluation and analysis showed that Apache Apollo outperformed Apache ActiveMQ in all test scenarios regarding message sending throughputs. Whereas, Apache ActiveMQ outperformed Apache Apollo in most test scenarios regarding message receiving throughputs. Moreover, the evaluation methodology (test conditions, test scenarios, and test metrics) proposed in this paper has been carefully chosen to be adopted by software developers to evaluate other messaging brokers to determine the acceptable level of messaging capabilities in distributed environments of heterogeneous software applications.

Software components that rely on the Internet in order to be accessed and used cover many aspects... more Software components that rely on the Internet in order to be accessed and used cover many aspects of our daily activities including email checking, weather checking, purchase ordering, and Facebook logging. Nowadays, these components are considered one of the most valuable and fundamental rights in human's life. However, accessing and using the functionality of such components are performed using two techniques: web applications or traditional web services. Determining which one of the techniques is better suited for delivering the functionality of an Internet-based software component is not an easy task to decide. Therefore, this paper aimed to make a comparative analysis and study of both techniques alongside many directions to help web developers make the right choice to deliver the functionality of Internet-based software components. This is achieved by providing them with a set of requirements that have been proposed by the authors. The proposed requirements clarify a number of misunderstandings and issues peculiar to both techniques. Furthermore, this paper has provided a comparative table of both techniques. To the best of our knowledge, so far there is no comprehensive comparative study has been conducted in this context which was the rationale for the authors to carry out this study.

Internet of things (IoT) is the promising and future internet. The IoT is a network of connected ... more Internet of things (IoT) is the promising and future internet. The IoT is a network of connected sensors, actuators, and everyday objects that are used in various domains, such as healthcare, airports, and military. As it connects everything around us to the internet, the IoT poses a number of severe challenges and issues as compared to the conventional internet. Currently, there are massive studies on the IoT, these studies mostly cover IoT vision, enabling technologies, applications, or services. So far, a limited number of surveys point out comprehensively the challenges and issues of the IoT which considered unique to this future internet and which must be faced and tackled by different research communities. In this paper, well-known IoT challenges and issues (e.g., reliable cooperation, standards, protocols, operational, data, and software) have been surveyed alongside many directions. Furthermore, the paper also raises awareness of work being achieved across a number of research communities to help whoever decided to approach this hot discipline in order to contribute to its development. He has a couple of national and international publications and his research interests include software engineering, web services and technologies, wireless sensor networks, internet of things, distributed computing and systems.
Uploads
Papers by Qusay Idrees Sarhan
across a wide range of embedded devices such as mobile devices, Internet
of Things (IoT) devices, etc., the amount of data generated by such
devices is also growing increasingly. For this reason, the performance
is considered as a crucial criterion in the process of selecting the most
suitable embedded database management system to be used to store/
retrieve data of these devices. Currently, many embedded databases are
available to be utilized in this context. Materials and Methods: In this
paper, four popular open-source relational embedded databases; namely,
H2, HSQLDB, Apache Derby, and SQLite have been compared experimentally
with each other to evaluate their operational performance
in terms of creating database tables, retrieving data, inserting data, updating data, deleting data. Results and Discussion: The experimental
results of this paper have been illustrated in Table 4. Conclusions: The
experimental results and analysis showed that HSQLDB outperformed
other databases in most evaluation scenarios.
web applications, desktop applications, and Internet of Things (IoT)
applications to store different types of items (e.g. country name, product
model, and device category). Users can select one or more of these
items to perform specific tasks such as filling forms, ordering products,
reading device data, etc. In some software applications, lists store a huge
number of items to be iterated over in order to know what users have
selected. From a software development perspective, there are a number
of methods to iterate over list items. Materials and Methods: In this
paper, five list iteration methods: Classic For, Enhanced For, Iterator,
List Iterator, and For Each have been compared experimentally with
each other with regard to their performance (execution time required
to iterate over list items). Thus, a number of experimental test scenarios
have been conducted to obtain the comparison results. Results and
Discussion: The experimental results of this study have been presented
in Table 4. Conclusions: Overall performance evaluation showed
that Iterator and List Iterator methods outperformed other list iteration
methods in all test scenarios. However, List Iterator outperformed Iterator when the list size was small. On the other hand, Iterator outperformed List Iterator when the list size was large.
across a wide range of embedded devices such as mobile devices, Internet
of Things (IoT) devices, etc., the amount of data generated by such
devices is also growing increasingly. For this reason, the performance
is considered as a crucial criterion in the process of selecting the most
suitable embedded database management system to be used to store/
retrieve data of these devices. Currently, many embedded databases are
available to be utilized in this context. Materials and Methods: In this
paper, four popular open-source relational embedded databases; namely,
H2, HSQLDB, Apache Derby, and SQLite have been compared experimentally
with each other to evaluate their operational performance
in terms of creating database tables, retrieving data, inserting data, updating data, deleting data. Results and Discussion: The experimental
results of this paper have been illustrated in Table 4. Conclusions: The
experimental results and analysis showed that HSQLDB outperformed
other databases in most evaluation scenarios.
web applications, desktop applications, and Internet of Things (IoT)
applications to store different types of items (e.g. country name, product
model, and device category). Users can select one or more of these
items to perform specific tasks such as filling forms, ordering products,
reading device data, etc. In some software applications, lists store a huge
number of items to be iterated over in order to know what users have
selected. From a software development perspective, there are a number
of methods to iterate over list items. Materials and Methods: In this
paper, five list iteration methods: Classic For, Enhanced For, Iterator,
List Iterator, and For Each have been compared experimentally with
each other with regard to their performance (execution time required
to iterate over list items). Thus, a number of experimental test scenarios
have been conducted to obtain the comparison results. Results and
Discussion: The experimental results of this study have been presented
in Table 4. Conclusions: Overall performance evaluation showed
that Iterator and List Iterator methods outperformed other list iteration
methods in all test scenarios. However, List Iterator outperformed Iterator when the list size was small. On the other hand, Iterator outperformed List Iterator when the list size was large.