11 research outputs found
Towards optimal concolic testing
ACM Distinguished Paper Award</p
How software engineering research aligns with design science: A review
Background: Assessing and communicating software engineering research can be
challenging. Design science is recognized as an appropriate research paradigm
for applied research but is seldom referred to in software engineering.
Applying the design science lens to software engineering research may improve
the assessment and communication of research contributions. Aim: The aim of
this study is 1) to understand whether the design science lens helps summarize
and assess software engineering research contributions, and 2) to characterize
different types of design science contributions in the software engineering
literature. Method: In previous research, we developed a visual abstract
template, summarizing the core constructs of the design science paradigm. In
this study, we use this template in a review of a set of 38 top software
engineering publications to extract and analyze their design science
contributions. Results: We identified five clusters of papers, classifying them
according to their alignment with the design science paradigm. Conclusions: The
design science lens helps emphasize the theoretical contribution of research
output---in terms of technological rules---and reflect on the practical
relevance, novelty, and rigor of the rules proposed by the research.Comment: 32 pages, 10 figure
sFuzz: An efficient adaptive fuzzer for solidity smart contracts
Ministry of Education, Singapore under its Academic Research Funding Tier
Recovering fitness gradients for interprocedural Boolean flags in search-based testing
National Research Foundation (NRF) Singapore under Corp Lab @ University scheme; National Research Foundation (NRF) Singapore under its NSoE Programm
SymFusion: Hybrid Instrumentation for Concolic Execution
Concolic execution is a dynamic twist of symbolic execution de-
signed with scalability in mind. Recent concolic executors heavily
rely on program instrumentation to achieve such scalability. The
instrumentation code can be added at compilation time (e.g., using
an LLVM pass), or directly at execution time with the help of a
dynamic binary translator. The former approach results in more ef-
ficient code but requires recompilation. Unfortunately, recompiling
the entire code of a program is not always feasible or practical (e.g.,
in presence of third-party components). On the contrary, the latter
approach does not require recompilation but incurs significantly
higher execution time overhead.
In this paper, we investigate a hybrid instrumentation approach
for concolic execution, called SymFusion. In particular, this hybrid
instrumentation approach allows the user to recompile the core
components of an application, thus minimizing the analysis over-
head on them, while still being able to dynamically instrument the
rest of the application components at execution time. Our experi-
mental evaluation shows that our design can achieve a nice balance
between efficiency and efficacy on several real-world application
Concolic testing for deep neural networks
This is the author accepted manuscript. The final version is available from ACM via the DOI in this recordConcolic testing combines program execution and symbolic analysis to explore the execution paths of a software program. This paper presents the first concolic testing approach for Deep Neural Networks (DNNs). More specifically, we formalise coverage criteria for DNNs that have been studied in the literature, and then develop a coherent method for performing concolic testing to increase test coverage. Our experimental results show the effectiveness of the concolic testing approach in both achieving high coverage and finding adversarial examples