SAT-Based Extraction of Behavioural Models for Java Libraries with Collections

05/30/2022
by   Larisa Safina, et al.
0

Behavioural models are a valuable tool for software verification, testing, monitoring, publishing etc. However, they are rarely provided by the software developers and have to be extracted either from the source or from the compiled code. In the context of Java programs, a number of approaches exist for building behavioural models. Most of these approaches rely on the analysis of the compiled bytecode. Instead, we are looking to extract behavioural models in the form of Finite State Machines (FSMs) from the Java source code to ensure that the obtained FSMs can be easily understood by the software developers and, if necessary, updated or integrated into the original source code, e.g. in the form of annotations. Modern software systems are huge, rely on external libraries and interact with their environment. Hence, extracting useful behavioural models requires abstraction. In this paper, we present an initial approach to this problem by focusing on the extraction of FSMs modelling library APIs. We focus on the analysis of Java code involving the use of collections. To this end, we encode the operational semantics of collection operations using patterns of Boolean predicates. These patterns are instantiated based on the analysis of the source code of API implementation methods to form an encoding of the possible FSM transitions. A SAT solver is then used to determine the enabledness conditions (guards) of these transitions.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
04/29/2019

A Framework for Debugging Java Programs in a Bytecode

In the domain of Software Engineering, program analysis and understandin...
research
04/06/2020

Embedding Java Classes with code2vec: Improvements from Variable Obfuscation

Automatic source code analysis in key areas of software engineering, suc...
research
04/25/2023

Automatic Extraction of Security-Rich Dataflow Diagrams for Microservice Applications written in Java

Dataflow diagrams (DFDs) are a valuable asset for securing applications,...
research
09/30/2022

Towards effective assessment of steady state performance in Java software: Are we there yet?

Microbenchmarking is a widely used form of performance testing in Java s...
research
12/20/2017

Kayak: Safe Semantic Refactoring to Java Streams

Refactorings are structured changes to existing software that leave its ...
research
02/14/2020

Sub-method, partial behavioral reflection with Reflectivity: Looking back on 10 years of use

Context. Refining or altering existing behavior is the daily work of eve...
research
09/26/2022

Towards Data-driven GIM tools: Two Prototypes

Here we describe two approaches to improve group information management ...

Please sign up or login with your details

Forgot password? Click here to reset