论文标题

旨在为基于Java的系统建立可验证性

Towards Build Verifiability for Java-based Systems

论文作者

Xiong, Jiawen, Shi, Yong, Chen, Boyuan, Cogo, Filipe R., Ming, Zhen, Jiang

论文摘要

构建可验证性是指软件系统可以通过独立第三方验证的属性,这对于软件系统的可信度至关重要。已经为基于C/C ++的系统做出了各种构建验证性的努力,但是基于Java的系统的技术不是系统性的,通常是特定的特定构建工具(例如Maven)。在这项研究中,我们提出了一种对基于Java的系统建立可验证性的系统方法。我们的方法包括三个部分:一个统一的构建过程,一种在构建过程中动态控制非确定性的工具,以及另一种通过后处理构建工件来消除非等效的工具。我们将方法应用于可再现的中央的46个未经验证的开源项目和华为商业产品广泛使用的13个开源项目。结果,91%的未验证的可重复的中央项目和100%的商业采用的OSS项目通过我们的方法成功验证。此外,根据我们在分析基于商业和开源Java的系统的数千个构建方面的经验,我们提出了14种模式,这些模式引入了生成的构建工件及其各自的缓解策略中的非等效性。在这些模式中,基于Java的系统有11个(78%)是独一无二的,而其余3(22%)在基于C/C ++的系统中很常见。本文的方法和发现对有兴趣构建可验证性的从业者和研究人员都有用。

Build verifiability refers to the property that the build of a software system can be verified by independent third parties and it is crucial for the trustworthiness of a software system. Various efforts towards build verifiability have been made to C/C++-based systems, yet the techniques for Java-based systems are not systematic and are often specific to a particular build tool (e.g., Maven). In this study, we present a systematic approach towards build verifiability on Java-based systems. Our approach consists of three parts: a unified build process, a tool that dynamically controls non-determinism during the build process, and another tool that eliminates non-equivalences by post-processing the build artifacts. We apply our approach on 46 unverified open source projects from Reproducible Central and 13 open source projects that are widely used by Huawei commercial products. As a result, 91% of the unverified Reproducible Central projects and 100% of the commercially adopted OSS projects are successfully verified with our approach. In addition, based on our experience in analyzing thousands of builds for both commercial and open source Java-based systems, we present 14 patterns that introduce non-equivalences in generated build artifacts and their respective mitigation strategies. Among these patterns, 11 (78%) are unique for Java-based system, whereas the remaining 3 (22%) are common with C/C++-based systems. The approach and the findings of this paper are useful for both practitioners and researchers who are interested in build verifiability.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源