Page 81 - 《软件学报》2020年第10期
P. 81

梁冠宇  等:面向操作系统可靠性保障的开源软件供应链                                                       3057


         introduced as a result. This article extends the concept of supply chain to the field of open source software, proposes a knowledge-based
         management  method for software supply reliability in  collaborative  model: design the ontological body  for  the open source software
         ecosystem firstly, and then construct the knowledge graph of open source software to achieve the extraction, storage and management of
         knowledge; driven by knowledge, combined with traditional supply chain management methods, A set of reliability management methods
         for open source software supply chain is proposed, which constitutes a set of open source software supply chain management system.
         Taking  the construction  of a Linux operating  system distribution as an example  in experiment, it  demonstrates  how the  open source
         software supply chain will support the reliability of the operating system. Results show that the open source software supply chain will
         help to clarify and evaluate the reliability risk of large complex system software.
         Key words:    operating system; software reliability; open source software; supply chain; knowledge graph


         1    研究背景

             传统的软件可靠性研究重点关注单个软件在规定时间间隔内和规定条件下,系统或部件执行所要求功能
               [1]
         的能力 .单个软件的可靠性研究,通常会将软件拆分为多个独立的模块,之后基于不同的模型,结合软件模块间
                                                                       [2]
         的关系以及各个模块自身的故障率进行分析,得出软件最终的可靠性评估结果 .
             然而,随着开源协作模式的不断发展,软件的构成和开发过程都发生了巨大的变化.现今,软件开发更加关注敏
         捷和高效,基础功能通常会优先考虑复用相关的开源软件,开发者仅需要进行必要的扩展和改进即可.这种模式可
         以有效降低软件开发的成本,加速软件迭代,降低开发门槛,加快响应需求的速度.Octoverse(https://octoverse.
         github.com/,收集 Github 个人开发者活动数据,并从多个维度进行描述)年度报告显示,截至 2019 年底,平均有超
         过 360 万个开源仓库对前 50 的开源项目有依赖,平均每个开源项目包含 180 个包依赖,超过 35 万名开发者参与
         排名前 1 000 的开源项目,总贡献超过 500 万次.此外,有超过 130 万名开发者在 2019 年首次为开源软件做出贡献.
         从以上数据不难看出,在开源协作模式下,软件之间的依赖关系将会变得更为普遍和繁杂.
                                                                                    [3]
             操作系统是指管理计算机硬件资源和软件资源的系统程序集合,包括内核及其他系统工具 .由 Linux 内核
         衍生出的操作系统发行版(如 Ubuntu、CentOS、Android 等),统称为 Linux 发行版,它们将众多实现不同功能的
                                                                                     [4]
         开源软件,以软件包的形式与 Linux 内核有机地整合在一起,以满足终端用户不同的使用需求 .DistroWatch
         (https://distrowatch.com/,专注于收集和探讨开源操作系统发行版的最新信息)的数据显示,较为常用的 Linux 发
         行版,仅一个版本就需要维护数以万计的软件包以支撑自身的功能和生态(如 Ubuntu 18.04 涉及 29 207 个软件
         包、Debian Unstable 涉及 32 453 个软件包等),即便是通过剪裁构建而成的较为精简的系统,也包含近百个软件
         包.在没有工具帮助的情况下,按照正确的顺序和依赖关系安装软件包,需要具备必要的专业知识,以及进行琐
         碎的准备工作.为应对这一问题,软件包管理工具作为 Linux 发行版的必备组件,依据功能将开源软件拆分或合
         并为不同的软件包,并维护它们之间的依赖关系,以有效地减轻用户管理软件的负担.此外,为方便用户构建符
         合自定义需求的 Linux 发行版,包管理工具作为构建工具的核心组件,帮助用户理清需要添加的软件模块间的
         依赖关系.除了基于包管理工具实现的构建工具外,Linux 社区发起了 Linux From Scratch(LFS)项目,旨在指导用
         户如何从零开始构建操作系统,以及依靠包管理工具提供包依赖关系并实现不同系统构建,LFS 衍生出 ALFS
         (automated Linux from scratch)项目,为用户提供自动化构建工具.此外,还出现了 Yocto 等更为高级的 Linux 发行
         版定制化构建项目,帮助 Linux 发行版版本构建者屏蔽底层硬件架构的差异性.
             如上所述,在开源协作模式下,Linux 操作系统发行版蕴含着复杂的软件依赖关系,这使其可靠性不仅依赖
         内核本身,而且需要关注其他构筑起整个生态的开源软件.尽管包管理工具能够维护软件包之间的依赖关系,但
         这些关系的可靠性更多地依赖于人工管理和维护,基于这些信息对开源协作模式下的大型复杂基础软件及其
         生态做出可靠性评估存在较大的局限性.相应地,已有的系统构建工具同样仅关注构建功能本身,少有考虑最终
         构建生成的操作系统及其生态是否可靠.在已有的研究中,文献[5]同样关注到这样的软件组织形态,称在这种形
         态下形成的复杂网络为开源供应链,并提出开源供应链所面临的三大挑战:(1)  个体开发者学习成本进一步增
         大;(2)  群体协作更加复杂;(3)  生态可持续性受到的威胁持续增加.除了这些挑战,当构建一款操作系统发行版
         时,开源软件供应链可靠性还面临着软件本身特有的挑战,即:(1)  软件来源、许可和供应者的多样性;(2)  软件质
   76   77   78   79   80   81   82   83   84   85   86