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.
翻译:构建可核实性是指建立软件系统可由独立第三方核查的属性,对于软件系统的可信度至关重要。为建立C/C++的系统,已经为建立可核实性做出了各种努力,C/C++的系统已经为建立可核实性做出了各种努力,然而,以爪哇为基础的系统的技术并不系统化,而且往往是某个特定建设工具(如马文)所特有的。在本研究中,我们提出了一个系统化的方法,在以爪哇为基础的系统上建立可核实性。我们的方法由三个部分组成:一个统一的构建过程,一个在构建过程中动态控制非确定性的工具,以及另一个通过后处理制造工艺来消除非同等性的工具。我们在46个未经核实的开放源项目上,即中央和13个开放源项目的技术并非系统(如玛韦商业产品)系统所广泛使用的系统技术系统。因此,91%的未经核实的中央项目和100%商业上采用的开放源码软件项目都得到了成功核实。此外,根据我们在分析数千个基于商业和开放源的Java系统所建建筑的经验, 78 和基于这些系统所生成的系统所生成的非常规化的构建性结构模式中,我们展示了14种模式。在创建的系统中,C是这些不合法的系统中,在创建性战略中,这些不固定的系统中,在创建性格式中,在创建性格式中,这些结构中,在构建了11个中,在构建了这些结构上的系统中,在创建性战略中,在构建了这些结构上是第3种。