立即发布
未能对软件代码进行必要的升级可能会产生可怕的后果,比如Equifax的重大数据泄露事件。最近的一项研究发现,自动修复工具是让程序员进行相关升级的有效方法——如果程序员选择使用它们的话。
“大多数软件程序在某种程度上依赖于外部'库'中的代码来执行它们的一些功能,”北卡罗来纳州立大学计算机科学助理教授、一篇有关这项工作的论文的高级作者克里斯·帕宁(Chris Parnin)说。如果这些外部库被修改以解决缺陷,程序员需要更新他们的内部代码以适应这些变化。这被称为“升级过时的依赖项”。然而,由于各种原因,许多程序员拖延,推迟了必要的升级。
帕宁表示:“这就是Equifax的情况。”他们所依赖的一家外部图书馆公开了它的安全漏洞。虽然外部库被打了补丁,但Equifax从未更新内部代码。因此,在发现问题几个月后,Equifax仍然很脆弱,遭到了黑客攻击。
“我们这个项目的目标是评估旨在让更多程序员升级他们过时的依赖的工具。他们能帮助阻止另一场Equifax吗?”
在这项研究中,研究人员查看了GitHub上的数千个开源项目。GitHub是一个在线编程社区,旨在促进开源软件项目的合作。具体来说,研究人员观察了用于激励或促进升级的不同手段项目,以及这些激励是否有任何不同。
其中一组由2,578个项目组成,这些项目利用自动的pull请求,通知项目所有者需要对过时的依赖关系进行升级,建议潜在的代码更改,并进行一小组测试,以确定替换代码是否可行。如果最初的可行性测试失败了,这些项目所有者仍然需要批准更改或修改更新的代码。
第二组由1,273个项目组成,这些项目没有利用激励措施来升级过时的依赖关系。
研究人员发现,有自动拉请求的项目比没有使用奖励的项目多完成了60%的必要升级。
Parnin说:“我们还发现,大多数自动拉请求项目都在使用最新版本的依赖软件,而非激励型项目则到处都是。”“这里的关键信息是,我们有自动化工具,可以帮助程序员跟上升级。这些工具不能取代优秀的程序员,但它们可以带来显著的不同。然而,这仍然取决于程序员将这些工具放在适当的位置并充分利用它们。”
纸”,自动拉请求能鼓励软件开发人员升级过时的依赖关系吗?,将在10月30- 11月的IEEE/ACM自动化软件工程国际会议上发表。伊利诺伊大学厄巴纳-香槟分校(University of Illinois at Urbana-Champaign, Ill.)该论文的主要作者是北卡罗来纳州立大学的本科生Samim Mirhosseini。Mirhosseini在这个项目上的工作得到了美国国家科学基金会的本科生研究经验资助。
希普曼-
编辑:研究摘要如下。
“自动拉取请求能够鼓励软件开发人员升级过时的依赖关系吗?”
作者: Samim Mirhosseini和Chris Parnin,北卡罗来纳州立大学
提出了: IEEE/ACM自动化软件工程国际会议,10月30- 11月。伊利诺伊大学厄巴纳-香槟分校(University of Illinois at Urbana-Champaign, Ill.)
文摘:开发人员忽略了更新遗留软件的依赖关系,从而导致了错误和不安全的软件。对这种忽视的一种解释是,经常检查新软件更新的可用性、验证它们的安全性以及在升级依赖关系时解决任何迁移工作的困难。新兴的工具试图通过引入自动的pull请求和项目徽章来告知开发人员陈旧的依赖关系来解决这个问题。为了了解这些工具是否真的能帮助开发人员,我们分析了7,470个GitHub项目,它们使用这些通知机制来识别升级行为中的任何变化。我们的结果发现,平均而言,使用拉请求通知的项目升级的频率是不使用任何工具的项目的1.6倍。而徽章通知则没有那么有效:用户升级的频率提高了1.4倍。不幸的是,尽管pull请求通知很有用,但开发人员经常被通知淹没:实际上只有三分之一的pull请求被合并了。通过一项调查,62名开发人员指出他们最重要的关注点是破坏更改、理解更改的含义,以及迁移工作。我们的工作表明,通知可以改进,以更好地符合开发人员的期望,并需要新机制来减少通知疲劳,提高自动拉请求的信心。
