Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Sven Amann

dblp:145/7707 · DBLP profile ↗
← Back
14ranked-venue papers
5as first author
0since 2021 · last 2020
0000-0003-2952-0475ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 13 · 5 first-authorDatabases, data management, data science and information retrieval · 4 · 2 first-authorSecurity and privacy · 1

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
6 papers
Software maintenance and evolution · 34% Empirical software engineering · 24% Programming languages and type systems · 20%
Network and information security
1 paper
Web and mobile security · 87% Systems and software security · 13%

Topics — the 13 heaviest of 15, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Software maintenance and evolution
program comprehension
0.522017
On the Positive Effect of Reactive Programming on Software Comprehension: An Empirical Study · IEEE Trans. Software Eng. 2017
An empirical study on program comprehension with reactive programming · SIGSOFT FSE 2014
Programming languages and type systems › programming paradigms
reactive programming
0.522017
On the Positive Effect of Reactive Programming on Software Comprehension: An Empirical Study · IEEE Trans. Software Eng. 2017
An empirical study on program comprehension with reactive programming · SIGSOFT FSE 2014
Program analysis › error detection
API misuse detection
0.412019
A Systematic Evaluation of Static API-Misuse Detectors · IEEE Trans. Software Eng. 2019
Empirical software engineering
developer studies
0.412019
Developer Testing in the IDE: Patterns, Beliefs, and Behavior · IEEE Trans. Software Eng. 2019
Software testing
test-driven development
0.412019
Developer Testing in the IDE: Patterns, Beliefs, and Behavior · IEEE Trans. Software Eng. 2019
Web and mobile security
mobile security
0.312017
CodeMatch: obfuscation won't conceal your repackaged app · ESEC/SIGSOFT FSE 2017
Web and mobile security › mobile security
repackaged app detection
0.312017
CodeMatch: obfuscation won't conceal your repackaged app · ESEC/SIGSOFT FSE 2017
Empirical software engineering
controlled experiment
0.312017
On the Positive Effect of Reactive Programming on Software Comprehension: An Empirical Study · IEEE Trans. Software Eng. 2017
Software maintenance and evolution › software ecosystems
library identification
0.312017
CodeMatch: obfuscation won't conceal your repackaged app · ESEC/SIGSOFT FSE 2017
Programming languages and type systems
programming paradigms
0.312017
On the Positive Effect of Reactive Programming on Software Comprehension: An Empirical Study · IEEE Trans. Software Eng. 2017
Software maintenance and evolution
software ecosystems
0.312017
CodeMatch: obfuscation won't conceal your repackaged app · ESEC/SIGSOFT FSE 2017
Software maintenance and evolution
code recommendation
0.212016
Evaluating the evaluations of code recommender systems: a reality check · ASE 2016
Software testing › test infrastructure
benchmark construction
0.112019
A Systematic Evaluation of Static API-Misuse Detectors · IEEE Trans. Software Eng. 2019

Methods — techniques the papers use, named apart from their topics

