Hannes Thaller

SE
h-index3
5papers
18citations
Novelty63%
AI Score25

5 Papers

5.3SEAug 11, 2020
Semantic Clone Detection via Probabilistic Software Modeling

Hannes Thaller, Lukas Linsbauer, Alexander Egyed

Semantic clone detection is the process of finding program elements with similar or equal runtime behavior. For example, detecting the semantic equality between the recursive and iterative implementation of the factorial computation. Semantic clone detection is the de facto technical boundary of clone detectors. In recent years, this boundary has been tested using interesting new approaches. This article contributes a semantic clone detection approach that detects clones that have 0% syntactic similarity. We present Semantic Clone Detection via Probabilistic Software Modeling (SCD-PSM) as a stable and precise solution to semantic clone detection. PSM builds a probabilistic model of a program that is capable of evaluating and generating runtime data. SCD-PSM leverages this model and its model elements for finding behaviorally equal model elements. This behavioral equality is then generalized to semantic equality of the original program elements. It uses the likelihood between model elements as a distance metric. Then, it employs the likelihood ratio significance test to decide whether this distance is significant, given a pre-specified and controllable false-positive rate. The output of SCD-PSM are pairs of program elements (i.e., methods), their distance, and a decision on whether they are clones or not. SCD-PSM yields excellent results with a Matthews Correlation Coefficient greater than 0.9. These results are obtained on classical semantic clone detection problems such as detecting recursive and iterative versions of an algorithm, but also on complex problems used in coding competitions.

5.3SEJan 21, 2020
Towards Fault Localization via Probabilistic Software Modeling

Hannes Thaller, Lukas Linsbauer, Alexander Egyed et al.

Software testing helps developers to identify bugs. However, awareness of bugs is only the first step. Finding and correcting the faulty program components is equally hard and essential for high-quality software. Fault localization automatically pinpoints the location of an existing bug in a program. It is a hard problem, and existing methods are not yet precise enough for widespread industrial adoption. We propose fault localization via Probabilistic Software Modeling (PSM). PSM analyzes the structure and behavior of a program and synthesizes a network of Probabilistic Models (PMs). Each PM models a method with its inputs and outputs and is capable of evaluating the likelihood of runtime data. We use this likelihood evaluation to find fault locations and their impact on dependent code elements. Results indicate that PSM is a robust framework for accurate fault localization.

7.3SEJan 21, 2020
Towards Semantic Clone Detection via Probabilistic Software Modeling

Hannes Thaller, Lukas Linsbauer, Alexander Egyed

Semantic clones are program components with similar behavior, but different textual representation. Semantic similarity is hard to detect, and semantic clone detection is still an open issue. We present semantic clone detection via Probabilistic Software Modeling (PSM) as a robust method for detecting semantically equivalent methods. PSM inspects the structure and runtime behavior of a program and synthesizes a network of Probabilistic Models (PMs). Each PM in the network represents a method in the program and is capable of generating and evaluating runtime events. We leverage these capabilities to accurately find semantic clones. Results show that the approach can detect semantic clones in the complete absence of syntactic similarity with high precision and low error rates.

8.5SEDec 17, 2019
Probabilistic Software Modeling: A Data-driven Paradigm for Software Analysis

Hannes Thaller, Lukas Linsbauer, Rudolf Ramler et al.

Software systems are complex, and behavioral comprehension with the increasing amount of AI components challenges traditional testing and maintenance strategies.The lack of tools and methodologies for behavioral software comprehension leaves developers to testing and debugging that work in the boundaries of known scenarios. We present Probabilistic Software Modeling (PSM), a data-driven modeling paradigm for predictive and generative methods in software engineering. PSM analyzes a program and synthesizes a network of probabilistic models that can simulate and quantify the original program's behavior. The approach extracts the type, executable, and property structure of a program and copies its topology. Each model is then optimized towards the observed runtime leading to a network that reflects the system's structure and behavior. The resulting network allows for the full spectrum of statistical inferential analysis with which rich predictive and generative applications can be built. Applications range from the visualization of states, inferential queries, test case generation, and anomaly detection up to the stochastic execution of the modeled system. In this work, we present the modeling methodologies, an empirical study of the runtime behavior of software systems, and a comprehensive study on PSM modeled systems. Results indicate that PSM is a solid foundation for structural and behavioral software comprehension applications.

4.9SEJun 23, 2018
Probabilistic Software Modeling

Hannes Thaller

Software Engineering and the implementation of software has become a challenging task as many tools, frameworks and languages must be orchestrated into one functioning piece. This complexity increases the need for testing and analysis methodologies that aid the developers and engineers as the software grows and evolves. The amount of resources that companies budget for testing and analysis is limited, highlighting the importance of automation for economic software development. We propose Probabilistic Software Modeling, a new paradigm for software modeling that builds on the fact that software is an easy-to-monitor environment from which statistical models can be built. Probabilistic Software Modeling provides increased comprehension for engineers without changing the level of abstraction. The approach relies on the recursive decomposition principle of object-oriented programming to build hierarchies of probabilistic models that are fitted via observations collected at runtime of a software system. This leads to a network of models that mirror the static structure of the software system while modeling its dynamic runtime behavior. The resulting models can be used in applications such as test-case generation, anomaly and outlier detection, probabilistic program simulation, or state predictions. Ideally, probabilistic software modeling allows the use of the entire spectrum of statistical modeling and inference for software, enabling in-depth analysis and generative procedures for software.