本申请涉及数据分析管理技术领域,尤其涉及一种开源软件信息管理系统和方法。
背景技术:
相关统计数据表明,国内使用开源技术的企业占比达到86.7%,计划引入开源技术的企业占比10.6%。开源技术被企业普遍接受的同时,也带来了一定的安全和法律等风险。随着越来越多的企业参与开源软件活动和使用开源进行软件制品开发,开源数据分析管理工作已经成为企业关注的重点。在管理工具层面,已经出现部分产品基于海量互联网开源软件信息进行提取后,来优化搜索排序。
现有的针对开源软件软件的信息分析管理技术大量依靠人力,导致工作进度难以把控,而且开源软件的指标选取较为局限,导致后续数据分析处理的针对性和可靠性较差,例如评估效率受指标影响较大。
技术实现要素:
本申请提供了一种开源软件信息管理系统和方法,用于缓解现有技术大量依靠人力,且指标选取不具备针对性,导致开源软件信息管理工作效率较低,可靠性较差的技术问题。
有鉴于此,本申请第一方面提供了一种开源软件信息管理系统,包括:信息采集器、等级划分模块和存储模块;
所述信息采集器,用于获取目标开源软件的特征信息,所述特征信息包括社区热度、法律风险、生命周期、安全系数、使用情况和软件质量;
所述等级划分模块,用于根据预置等级划分方法将所述特征信息进行预置等级划分,得到所述特征信息对应的评价等级,根据所述评价等级计算所述目标开源软件的评价得分;
所述存储模块,用于采用不同的存储模式对所述目标开源软件和对应的所述评价得分进行分类存储,为用户提供评估反馈服务和检索服务,生成检索报告。
可选的,还包括:
信息缓存模块,用于将所述特征信息按照不同的维度以消息队列的形式进行缓存,得到缓存特征信息。
可选的,还包括:
信息识别模块,用于根据所述缓存特征信息和所述评价等级识别所述目标开源软件的基本信息,将所述基本信息发送至所述存储模块,所述基本信息包括软件名称、版本号、许可证版权协议和技术栈类别。
可选的,所述预置等级划分方法包括自适应阈值评级法和专家组评级法。
可选的,所述等级划分模块,具体用于:
采用所述自适应阈值评级法将数据格式的所述特征信息进行预置等级划分,得到所述特征信息对应的评价等级,根据所述评价等级计算所述目标开源软件的评价得分。
可选的,所述等级划分模块,具体用于:
采用所述专家组评级法将非数据格式的所述特征信息进行预置等级划分,得到所述特征信息对应的评价等级,根据所述评价等级计算所述目标开源软件的评价得分。
本申请第二方面提供了一种开源软件信息管理方法,包括:
获取目标开源软件的特征信息,所述特征信息包括社区热度、法律风险、生命周期、安全系数、使用情况和软件质量;
根据预置等级划分方法将所述特征信息进行预置等级划分,得到所述特征信息对应的评价等级;
根据所述评价等级计算所述目标开源软件的评价得分;
采用不同的存储模式对所述目标开源软件和对应的所述评价得分进行分类存储;
响应于用户的评估反馈和检索请求,生成检索报告。
可选的,所述获取目标开源软件的特征信息,之后还包括:
将所述特征信息按照不同的维度以消息队列的形式进行缓存,得到缓存特征信息。
可选的,所述将所述特征信息按照不同的维度以消息队列的形式进行缓存,得到缓存特征信息,之后还包括:
根据所述缓存特征信息和所述评价等级识别所述目标开源软件的基本信息,所述基本信息包括软件名称、版本号、许可证版权协议和技术栈类别。
可选的,所述预置等级划分方法包括自适应阈值评级法和专家组评级法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请中,提供了一种开源软件信息管理系统,包括:信息采集器,用于获取目标开源软件的特征信息,特征信息包括社区热度、法律风险、生命周期、安全系数、使用情况和软件质量;等级划分模块,用于根据预置等级划分方法将特征信息进行预置等级划分,得到特征信息对应的评价等级,根据评价等级计算目标开源软件的评价得分;存储模块,用于采用不同的存储模式对目标开源软件和对应的评价得分进行分类存储,为用户提供评估反馈服务和检索服务,生成检索报告。
本申请提供的一种开源软件信息管理系统,获取的开源软件的特征信息即由各种不同的指标信息构成,其中法律风险、生命周和安全系数都是当前开源软件在企业中的认可度上升后较为重要的关键指标,而社区热度也可以反映开源软件的接受度,采用多种不同的指标表达的开源软件的准确度更高;丰富的指标选取也可以保证评价等级的可靠性,且制定完备的信息获取、等级评定和信息存储策略可以减少人工操作,加快了信息处理进程。因此,本申请能够缓解现有技术大量依靠人力,且指标选取不具备针对性,导致开源软件信息管理工作效率较低,可靠性较差的技术问题。
附图说明
图1为本申请实施例提供的一种开源软件信息管理系统的结构示意图;
图2为本申请实施例提供的一种开源软件信息管理方法的流程示意图;
图3为本申请实施例提供的特征信息处理流程示意图;
图4为本申请实施例提供的存储模块硬件系统架构图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了便于理解,请参阅图1,本申请提供的一种开源软件信息管理系统的实施例,包括:信息采集器101、等级划分模块102和存储模块103。
信息采集器101,用于获取目标开源软件的特征信息,特征信息包括社区热度、法律风险、生命周期、安全系数、使用情况和软件质量。
信息采集器的种类和数量可以根据实际情况设定,一般情况下根据信息类型不同而设置不同的采集器。特征信息除了上述的重点信息外,还包括一些基础信息,例如软件简介、适用场景、技术栈和关键词等。特征信息中的法律风险主要是指版权许可证侵权风险;社区热度是github星数、搜索热度、评论数量、fork数据、release版本以及第三方网络应用数据等;生命周期就是发布时间;安全系数的度量指标是cnnvd/cve安全漏洞的个数、严重程度、漏洞修复时间以及第三方网络引用数据等;使用情况是指市场占有率、采用的企业或者组织数量;软件质量是指软件的稳定性、功能性、易用性、资源占用、软件性能、可维护性和可移植性。
等级划分模块102,用于根据预置等级划分方法将特征信息进行预置等级划分,得到特征信息对应的评价等级,根据评价等级计算目标开源软件的评价得分。
进一步地,预置等级划分方法包括自适应阈值评级法和专家组评级法。
进一步地,等级划分模块102,具体用于:
采用自适应阈值评级法将数据格式的特征信息进行预置等级划分,得到特征信息对应的评价等级,根据评价等级计算目标开源软件的评价得分。
进一步地,等级划分模块102,具体用于:
采用专家组评级法将非数据格式的特征信息进行预置等级划分,得到特征信息对应的评价等级,根据评价等级计算目标开源软件的评价得分。
为节省人力,将自适应阈值评级法与专家组评级法相结合,若获取的特征信息直接可以通过数据度量,那么就可以配置相适应的阈值进行等级划分;例如:开源软件信息自动获取到kubenetes的github星数为72.9k,达到“社区热度”5分阈值50k,则kubenetes“社区热度”等级会被标记为5。若获取的特征信息无法直接通过数据表达,kubenetes的“使用情况”难以直接评级,则由人工进行评级;根据google和alibaba等云厂商的使用情况,人工进行评级为5后,通过开源软件信息存储管理系统录入评级。两种评级方法结合不仅能够加快工作进程,而且自适应的评级方式也更能保证评级结果的可靠性。评估后可以得到如表1所示的结果,例如爱咋咋地许可证的wtfpl协议无要求无限制,评分最高为5分,在软件的生命周期方面,技术采用生命周期模型中的创新者评分为5。
表1开源软件的特征信息评级列表
每一种特征信息都可以确定一个评价等级,针对同一种开源软件而言,多种特征信息对应的评价等级结合就可以计算其综合评分,即根据评价等级计算目标开源软件的评价得分。可以对不同的特征信息划分不同的权重,根据不同的权重计算得到评价得分,具体过程可以根据现有技术得到,此处不赘述。
存储模块103,用于采用不同的存储模式对目标开源软件和对应的评价得分进行分类存储,为用户提供评估反馈服务和检索服务,生成检索报告。
存储模块是根据目标开源软件的信息类别进行分类存储的,请参阅图3,其中包括基本信息管理、法律风险管理、生命周期管理、安全系数管理、社区热度管理、软件质量管理、使用情况管理、其他特征管理等,不同的类别对应存储在不同的管理模块中。在用户需要检索或者反馈信息时,能够提供相应的服务,检索时可以根据检索需求生成检索报告,便于用户查看。
请参阅图4,存储模块的硬件系统是分层架构,每一层的作用如下:
1.接入层:基于nginx实现的硬件系统唯一入口,利用nginx的反向代理功能实现流量,向后下一层服务转发;
2.接口层:系统业务服务的入口,用于鉴权和路由。该层不处理具体的业务逻辑,而是调用下一层的业务服务或通用服务,进行组合实现具体的业务逻辑。
3.服务层:可分为业务服务层和通用服务层2大类,二者之间通过rpc协议实现通信。业务服务层提供业务相关的最小粒度api,如用户api、存储api和评论api。通用服务层提供一些公共的基础服务,比如搜索服务、通知服务和日志服务。
4.存储层:采用mysql、redis和ceph三种类型的存储。mysql用于存储用户、度量指标、开源软件基本信息等结构化数据;redis用于存储用户搜索的热点数据,以提高系统的检索性能;ceph用于存储非结构化数据,如领域专家组的评论报告和性能测试报告等。
进一步地,还包括:
信息缓存模块104,用于将特征信息按照不同的维度以消息队列的形式进行缓存,得到缓存特征信息。
请参阅图3,消息队列就是基础数据结构中的“先进先出”的一种数据机构。从互联网中抓取开源软件多角度特征信息在实际中的处理速度较慢,此时若是将这些特征信息按照不同的维度以消息队列的形式缓存,后续需要对这些信息做何种处理都可以保证提取信息的便利性。
进一步地,还包括:
信息识别模块105,用于根据缓存特征信息和评价等级识别目标开源软件的基本信息,将基本信息发送至存储模块,基本信息包括软件名称、版本号、许可证版权协议和技术栈类别。
请参阅图3,开源软件特征识别模块即为信息识别模块,识别的就是缓存好的开源软件对应的特征信息,识别结果包括名称、版本号、许可证版权协议和技术栈类别等基本信息,识别得到的基本信息与对应的目标开源软件一起存储在存储模块中。
目前,开源软件种类繁多且功能多样,用户找到合适的软件是一件极具挑战的事情,本申请实施例提供的技术方案对获取的开源软件信息进行了基本处理以及评估操作,然后进行针对性存储,为用户合理的决策提供了简明、有效的判断依据。用户的反馈,专家组的评级等辅助方式能够对系统中的错漏信息进行修正,能够进一步确保信息的准确性。
本申请提供的一种开源软件信息管理系统,获取的开源软件的特征信息即由各种不同的指标信息构成,其中法律风险、生命周和安全系数都是当前开源软件在企业中的认可度上升后较为重要的关键指标,而社区热度也可以反映开源软件的接受度,采用多种不同的指标表达的开源软件的准确度更高;丰富的指标选取也可以保证评价等级的可靠性,且制定完备的信息获取、等级评定和信息存储策略可以减少人工操作,加快了信息处理进程。因此,本申请能够缓解现有技术大量依靠人力,且指标选取不具备针对性,导致开源软件信息管理工作效率较低,可靠性较差的技术问题。
以上为本申请提供的一种开源软件信息管理系统的实施例,以下为一种开源软件信息管理方法的实施例。
为了便于理解,请参阅图2,本申请提供了一种开源软件信息管理方法的实施例,包括:
步骤201、获取目标开源软件的特征信息,特征信息包括社区热度、法律风险、生命周期、安全系数、使用情况和软件质量;
步骤202、根据预置等级划分方法将特征信息进行预置等级划分,得到特征信息对应的评价等级;
步骤203、根据评价等级计算目标开源软件的评价得分;
步骤204、采用不同的存储模式对目标开源软件和对应的评价得分进行分类存储;
步骤205、响应于用户的评估反馈和检索请求,生成检索报告。
进一步地,步骤201,之后还包括:将特征信息按照不同的维度以消息队列的形式进行缓存,得到缓存特征信息。
进一步地,将特征信息按照不同的维度以消息队列的形式进行缓存,得到缓存特征信息,之后还包括:
根据缓存特征信息和评价等级识别目标开源软件的基本信息,基本信息包括软件名称、版本号、许可证版权协议和技术栈类别。
进一步地,预置等级划分方法包括自适应阈值评级法和专家组评级法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以通过一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文全称:read-onlymemory,英文缩写:rom)、随机存取存储器(英文全称:randomaccessmemory,英文缩写:ram)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。