首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

开源量化分析简析:从代码理解到改进和推荐

目前,基于数据的开源软件量化分析领域的研究大致分为两个阶段:首先对开源软件现象进行分析和理解;然后基于这些分析和理解,对开源软件乃至商业软件的开发实践进行改进。这些研究的关注点不仅在于开源软件制品本身,还涉及到开源软件开发者及其形成的开源社区。

1. 理解开源

在理解开源方面最早的代表性工作是莫卡斯等人对Apache和Mozilla这两个开源项目的研究。该研究对核心开发团队的规模、任务量以及组织方式等进行了量化分析。杰尔曼(German)遵循类似原则对Gnome社区所使用的分布式开发实践进行了量化分析。这些分析使得我们对由大量志愿者参与,组织松散的分布式开源软件开发模式如何能够高效开发高质量软件有了基本的认识。

开源软件开发如何弥合全球开发者在语言、文化、时区、习俗方面的差异也引起了很多关注。有很多研究致力于理解开源分布式协作开发中的沟通,以及开发者协作方式对产品质量的影响等问题。例,卡塔尔多(Cataldo)等人通过度量程序员的协作行为,发现许多高产的程序员会随着时间改变他们的电子通信媒介,以更好地满足协作需求。

开源软件开发与商业软件开发的巨大差别,使得开源开发活动的组织、管理和协同一直是热点议题。例如,开源项目的管理相当精简,通常没有规范的开发计划、过程说明,甚至没有设计文档;很多成功项目往往依赖于个别天才程序员;许多开源项目的主要推动力来自用户的外部贡献(包括代码贡献和缺陷报告等)随着Pull-Request等新型开发机制的出现,越来越多的开发者参与到软件开发活动中来,使得大众开发成为当代软件开发的一个标志。

开源软件所蕴含的全新的经济理念和社会化生产方式呈现出社会、经济、组织与管理、技术、实践等方面的重要属性,吸引了社会学、经济学与管理学等领域研究者的共同关注。从经济学角度,研究者关心的核心问题是:为什么会有大量的开发者个体自愿且无偿地参与到开源软件开发中?从组织学的角度,研究者则关注:为什么一个看似松散无序的群体能够开发出高质量的软件产品?传统上,这些问题的研究更多是采用定性方法。开放数据的存在正在为这些工作提供可行的定量研究途径。

2. 度量和改进开源实践

在开源成为一种现象之后,很多研究工作开始致力于利用开源数据从各方面帮助和改进开源开发例如,齐默尔曼(Zimmermann)等人挖掘版本历史以指导程序员在源代码发生变更的时候进行其他相应变更;霍尔姆斯(Holmes)等人通过启发式规则对正在开发的代码结构和代码库中已有的样本代码进行匹配,进而定位相关代码:米哈伊尔(Michail)使用泛化的关联规则挖掘技术发现函数库的复用模式;谢(Xie)等人使用频繁序列挖掘技术分析应用程序接口的调用频度和调用顺序,以帮助代码开发人员理解应用程序接口的使用方法。其他工作还包括:探究开源项目中的缺陷分类活动(bug triage)、寻找重复的问题报告(duplicate bug)、预测问题被修复的概率等。

还有一类研究关注开源社区中的贡献者本身,涉及贡献者如何进入社区、如何学习、其贡献质量如何、社区如何维护其长期贡献池等多个方面。例如,我们通过度量贡献者进入开源项目后第一个月的行为,发现从统计意义上说,他们进入项目时的初始环境对其是否能够成为一个长期贡献者具有重大影响。这些发现能够帮助我们更好地推荐最佳实践和设计协作工具。

开源数据还为我们对软件本身进行度量和评估提供了一种有效的方法。例如,邹(Zou)等人从软件用户的角度提出了一种基于互联网用户评论的软件质量度量方法:对互联网上存在的海量用户评论的正面和负面倾向进行情感分析,并基于评论数据从轻量、易用、稳定等方面对软件质量进行综合评估。

3. 开源和产业

开源已经被认为是软件技术创新和产业发展的主要模式。据Black Duck(黑鸭软件)在2014年统计,开源软件广受欢迎的十大特点包括:软件质量、功能特性、安全性、创新速度、可扩展性、定制化、合作、标准化、前沿性、成本。为了充分利用开源开发的优势,越来越多的公司和团体组织参与到开源运动中,设立起了“商业+开源”的混合项目。这些项目由软件工业界驱动,围绕开源软件技术或平台搭建各种业务模型;利益相关者之间相互协作、利益彼此关联,形成了各种“开源软件生态系统。

然而,如何在企业中有效利用开源特性及优势并非易事,目前已经出现了一些探索性研究。丁克拉克(Dinkelacker)等人描述了惠普公司采用的渐进式开源策略。该策略提供了三种开放性逐渐增强的模型:内部源码(向公司内部开放)、受控源码(在选择的伙伴间开放)开放源码(向全世界开放)沃格斯特伦(Wagstrom)等人度量了开源项目Gnome和Eclipse中的公司行为,总结出两种模式:一种是聚焦社区的公司,通过建立一个活跃社区来提供付费服务;另一种是聚焦产品的公司,通过销售产品获得利润。我们利用问题追踪数据度量了三个同构的开源产品(JavaEE应用服务器)中公司的参与活动,发现公司的投入力度对外部参与者有重大影响。上述策略和模式的效能在何种条件下能够更好地发挥作用,也需要采用开源量化分析手段进行深入研究。

开源软件是人类历史上一次基于群体智慧、利用互联网实现分布式协作的重大实践。开源运动的先行者通过对早期自由软件活动的深刻认识,创造性地解决了开源软件在法律和商业方面遇到的问题,逐步建立起基于群体智慧的软件开发方法和生态环境,将分布在全球的个体智慧汇集到开源软件中,把用户对高品质软件的需求、企业商业战略、抑制技术垄断、产业良性循环等诸多目标有效地集成到开源活动中,实现了对软件产业的重大变革。这种“认识世界---改造世界”的循环发展过程还将在开源世界中持续进行。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200729A009PE00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券