Page 94 - 《软件学报》2020年第10期
P. 94
3070 Journal of Software 软件学报 Vol.31, No.10, October 2020
通常包含几百甚至上万个节点,这与有限的屏幕尺寸形成一组尖锐的矛盾.考虑到每一个开源软件供应链其实
都可以看作是一个有向无环图(directed acyclic graph,简称 DAG) [24] .因此,在可视化供应链时,我们利用 DAG 的
特性,基于拓扑排序算法 [25] 实现供应链分层,即每屏只需要展示一层供应链节点的细节,有效克服屏幕尺寸带来
的可视化供应链容量限制.同时,为了保留供应链的全局信息,我们会为每个供应链提供分层结构的全局缩略
图,在用户查看某一层供应链细节时,在全局缩略图中做相应标识,保证用户获取完整的信息.
此外,系统中的控制器、分析器和事件处理器均采用插件式实现,允许以插件的形式扩展系统相关功能,保
证系统的灵活性和可扩展性.
4.2 可用性验证
为验证系统可用性,我们以一个面向 RISC-V(一种基于精简指令集(RISC)原则的开放指令集架构(ISA),由
加州大学伯克利分校发起,常解释为“开源硬件”)构建的精简 Linux 操作系统为例,为其构建并维护开源软件供
应链.该精简操作系统以基本的文本编辑为使用场景,经过剪裁,确认仅需要保留 bash、coreutil、passwd、systemd-
udev、util-linux、vim-minimal 这 6 个核心软件包.为便于检索,类似第 1.2.3 节所描述的构建过程,我们为该操作
系统加入了一个特殊的软件实体,并将这 6 个软件包作为其供应依赖实体,将这些信息输入系统即可将该操作
系统的软件实体加入到开源软件图谱中.提取该例所构建系统的软件供应链时,只需要以该实体为起点进行检
索即可,最终生成开源软件供应链共包含有 112 个软件包,相关统计数据如图 9 所示,包括开源协议分布、软件
维护者地理分布以及贡献人员地理分布.
Fig.9 Statistics of open source supply chain
图 9 供应链统计数据