287 research outputs found
Using Program Slicing to Identify Faults in Software
This study explores the relationship between program slices and faults. The aim is to investigate whether the characteristics of program slices can be used to identify fault-prone software components. Slicing metrics and dependence clusters are used to characterise the slicing profile of a software component, then the relationship between the slicing profile of the component and the faults in that component are then analysed. Faults can increase the likelihood of a system becoming unstable causing problems for the development and evolution of the system. Identifying faultprone components is difficult and reliable predictors of faultproneness not easily identifiable. Program slicing is an established software engineering technique for the detection and correction of specific faults. An investigation is carried out into whether the use of program slicing can be extended as a reliable tool to predict fault-prone software components. Preliminary results are promising suggesting that slicing may offer valuable insights into fault-proneness
Moving beyond Deletions: Program Simplification via Diverse Program Transformations
To reduce the complexity of software, Developers manually simplify program
(known as developer-induced program simplification in this paper) to reduce its
code size yet preserving its functionality but manual simplification is
time-consuming and error-prone. To reduce manual effort, rule-based approaches
(e.g., refactoring) and deletion-based approaches (e.g., delta debugging) can
be potentially applied to automate developer-induced program simplification.
However, as there is little study on how developers simplify programs in
Open-source Software (OSS) projects, it is unclear whether these approaches can
be effectively used for developer-induced program simplification. Hence, we
present the first study of developer-induced program simplification in OSS
projects, focusing on the types of program transformations used, the
motivations behind simplifications, and the set of program transformations
covered by existing refactoring types. Our study of 382 pull requests from 296
projects reveals that there exist gaps in applying existing approaches for
automating developer-induced program simplification. and outlines the criteria
for designing automatic program simplification techniques. Inspired by our
study and to reduce the manual effort in developer-induced program
simplification, we propose SimpT5, a tool that can automatically produce
simplified programs (semantically-equivalent programs with reduced source lines
of code). SimpT5 is trained based on our collected dataset of 92,485 simplified
programs with two heuristics: (1) simplified line localization that encodes
lines changed in simplified programs, and (2)checkers that measure the quality
of generated programs. Our evaluation shows that SimpT5 are more effective than
prior approaches in automating developer-induced program simplification
5G Multi-access Edge Computing: Security, Dependability, and Performance
The main innovation of the Fifth Generation (5G) of mobile networks is the
ability to provide novel services with new and stricter requirements. One of
the technologies that enable the new 5G services is the Multi-access Edge
Computing (MEC). MEC is a system composed of multiple devices with computing
and storage capabilities that are deployed at the edge of the network, i.e.,
close to the end users. MEC reduces latency and enables contextual information
and real-time awareness of the local environment. MEC also allows cloud
offloading and the reduction of traffic congestion. Performance is not the only
requirement that the new 5G services have. New mission-critical applications
also require high security and dependability. These three aspects (security,
dependability, and performance) are rarely addressed together. This survey
fills this gap and presents 5G MEC by addressing all these three aspects.
First, we overview the background knowledge on MEC by referring to the current
standardization efforts. Second, we individually present each aspect by
introducing the related taxonomy (important for the not expert on the aspect),
the state of the art, and the challenges on 5G MEC. Finally, we discuss the
challenges of jointly addressing the three aspects.Comment: 33 pages, 11 figures, 15 tables. This paper is under review at IEEE
Communications Surveys & Tutorials. Copyright IEEE 202
Network Service Orchestration: A Survey
Business models of network service providers are undergoing an evolving
transformation fueled by vertical customer demands and technological advances
such as 5G, Software Defined Networking~(SDN), and Network Function
Virtualization~(NFV). Emerging scenarios call for agile network services
consuming network, storage, and compute resources across heterogeneous
infrastructures and administrative domains. Coordinating resource control and
service creation across interconnected domains and diverse technologies becomes
a grand challenge. Research and development efforts are being devoted to
enabling orchestration processes to automate, coordinate, and manage the
deployment and operation of network services. In this survey, we delve into the
topic of Network Service Orchestration~(NSO) by reviewing the historical
background, relevant research projects, enabling technologies, and
standardization activities. We define key concepts and propose a taxonomy of
NSO approaches and solutions to pave the way towards a common understanding of
the various ongoing efforts around the realization of diverse NSO application
scenarios. Based on the analysis of the state of affairs, we present a series
of open challenges and research opportunities, altogether contributing to a
timely and comprehensive survey on the vibrant and strategic topic of network
service orchestration.Comment: Accepted for publication at Computer Communications Journa
Reproducing Failures in Fault Signatures
Software often fails in the field, however reproducing and debugging field
failures is very challenging: the failure-inducing input may be missing, and
the program setup can be complicated and hard to reproduce by the developers.
In this paper, we propose to generate fault signatures from the failure
locations and the original source code to reproduce the faults in small
executable programs. We say that a fault signature reproduces the fault in the
original program if the two failed in the same location, triggered the same
error conditions after executing the same selective sequences of
failure-inducing statements. A fault signature aims to contain only sufficient
statements that can reproduce the faults. That way, it provides some context to
inform how a fault is developed and also avoids unnecessary complexity and
setups that may block fault diagnosis. To compute fault signatures from the
failures, we applied a path-sensitive static analysis tool to generate a path
that leads to the fault, and then applied an existing syntactic patching tool
to convert the path into an executable program. Our evaluation on real-world
bugs from Corebench, BugBench, and Manybugs shows that fault signatures can
reproduce the fault for the original programs. Because fault signatures are
less complex, automatic test input generation tools generated failure-inducing
inputs that could not be generated by using the entire programs. Some
failure-inducing inputs can be directly transferred to the original programs.
Our experimental data are publicly available at
https://doi.org/10.5281/zenodo.5430155
Metamorphic testing: a review of challenges and opportunities
Metamorphic testing is an approach to both test case generation and test result verification. A central element is a set of metamorphic relations, which are necessary properties of the target function or algorithm in relation to multiple inputs and their expected outputs. Since its first publication, we have witnessed a rapidly increasing body of work examining metamorphic testing from various perspectives, including metamorphic relation identification, test case generation, integration with other software engineering techniques, and the validation and evaluation of software systems. In this paper, we review the current research of metamorphic testing and discuss the challenges yet to be addressed. We also present visions for further improvement of metamorphic testing and highlight opportunities for new research
- …