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

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

ospaf-开源项目成熟度分析工具相关推荐

  1. 开源项目成熟度分析工具-利用github api获取代码库的信息

    1.github api github api是http形式的api,功能还是比较丰富的,博主因为项目的原因主要用到的是提取project信息这项功能,返回的数据是JSON格式. api页:https ...

  2. Android开源项目第二篇——工具库篇

    本文为那些不错的Android开源项目第二篇--开发工具库篇,主要介绍经常使用的开发库,包含依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本号向低版本号 ...

  3. 开源java性能分析工具_Java性能监控:您应该知道的5个开源工具

    开源java性能分析工具 鲜为人知但有用:开源应用程序性能监视的状态 对于任何应用程序来说,最重要的事情之一就是性能. 我们要确保用户获得他们能获得的最佳体验,并想知道我们的应用已启动并正在运行. 这 ...

  4. 强大的django-debug-toolbar,django项目性能分析工具

    强大的django-debug-toolbar,django项目性能分析工具 给大家介绍一个用于django中debug模式下查看网站性能等其他信息的插件django-debug-toolbar 首先 ...

  5. 基于 SpringBoot+Vue 的开源数据可视化分析工具

    简介 DataEase 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化.DataEase 支持丰富的数据源连接,能够通过拖拉拽方式快速制作图表,并可以方便的与 ...

  6. 开源项目共同体分析框架概述

    点击上方蓝字  关注开源之道 背景 Community 是开源之道在2020年主要的研究任务.并打算花一些时间,将其翻译的问题也给掰扯清楚了.就开源的世界而言,共同体是最为恰当的了,开源之道也深入学习 ...

  7. pythongetattribute_对Github上Python开源项目进行分析时遇到的一个AttributeError的解释及其解决方法。...

    最近在分析Github的Python开源项目时候遇到了一些问题,直接上传代码段: import requests import pygal from pygal.style import LightC ...

  8. 大数据开源的可视化分析工具,主要有哪些?

    目前,我们可以在市场上找到很多用于网络分析和数据可视化的开源工具,例如NetworkX,R和Gephi中的iGraph包等.在所有工具中,Gephi一直以来被认为是最值得推荐的,它可以帮助用户轻松实现 ...

  9. Top 7大开源数据可视化分析工具!

    目前,我们可以在市场上找到很多用于网络分析和数据可视化的开源工具,例如NetworkX,R和Gephi中的iGraph包等.在所有工具中,Gephi一直以来被认为是最值得推荐的,它可以帮助用户轻松实现 ...

最新文章

  1. 大数据时代 安全与应用的博弈
  2. mysql5.6 错误日志_MySQL5.6.36 日志文件之错误日志,二进制日志,慢日志
  3. 图像变清晰 图像放大 提高分辨率 提高清晰度
  4. java对嵌入式_Java用于嵌入式系统的优点
  5. Mysql(4)——数据库相关操作
  6. 触发键盘_雷蛇这款光轴机械键盘开箱评测,光速触发,颜值爆表
  7. linux ntp 追赶,Linux 时间同步 ntpd
  8. java 获取组件大小_java - 如何初始化取决于组件大小的图像抓取? - 堆栈内存溢出...
  9. Delphi 2009 之 TStringBuilder 类[1]: Create
  10. perl 判断不包含某字符串
  11. 小仙女带队!NLP入门-进阶-斩offer完整攻略来啦!
  12. 实例学习SSIS(三)--使用包配置
  13. [机器学习导论]——第三课——神经网络Ⅱ
  14. 【我的OpenGL学习进阶之旅】着色器编译器和程序二进制码
  15. java打印32位二进制
  16. 踽踽独行,你好像这世界上最孤独的灵魂
  17. cocos2dx画扇形
  18. java排序算法(一)冒泡排序
  19. OpenCV~捕获摄像头 帧率fps和waitkey函数 问题
  20. [团队管理]从《亮剑》看团队建设之二——PM如何与组员合作

热门文章

  1. Java实现世代距离_IGD反转世代距离-多目标优化评价指标概念及实现
  2. java服务器错误怎么解决_如何解决java.lang.IllegalStateException:服务器处于错误状态异常...
  3. insight切换窗口 source_Source Insight函数调用关系显示设置(示例代码)
  4. Java的call by value_call by value or reference ?
  5. so文件反编译_安卓攻防so模块自动化修复实战
  6. html 下拉框字体,怎么把select下拉菜单里的文字设置成左右滚动效果
  7. 图像识别python cnn_MINIST深度学习识别:python全连接神经网络和pytorch LeNet CNN网络训练实现及比较(一)...
  8. php 调用 perl,在PHP中使用与Perl兼容的正则表达式
  9. Android数据存储之SharedPreferencesSave存储(保存数据,读取数据的操作)
  10. 用 Python 画个生日蛋糕为朋友庆生