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   供应链统计数据
   89   90   91   92   93   94   95   96   97   98   99