作者:晋楠 来源:中国科学报 发布时间:2017/10/31 10:27:09
选择字号:
协作软件助你事半功倍
“持续集成”服务既省时又保护关键代码

图片来源:the Project Twins

Sebastian Neubert是德国海德堡大学的一名粒子物理学家,他带领一个团队研究名为“五夸克”的亚原子粒子。6名团队成员都可以访问用于运行其多步分析的软件代码,程序员每天都要更新其特性并进行漏洞修复。然而,随着每一个代码的变化,它们都有可能导入偶然的错误,从而扰乱基础算法。

为了防止这种情况发生,该团队对他们的分析进行了一次次的核查,并使用错误检查算法,每当提出一项更改时,它们可以发挥功能,确保软件正常工作。例如,一项测试验证了当在实践数据上运行时,噪声消除算法能给出正确的输出。

2015年,为了节省时间和资源,Neubert团队从技术产业中汲取灵感,用一种叫作“持续集成”的过程将的测试自动化。

持续集成

在持续集成中,对软件代码的更改会自动触发重复任务,例如错误检查。从根本上说,这个过程简化了编码员要完成的任务。程序员通常会写一份定期运行的测试清单,以确保他们的代码有效,正如Neubert团队所做的那样。但一个忙碌的团队可能会忘记或者没时间运行它们,从而导致出现错误。持续集成则让这一过程自动化,因此每当发生更改时,那些检查就会运行,从而节省了团队成员寻找错误所花费的时间。进行基因组分析的团队可以花更多的时间在工作台上,而开发气候预测软件的小组则可以更好地改进模型。也就是说,由此带来的平和心态和测试本身一样好:一个设计糟糕的测试可以让错误在不被发现的情况下通过。

这一过程在商业和开源领域很常见。在新加坡举行的2016IEEE/ACM国际自动化软件工程会议上报告的一项研究发现,在编码协作网站GitHub上托管的34544个最受欢迎的开源项目中,约有40%使用了持续集成。

仅有少数几个开源项目或被认为是科学的软件,但越来越多的科学家正在寻求持续集成,从而让从测试代码到用最新数据更新文件等各种耗时的任务自动化。

瑞士日内瓦附近的欧洲粒子加速器实验室等类似机构的研究人员、位于美国华盛顿里奇兰太平洋西北国家实验室的研究人员以及加拿大多伦多安大略癌症研究所的研究人员已经接受了这种做法,但是其在科学领域的采用仍然相对稀少。

对Neubert来说,持续集成可确保该通道的行为保持正确和一致,因为他的团队正在改进其代码,从而提供一种“极具价值”的保障。“真正的危险是错过了一些东西,或者犯了一个小错误。”他说。

例外

目前已经存在各种各样的持续集成服务。这些产品包括开源无人机,以及诸如CircleCI、Codeship、GitLab、Shippable和Travis CI等商业选择,它们都提供基于所需测试行为、用户数量以及项目是公是私的定价等级。例如,Travis CI对开源项目是免费的,但私人项目的费用则是每月69美元。Shippable为公共项目提供免费的基本服务,但每月收取25~150美元的费用支持私人项目和更大的计算能力等性能。

然而,研究人员应该考虑什么是合适且值得投资的。并非每个项目都需要持续集成,并设置和配置一种具有挑战性的服务。费城宾夕法尼亚大学数据科学博士后Daniel Himmelstein说,如果服务需要与使用权存在法律限制的软件或数据进行交互,那么就会出现更多的困难。

而且,代码通常仅用一次,这样降低了成本。“对于日常的研究编码,代码数量仍未大到可以使持续集成有价值。”加州大学圣地亚哥分校的高性能计算专家Andrea Zonca说。他在发布代码时使用Travis CI,但他所写的大部分代码都是为了自己的一次性使用,且不会再次执行。

如果代码不断更新则需要重复测试,那么计算成本也会增加,这就是为什么Neubert的实验室在代码修改后只测试最关键的数据分析的原因。

尽管面临这些挑战,但持续集成服务往往会提高代码质量,德国弗莱堡大学的生物信息专家Bjorn Grüning说,尤其是在类似Galaxy的大型项目上,这是Grüning和其他160多人一起研发的一个生物信息学工具包。

据Grüning介绍,持续集成缩短了批准Galaxy项目的周转时间,在提交新功能和补丁时给了程序员更大的信心。他说,在没有这些服务之前,类似项目中的研究人员在验证合作者提出的每个新特征时经常会脱离实际,因为他们没有时间。

一些研究人员使用持续集成实现非编程任务的自动化。今年4月,作为一个研究生态系统如何随时间变化的项目的一部分,佛罗里达大学生态学家Ethan White帮助配置了Travis CI以自动更新新的野外或气象站数据的图表,从而让该研究团队每个月可以节省5个小时。

持续集成帮助Himmelstein自动修改科学论文、引用和网页文本或代码更新。他说,如果没有持续集成,维护人员可能会“变得懒惰,不能每次都更新手稿”。

初始化

无论由第三方托管还是在用户自己的机器上,持续集成服务都是由一组自定义的指令控制的。这个配置文件定义了要运行的任务,并根据需要运行它们的正确环境(操作系统和软件库)设置服务端。然后,该服务在设置时间接收到一个代码或数据更新时便会执行这些指令。宾夕法尼亚大学生物信息学家Casey Greene利用持续集成重新进行数据分析,他已经验证了当今许多最受欢迎的服务。“关于这些服务的好消息是——它们非常相似。”他说。

但也存在着一些细微的差别,例如,目前用户可以运行的并行工作的数量,或是可以运行它们的计算能力。“我鼓励人们挖掘每项服务的极限,以确保它们与工作流兼容。”Greene建议。

Greene说,尽管目前科学领域所采用的持续整合规模仍然很小,但它在增长,更多研究人员都应该加入进来。不过,他坦言提升速度需要时间,但通常付出的努力是值得的。“分析数据的科学家应该把它放在他们的工具箱里。”(晋楠编译)

 

《中国科学报》 (2017-10-31 第3版 国际)
 
 打印  发E-mail给: 
    
 
以下评论只代表网友个人观点,不代表科学网观点。 
SSI ļʱ
相关新闻 相关论文

图片新闻
在离太阳更近的地方 全球最大液流“电力银行”10月上线
我国成功实施问天实验舱转位 千年冰芯有了准确年龄
>>更多
 
一周新闻排行 一周新闻评论排行
 
编辑部推荐博文
 
论坛推荐