On behalf of the ICSE 2020 Organizing Committee, we are delighted to present these Proceedings of the 42nd ACM/IEEE International Conference on Software Engineering. ICSE continues to be the premier software-engineering conference, where researchers, practitioners, and educators come together to present, discuss, and debate the most recent research results, innovations, trends, and concerns in the field of software engineering.
Proceeding Downloads
Using a context-aware approach to recommend code reviewers: findings from an industrial case study
Code review is a commonly used practice in software development. It refers to the process of reviewing new code changes before they are merged with the code base. However, to perform the review, developers are mostly assigned manually to code changes. ...
Code-level model checking in the software development workflow
- Nathan Chong,
- Byron Cook,
- Konstantinos Kallas,
- Kareem Khazem,
- Felipe R. Monteiro,
- Daniel Schwartz-Narbonne,
- Serdar Tasiran,
- Michael Tautschnig,
- Mark R. Tuttle
This experience report describes a style of applying symbolic model checking developed over the course of four years at Amazon Web Services (AWS). Lessons learned are drawn from proving properties of numerous C-based systems, e.g., custom hypervisors, ...
The forgotten case of the dependency bugs: on the example of the robot operating system
A dependency bug is a software fault that manifests itself when accessing an unavailable asset. Dependency bugs are pervasive and we all hate them. This paper presents a case study of dependency bugs in the Robot Operating System (ROS), applying mixed ...
How do you architect your robots?: state of the practice and guidelines for ROS-based systems
The Robot Operating System (ROS) is the de-facto standard for robotic software. If on one hand ROS is helping roboticists, e.g., by providing a standardized communication platform, on the other hand ROS-based systems are getting larger and more complex ...
Precfix: large-scale patch recommendation by mining defect-patch pairs
Patch recommendation is the process of identifying errors in software systems and suggesting suitable fixes for them. Patch recommendation can significantly improve developer productivity by reducing both the debugging and repairing time. Existing ...
Automated bug reproduction from user reviews for Android applications
Bug-related user reviews of mobile applications have negative influence on their reputation and competence, and thus these reviews are highly regarded by developers. Before bug fixing, developers need to manually reproduce the bugs reported in user ...
Debugging crashes using continuous contrast set mining
Facebook operates a family of services used by over two billion people daily on a huge variety of mobile devices. Many devices are configured to upload crash reports should the app crash for any reason. Engineers monitor and triage millions of crash ...
Automatic abnormal log detection by analyzing log history for providing debugging insight
- Jinhan Kim,
- Valeriy Savchenko,
- Kihyuck Shin,
- Konstantin Sorokin,
- Hyunseok Jeon,
- Georgiy Pankratenko,
- Sergey Markov,
- Chul-Joo Kim
As the size of software becomes larger and more complex, finding the cause of defects becomes increasingly difficult. Moreover, it is hard to reproduce defects when many components such as processes in platform environment or devices in IoT environment ...
Lack of adoption of units of measurement libraries: survey and anecdotes
Units of measurement (UoM) libraries are mostly used to appropriately encode unit variables and convert between them in a type-safe manner. Approximately 3700 functioning unit measurement libraries exist on the web, indicating that the wheel is being ...
Automated identification of libraries from vulnerability data
Software Composition Analysis (SCA) has gained traction in recent years with a number of commercial offerings from various companies. SCA involves vulnerability curation process where a group of security researchers, using various data sources, populate ...
Building and maintaining a third-party library supply chain for productive and secure SGX enclave development
The big data industry is facing new challenges as concerns about privacy leakage soar. One of the remedies to privacy breach incidents is to encapsulate computations over sensitive data within hardware-assisted Trusted Execution Environments (TEE). Such ...
Modeling and ranking flaky tests at Apple
Test flakiness---inability to reliably repeat a test's Pass/Fail outcome---continues to be a significant problem in Industry, adversely impacting continuous integration and test pipelines. Completely eliminating flaky tests is not a realistic option as ...
Property-based testing for LG home appliances using accelerated software-in-the-loop simulation
As LG home appliances promise more convenience features to end-users, the complexity of their control software is also increasing, creating a higher pressure for software verification. However, since the embedded software is tightly coupled with its ...
Sharing at scale: an open-source-software-based license compliance ecosystem
The amount of open-source-software (OSS) used in the global software engineering community is already enormous and still growing. This includes both the products we develop and the development tools we use to create them. It is meanwhile rare to find ...
How to reduce risk effectively in fixed price software development
In this paper we consider 20 years of software development at a medium-sized European software company (called adesso). We identify changes and trends in software project management and we name typical risks inherent to fixed price projects (beyond the ...
Escape from escape analysis of Golang
Escape analysis is widely used to determine the scope of variables, and is an effective way to optimize memory usage. However, the escape analysis algorithm can hardly reach 100% accurate, mistakes of which can lead to a waste of heap memory. It is ...
Rule-based code generation in industrial automation: four large-scale case studies applying the CAYENNE method
- Heiko Koziolek,
- Andreas Burger,
- Marie Platenius-Mohr,
- Julius Rückert,
- Hadil Abukwaik,
- Raoul Jetley,
- Abdulla P P
Software development for industrial automation applications is a growing market with high economic impact. Control engineers design and implement software for such systems using standardized programming languages (IEC 61131-3) and still require ...
Understanding and handling alert storm for online service systems
- Nengwen Zhao,
- Junjie Chen,
- Xiao Peng,
- Honglin Wang,
- Xinya Wu,
- Yuanzong Zhang,
- Zikai Chen,
- Xiangzhong Zheng,
- Xiaohui Nie,
- Gang Wang,
- Yong Wu,
- Fang Zhou,
- Wenchi Zhang,
- Kaixin Sui,
- Dan Pei
Alert is a kind of key data source in monitoring system for online service systems, which is used to record the anomalies in service components and report to engineers. In general, the occurrence of a service failure tends to be along with a large ...
Towards understanding and fixing upstream merge induced conflicts in divergent forks: an industrial case study
Divergent forks are a common practice in open-source software development to perform long-term, independent and diverging development on top of a popular source repository. However, keeping such divergent downstream forks in sync with the upstream ...
Assessing practitioner beliefs about software defect prediction
Just because software developers say they believe in "X", that does not necessarily mean that "X" is true. As shown here, there exist numerous beliefs listed in the recent Software Engineering literature which are only supported by small portions of the ...
Engineering for a science-centric experimentation platform
- Nikos Diamantopoulos,
- Jeffrey Wong,
- David Issa Mattos,
- Ilias Gerostathopoulos,
- Matthew Wardrop,
- Tobias Mao,
- Colin McFarland
Netflix is an internet entertainment service that routinely employs experimentation to guide strategy around product innovations. As Netflix grew, it had the opportunity to explore increasingly specialized improvements to its service, which generated ...
DeCaf: diagnosing and triaging performance issues in large-scale cloud services
Large scale cloud services use Key Performance Indicators (KPIs) for tracking and monitoring performance. They usually have Service Level Objectives (SLOs) baked into the customer agreements which are tied to these KPIs. Dependency failures, code bugs, ...
JSidentify: a hybrid framework for detecting plagiarism among JavaScript code in online mini games
- Qun Xia,
- Zhongzhu Zhou,
- Zhihao Li,
- Bin Xu,
- Wei Zou,
- Zishun Chen,
- Huafeng Ma,
- Gangqiang Liang,
- Haochuan Lu,
- Shiyu Guo,
- Ting Xiong,
- Yuetang Deng,
- Tao Xie
Online mini games are lightweight game apps, typically implemented in JavaScript (JS), that run inside another host mobile app (such as WeChat, Baidu, and Alipay). These mini games do not need to be downloaded or upgraded through an app store, making it ...
Piranha: reducing feature flag debt at uber
Feature flags are commonly used in mobile app development and can introduce technical debt related to deleting their usage from the codebase. This can adversely affect the overall reliability of the apps and increase their maintenance complexity. ...
Software development data for architecture analysis: expectations, reality, and future directions
Recently we have worked with a dozen industrial collaborators to pinpoint and quantify architecture debts, from multi-national corporations to startup companies. Our technology leverages a wide range of project data, from source file dependencies to ...
Exploring differences and commonalities between feature flags and configuration options
Feature flags for continuous deployment and configuration options for customizing software share many similarities, both conceptually and technically. However, neither academic nor practitioner publications seem to clearly compare these two concepts. We ...