library code removal · 0.6fuzzy hashing · 0.6bytecode abstraction · 0.6empirical study · 0.5static analysis · 0.4root cause analysis · 0.4field study · 0.4classification · 0.4IDE instrumentation · 0.4IDE interaction mining · 0.2
YearPublicationVenuePosition
2020 Hidden in Plain Sight: Obfuscated Strings Threatening Your Privacy
abstract
String obfuscation is an established technique used by proprietary, closed-source applications to protect intellectual property. Furthermore, it is also frequently used to hide spyware or malware in applications. In both cases, the techniques range from bit-manipulation over XOR operations to AES encryption. However, string obfuscation techniques/tools suffer from one shared weakness: They generally have to embed the necessary logic to deobfuscate strings into the app code. In this paper, we show that most of the string obfuscation techniques found in malicious and benign applications for Android can easily be broken in an automated fashion. We developed StringHound, an open-source tool that uses novel techniques that identify obfuscated strings and reconstruct the originals using slicing. We evaluated StringHound on both benign and malicious Android apps. In summary, we deobfuscate almost 30 times more obfuscated strings than other string deobfuscation tools. Additionally, we analyzed 100,000 Google Play Store apps and found multiple obfuscated strings that hide vulnerable cryptographic usages, insecure internet accesses, API keys, hard-coded passwords, and exploitation of privileges without the awareness of the developer. Furthermore, our analysis reveals that not only malware uses string obfuscation but also benign apps make extensive use of string obfuscation.
Leonid Glanz, Lars Baumgärtner, Michael Reif, Sven Amann, Pauline Anthonysamy, Mira Mezini
AsiaCCS5
2019 Investigating next steps in static API-misuse detection
abstract
Application Programming Interfaces (APIs) often impose constraints such as call order or preconditions. API misuses, i.e., usages violating these constraints, may cause software crashes, data-loss, and vulnerabilities. Researchers developed several approaches to detect API misuses, typically still resulting in low recall and precision. In this work, we investigate ways to improve API-misuse detection. We design MUDetect, an API-misuse detector that builds on the strengths of existing detectors and tries to mitigate their weaknesses. MUDetect uses a new graph representation of API usages that captures different types of API misuses and a systematically designed ranking strategy that effectively improves precision. Evaluation shows that MUDetect identifies real-world API misuses with twice the recall of previous detectors and 2.5x higher precision. It even achieves almost 4x higher precision and recall, when mining patterns across projects, rather than from only the target project.
Sven Amann, Hoan Anh Nguyen, Sarah Nadi, Tien N. Nguyen, Mira Mezini
MSR1
2019 A Systematic Evaluation of Static API-Misuse Detectors
abstract
Application Programming Interfaces (APIs) often have usage constraints, such as restrictions on call order or call conditions. API misuses, i.e., violations of these constraints, may lead to software crashes, bugs, and vulnerabilities. Though researchers developed many API-misuse detectors over the last two decades, recent studies show that API misuses are still prevalent. Therefore, we need to understand the capabilities and limitations of existing detectors in order to advance the state of the art. In this paper, we present the first-ever qualitative and quantitative evaluation that compares static API-misuse detectors along the same dimensions, and with original author validation. To accomplish this, we develop MUC, a classification of API misuses, and MUBENCHPIPE, an automated benchmark for detector comparison, on top of our misuse dataset, MUBENCH. Our results show that the capabilities of existing detectors vary greatly and that existing detectors, though capable of detecting misuses, suffer from extremely low precision and recall. A systematic root-cause analysis reveals that, most importantly, detectors need to go beyond the naive assumption that a deviation from the most-frequent usage corresponds to a misuse and need to obtain additional usage examples to train their models. We present possible directions towards more-powerful API-misuse detectors.
Sven Amann, Hoan Anh Nguyen, Sarah Nadi, Tien N. Nguyen, Mira Mezini
IEEE Trans. Software Eng.1
2019 Developer Testing in the IDE: Patterns, Beliefs, and Behavior
abstract
Software testing is one of the key activities to achieve software quality in practice. Despite its importance, however, we have a remarkable lack of knowledge on how developers test in real-world projects. In this paper, we report on a large-scale field study with 2,443 software engineers whose development activities we closely monitored over 2.5 years in four integrated development environments (IDEs). Our findings, which largely generalized across the studied IDEs and programming languages Java and C#, question several commonly shared assumptions and beliefs about developer testing: half of the developers in our study do not test; developers rarely run their tests in the IDE; most programming sessions end without any test execution; only once they start testing, do they do it extensively; a quarter of test cases is responsible for three quarters of all test failures; 12 percent of tests show flaky behavior; Test-Driven Development (TDD) is not widely practiced; and software developers only spend a quarter of their time engineering tests, whereas they think they test half of their time. We summarize these practices of loosely guiding one's development efforts with the help of testing in an initial summary on Test-Guided Development (TGD), a behavior we argue to be closer to the development reality of most developers than TDD.
Moritz Beller, Georgios Gousios, Annibale Panichella, Sebastian Proksch 0001, Sven Amann, Andy Zaidman
IEEE Trans. Software Eng.5
2018 Enriched event streams: a general dataset for empirical studies on in-IDE activities of software developers
abstract
Developers have been the subject of many empirical studies over the years. To assist developers in their everyday work, an understanding of their activities is necessary, especially how they develop source code. Unfortunately, conducting such studies is very expensive and researchers often resort to studying artifacts after the fact. To pave the road for future empirical studies on developer activities, we built FeedBaG, a general-purpose interaction tracker for Visual Studio that monitors development activities. The observations are stored in enriched event streams that encode a holistic picture of the in-IDE development process. Enriched event streams capture all commands invoked in the IDE with additional context information, such as the test being run or the accompanying fine-grained code edits. We used FeedBaG to collect enriched event streams from 81 developers. Over 1,527 days, we collected more than 11M events that correspond to 15K hours of working time.
Sebastian Proksch 0001, Sven Amann, Sarah Nadi
MSR2
2017 CodeMatch: obfuscation won't conceal your repackaged app
abstract
An established way to steal the income of app developers, or to trick users into installing malware, is the creation of repackaged apps. These are clones of - typically - successful apps. To conceal their nature, they are often obfuscated by their creators. But, given that it is a common best practice to obfuscate apps, a trivial identification of repackaged apps is not possible. The problem is further intensified by the prevalent usage of libraries. In many apps, the size of the overall code base is basically determined by the used libraries. Therefore, two apps, where the obfuscated code bases are very similar, do not have to be repackages of each other. To reliably detect repackaged apps, we propose a two step approach which first focuses on the identification and removal of the library code in obfuscated apps. This approach - LibDetect - relies on code representations which abstract over several parts of the underlying bytecode to be resilient against certain obfuscation techniques. Using this approach, we are able to identify on average 70% more used libraries per app than previous approaches. After the removal of an app's library code, we then fuzzy hash the most abstract representation of the remaining app code to ensure that we can identify repackaged apps even if very advanced obfuscation techniques are used. This makes it possible to identify repackaged apps. Using our approach, we found that ≈ 15% of all apps in Android app stores are repackages
Leonid Glanz, Sven Amann, Michael Eichberg, Michael Reif, Ben Hermann, Johannes Lerch, Mira Mezini
ESEC/SIGSOFT FSE2
2017 Enriching in-IDE process information with fine-grained source code history
abstract
Current studies on software development either focus on the change history of source code from version-control systems or on an analysis of simplistic in-IDE events without context information. Each of these approaches contains valuable information that is unavailable in the other case. Our work proposes enriched event streams, a solution that combines the best of both worlds and provides a holistic view on the software development process. Enriched event streams not only capture developer activities in the IDE, but also specialized context information, such as source-code snapshots for change events. To enable the storage of such code snapshots in an analyzable format, we introduce a new intermediate representation called Simplified Syntax Trees (SSTs) and build CA□RET, a platform that offers reusable components to conveniently work with enriched event streams. We implement FEEDBAG++, an instrumentation for Visual Studio that collects enriched event streams with code snapshots in the form of SSTs. We share a dataset of enriched event streams captured from 58 users and representing 915 days of work. Additionally, to demonstrate usefulness, we present three research applications that have already made use of CA□RET and FEEDBAG++.
Sebastian Proksch 0001, Sarah Nadi, Sven Amann, Mira Mezini
SANER3
2017 On the Positive Effect of Reactive Programming on Software Comprehension: An Empirical Study
abstract
Starting from the first investigations with strictly functional languages, reactive programming has been proposed as the programming paradigm for reactive applications. Over the years, researchers have enriched reactive languages with more powerful abstractions, embedded these abstractions into mainstream languages-including object-oriented languages-and applied reactive programming to several domains, such as GUIs, animations, Web applications, robotics, and sensor networks. However, an important assumption behind this line of research is that, beside other claimed advantages, reactive programming makes a wide class of otherwise cumbersome applications more comprehensible. This claim has never been evaluated. In this paper, we present the first empirical study that evaluates the effect of reactive programming on comprehension. The study involves 127 subjects and compares reactive programming to the traditional object-oriented style with the Observer design pattern. Our findings show that program comprehension is significantly enhanced by the reactive-programming paradigm-a result that suggests to further develop research in this field.
Guido Salvaneschi, Sebastian Proksch 0001, Sven Amann, Sarah Nadi, Mira Mezini
IEEE Trans. Software Eng.3
2016 FeedBaG: An interaction tracker for Visual Studio
abstract
Integrated Development Environments (IDEs) provide a convenient standalone solution that supports developers during various phases of software development. In order to provide better support for developers within such IDEs, we need to understand how developers use them. To infer useful conclusions, such information should be gathered for different types of IDEs, for different programming languages, and in different development settings. In this paper, we present FEEDBAG, an extension for Visual Studio that tracks developers' interactions with the IDE. FEEDBAG generates a rich stream of interaction events and provides means for developers to review and submit the data to a server. We recently used the tool in a study, recording more than 6,300 hours of work time. Future studies with different user groups are needed to explore and compare IDE-usage aspects, like code-comprehension assistance, in detail. Therefore, we publish FEEDBAG and encourage other researchers to use it as well.
Sven Amann, Sebastian Proksch 0001, Sarah Nadi
ICPC1
2016 Evaluating the evaluations of code recommender systems: a reality check
abstract
While researchers develop many new exciting code recommender systems, such as method-call completion, code-snippet completion, or code search, an accurate evaluation of such systems is always a challenge. We analyzed the current literature and found that most of the current evaluations rely on artificial queries extracted from released code, which begs the question: Do such evaluations reflect real-life usages? To answer this question, we capture 6,189 fine-grained development histories from real IDE interactions. We use them as a ground truth and extract 7,157 real queries for a specific method-call recommender system. We compare the results of such real queries with different artificial evaluation strategies and check several assumptions that are repeatedly used in research, but never empirically evaluated. We find that an evolving context that is often observed in practice has a major effect on the prediction quality of recommender systems, but is not commonly reflected in artificial evaluations.
Sebastian Proksch 0001, Sven Amann, Sarah Nadi, Mira Mezini
ASE2
2016 MUBench: a benchmark for API-misuse detectors
abstract
Over the last few years, researchers proposed a multitude of automated bug-detection approaches that mine a class of bugs that we call API misuses. Evaluations on a variety of software products show both the omnipresence of such misuses and the ability of the approaches to detect them.
Sven Amann, Sarah Nadi, Hoan Anh Nguyen, Tien N. Nguyen, Mira Mezini
MSR1
2016 A dataset of simplified syntax trees for C#
abstract
In this paper, we present a curated collection of 2833 C# solutions taken from Github. We encode the data in a new intermediate representation (IR) that facilitates further analysis by restricting the complexity of the syntax tree and by avoiding implicit information. The dataset is intended as a standardized input for research on recommendation systems for software engineering, but is also useful in many other areas that analyze source code.
Sebastian Proksch 0001, Sven Amann, Sarah Nadi, Mira Mezini
MSR2
2016 A Study of Visual Studio Usage in Practice
abstract
Integrated Development Environments (IDEs) provide a convenient standalone solution that supports developers during various phases of software development. In order to provide better support for developers within such IDEs, we need to understand how much time developers spend using various parts of a given IDE and how often they use available assistance tools. To infer useful conclusions, such information should be gathered for different types of IDEs for different languages. In this paper, we instrument the previously unexplored Visual Studio IDE and track the interactions of developers at an industry partner's software-development department. As a result, we capture interactions for more than 6300 hours of work time, from between 27 and 84 professional C# developers. Our work reports how much time professional developers spend on activities such as code editing and execution or navigation, as well as how often they use assistance tools provided by the IDE. We compare our findings to those of prior studies involving other IDEs and discuss the implications of the commonalities and differences for research on (integrated) developer-assistance tools.
Sven Amann, Sebastian Proksch 0001, Sarah Nadi, Mira Mezini
SANER1
2014 An empirical study on program comprehension with reactive programming
abstract
Starting from the first investigations with strictly functional languages, reactive programming has been proposed as THE programming paradigm for reactive applications. The advantages of designs based on this style over designs based on the Observer design pattern have been studied for a long time. Over the years, researchers have enriched reactive languages with more powerful abstractions, embedded these abstractions into mainstream languages – including object-oriented languages – and applied reactive programming to several domains, like GUIs, animations, Web applications, robotics, and sensor networks. However, an important assumption behind this line of research – that, beside other advantages, reactive programming makes a wide class of otherwise cumbersome applications more comprehensible – has never been evaluated. In this paper, we present the design and the results of the first empirical study that evaluates the effect of reactive programming on comprehensibility compared to the traditional object-oriented style with the Observer design pattern. Results confirm the conjecture that comprehensibility is enhanced by reactive programming. In the experiment, the reactive programming group significantly outperforms the other group.
Guido Salvaneschi, Sven Amann, Sebastian Proksch 0001, Mira Mezini
SIGSOFT FSE2