ospaf-开源项目成熟度分析工具

简介: 1.概述   软件成熟度评估的最终目标是帮助软件的可持续发展,并为用户应用提供必要的技术参考。开放源代码软件成熟度评估也不例外。我们通过软件的成熟度评估,形成全面的涉及技术、应用、法律等层面的评价报告,帮助那些正在或潜在的开源软件使用者准确的了解软件的技术特性和应用特性,从而为他们选择适合自身需求的开源软件提供参考。同时报告中涉及的大量评测数据,为开源软件的开发者提供帮助,促进他们有效的


1.概述

   软件成熟度评估的最终目标是帮助软件的可持续发展,并为用户应用提供必要的技术参考。开放源代码软件成熟度评估也不例外。我们通过软件的成熟度评估,形成全面的涉及技术、应用、法律等层面的评价报告,帮助那些正在或潜在的开源软件使用者准确的了解软件的技术特性和应用特性,从而为他们选择适合自身需求的开源软件提供参考。同时报告中涉及的大量评测数据,为开源软件的开发者提供帮助,促进他们有效的改善软件在技术方面和使用方面的质量,使软件不断成熟和可持续的发展。

   开放源代码软件由于开发模式和运作模式的独特性,其软件带有鲜明的特点。开放源码软件成熟度评估的方法需要我们在实践中不断的探索。我们将提出一些基本的原则和方法,并建立我们自己的评估体系和计算模型。


2.项目分析

     

      2.1 项目简介

   Ospaf(open source project analyze framework)项目的发起是作为 CSDN 举办的 summer code 的项目之一。Ospaf 工具的主要功能是可以通过采集开源项目的相关数据,通过机器学习的算法建立开源项目成熟度评估模型,从而实现对于开源项目的评估。

    

      2.2 数据来源

    目前世界上最火的项目托管网站是 github,ospaf 采用github 作为入手点。通过读取 Ghtorrent 和 github-api 采集数据。同时 ohloh 也对开源项目进行分析并开放数据,ospaf 的部分数据采集自 ohloh。

  

      2.3 数据挖掘
        

         2.3.1 特征值的提取

   

    Ospaf 项目的特征主要包括三个方面,分别是原始特征、衍生特征、抽象特征。

    原始特征包含一些 github-api 提供的参数,例如项目的star 数量和 fork 数量等。

    衍生特征包括对原始特征进行处理产生的特征,比如提取任意相邻两个月的 star 数量的增长数做比值,可以得到star 的增长率作为特征。

    抽象特征分为以下几种类型。第一种,通过提取项目commit 语句中的高频词汇(包含 revert、update 等)作为特征。第二种,计算开源项目 contributor 中star-contributor 的比重。第三种,分析邮件列表等数据。

       

        2.3.2 模型的建立

  

    Ospaf 项目模型的建立主要是通过机器学习算法来实现。第一步,去除噪音将数据库中的数据按照高斯去噪法,将噪声数据去除。第二步,归一化处理因为建立模型用到了回归算法,为了减小不同量纲特征对结果的影响,对所有特征进行归一化处理。第三步,聚类产生目标序列将公认的比较成熟的开源项目的数据导入训练集并聚类分析,生成目标序列。第四步,利用逻辑回归生成数学模型利用逻辑回归算法,对训练集进行训练,生成最终的数学模型。


    2.4 项目创新点

   (1)以大数据为背景,利用机器学习算法进行开源项目评估的建模。目前,对开源项目的评估一般都是基于 KQI 指标的用户评价,例如 Ospaf 这种利用 KPI 指标进行数学建模评估的案例仍不多见。

   (2)特征的多样性,之前对一个开源项目的评价可能只是简单地利用 star 数或是用户打分的方式。Ospaf 在这些特征的基础上,更添加了一些抽象特征,比如跟时间序列有关的一些增长率特征,用户 commits 语句中提取的特征

   (3)可以根据用户的需求进行评测。因为各个特征都是独立的,所以可以通过改变特征的权重来对项目进行评测。比如用户 A 需要用户关注度高的项目,那么就可以相应的提高用户关注度方面的特征的权重。


3.项目流程图


 



项目地址:

 csdn托管:https://code.csdn.net/davidmain/ospaf

 github托管:https://github.com/ospaf/ospaf-primary  (跪求star)


/********************************

* 本文来自博客  “李博Garvin“

* 转载请标明出处:http://blog.csdn.net/buptgshengod

******************************************/



目录
相关文章
|
缓存 JavaScript 安全
深度解析Nginx正向代理的原理与实现
深度解析Nginx正向代理的原理与实现
464 8
|
Shell 网络安全 开发工具
Tabby终端工具的配置和使用
Tabby终端工具的配置和使用
8705 0
|
数据采集 机器学习/深度学习 人工智能
Python的主要应用领域
Python的主要应用领域
1394 0
Python的主要应用领域
|
5月前
|
人工智能 分布式计算 大数据
构建AI时代的大数据基础设施-MaxCompute多模态数据处理最佳实践
本文介绍了大数据与AI一体化架构的演进及其实现方法,重点探讨了Data+AI开发全生命周期的关键步骤。文章分析了大模型开发中的典型挑战,如数据管理混乱、开发效率低下和运维管理困难,并提出了解决方案。同时,详细描述了MaxCompute在构建AI时代数据基础设施中的作用,包括其强大的计算能力、调度能力和易用性特点。此外,还展示了MaxCompute在多模态数据处理中的应用实践以及具体客户案例,最后提供了体验MaxFrame解决方案的方式。
630 2
|
存储 小程序 JavaScript
小程序中页面传参的方式你都知道吗
小程序中页面传参的方式你都知道吗
157 0
|
运维 监控 安全
IT知识百科:什么是核心交换机?
【7月更文挑战第3天】
1733 0
IT知识百科:什么是核心交换机?
|
关系型数据库 Serverless 视频直播
Serverless高可用架构解决方案体验及评测
该解决方案对比了Serverless架构与传统架构,强调了详细注释组件的重要性,但在应用场景描述上过于简略。建议加强应用场景的说明,如:流量波动大的Web网站、体育视频直播平台和在线教育平台,展示Serverless如何实现业务稳定和成本优化。一键部署简单,手动部署需更多指导和截图。整体解决方案未充分突出Serverless的弹性与运维优势,建议提供压测体验或相关能力测评案例以增强说服力。文档质量有待提高。
|
存储 Shell 数据安全/隐私保护
minio一键安装脚本分享(shell和python)
minio一键安装脚本分享(shell和python)
489 0
|
前端开发 Android开发 UED
介绍一下移动应用的版本控制系统。
【4月更文挑战第26天】移动应用的版本控制系统用于管理代码和版本,支持团队协作,提供用户体验。它包括版本管理列表、客户端升级提醒、跨平台版本控制、React Native包管理、自定义接口和管理员功能、优化代码更新流程、文件变更追踪和回溯比较。此系统确保开发团队高效工作,用户始终使用最新稳定版应用,对移动应用的成功至关重要。
209 3
|
存储 弹性计算 Cloud Native
金融科技转型之路——银行核心系统数字化转型
金融科技发展趋势金融科技英译为Fintech,是Financial Technology的缩写,指通过利用各类科技手段创新传统金融行业所提供的产品和服务,提升效率并有效降低运营成本。2022年初,中国人民银行自三年前发布金融科技发展规划之后,再次印发《金融科技发展规划(2022-2025年)》,意在推动中国金融科技从“立柱架梁”全面迈入“积厚成势”新阶段,力争到2025年实现整体水平与核心竞争力跨
6267 3
金融科技转型之路——银行核心系统数字化转型