协作软件助你事半功倍
照片来源:双胞胎项目
塞巴斯蒂安·诺伯特是德国海德堡大学的粒子物理学家。他带领一个团队研究被称为“五夸克”的亚原子粒子。所有六名团队成员都可以访问用于运行多步分析的软件代码。程序员每天更新他们的特性并修复漏洞。然而,随着每个代码的变化,它们可能会引入意外错误,从而中断底层算法。
为了防止这种情况发生,团队反复检查了他们的分析,并使用了错误检查算法。每次提出更改时,它们都可以确保软件的正常运行。例如,测试验证了当在实际数据上运行时,噪声消除算法可以给出正确的输出。
2015年,为了节省时间和资源,诺伯特团队从技术行业获得灵感,并使用一种称为“持续集成”的流程来自动化测试。
连续累计
在持续集成中,软件代码的更改会自动触发重复性任务,如错误检查。从根本上说,这个过程简化了程序员必须完成的任务。程序员通常会编写一个定期运行的测试列表,以确保他们的代码有效,就像诺伯特团队所做的那样。然而,忙碌的团队可能会忘记或没有时间运行它们,从而导致错误。持续集成自动化了这个过程,因此无论何时发生变化,这些检查都会运行,从而节省团队成员查找错误的时间。进行基因组分析的团队可以在工作台上花费更多的时间,而开发气候预测软件的团队可以更好地改进模型。换句话说,由此产生的安心和测试本身一样好:一个设计糟糕的测试可以让错误不被发现地通过。
这个过程在商业和开源领域很常见。在新加坡举行的2016年IEEE/ACM自动化软件工程国际会议上报告的一项研究发现,在编码协作网站GitHub上托管的34544个最受欢迎的开源项目中,约有40%使用了持续集成。
只有少数开源项目或软件被认为是科学的,但越来越多的科学家正在寻求持续集成,以自动化耗时的任务,从测试代码到用最新数据更新文件。
来自类似机构的研究人员,如瑞士日内瓦附近的欧洲粒子加速器实验室、美国华盛顿里奇兰的太平洋西北国家实验室的研究人员以及加拿大多伦多安大略癌症研究所的研究人员已经接受了这种方法,但其在科学中的应用仍然相对较少。
对诺伯特来说,持续的整合确保了渠道的行为保持正确和一致,因为他的团队正在改进其代码以提供“有价值的”保证。"真正的危险是错过一些东西或犯一个小错误。"他说。
例外
目前,各种持续集成服务已经存在。这些产品包括开源无人驾驶飞行器,以及CircleCI、Codeship、GitLab、Shippable和Travis CI等商业选项,所有这些产品都根据所需的测试行为、用户数量以及项目是公共项目还是私人项目提供定价水平。例如,特拉维斯CI对开源项目是免费的,但是私人项目的成本是每月69美元。Shippable为公共项目提供免费的基本服务,但为了支持私人项目和更大的计算能力,每月收费25至150美元。
然而,研究人员应该考虑什么是合适的和值得投资的。不是每个项目都需要持续的集成以及设置和配置一个有挑战性的服务。费城宾夕法尼亚大学的数据科学博士后丹尼尔·希姆斯坦说,如果服务需要与具有法律限制访问权限的软件或数据进行交互,就会出现更多的困难。
此外,代码通常只使用一次,因此降低了成本。“对于常规研究编码,代码的数量仍然不足以使连续集成有价值。”加州大学圣地亚哥分校的高性能计算专家Andrea Zonca说。他在发布代码时使用Travis CI,但他编写的大部分代码都是他自己一次性使用的,不会再次执行。
如果代码不断更新并需要重复测试,计算成本也会增加,这就是为什么诺伯特的实验室只在代码修改后测试最关键的数据分析。
德国弗赖堡大学的生物信息学专家比约恩·格鲁宁说,尽管存在这些挑战,持续集成服务通常会提高代码质量。特别是对于像银河这样的大规模项目,这是一个由格鲁宁和160多人开发的生物信息学工具包。
据格鲁宁称,持续集成缩短了批准银河项目的周转时间,让程序员在提交新特性和补丁时更有信心。他说,在这些服务出现之前,类似项目的研究人员在验证他们的合作伙伴提出的每个新功能时,经常会偏离现实,因为他们没有时间。
一些研究人员使用连续集成来自动化非编程任务。今年4月,作为研究生态系统如何随时间变化的项目的一部分,佛罗里达大学的生态学家伊森·怀特(Ethan White)帮助配置Travis CI自动更新新的野外或气象站数据图表,每月为研究团队节省5个小时。
持续集成帮助Himmelstein自动修改科学论文、引文和网页文本或代码更新。他说,如果没有持续的整合,维护人员可能“变得懒惰,不能每次都更新手稿”
初始化
无论是由第三方托管还是在用户自己的机器上,持续集成服务都由一组定制指令控制。此配置文件定义了要运行的任务,并根据运行这些任务的正确环境(操作系统和软件库)来设置服务器。当服务在设定的时间接收到代码或数据更新时,就会执行这些指令。宾夕法尼亚大学的生物信息学专家凯西·格林用连续整合的方法重新分析了数据,他已经验证了许多当今最流行的服务。"这些服务的好消息是——它们非常相似."他说。
然而,也有一些微妙的差异,如用户可以运行的并行作业的数量或他们的计算能力。“我鼓励人们探索每项服务的局限性,以确保它们与工作流兼容。”格林建议道。
格林说,尽管目前在科学中使用的持续集成的规模仍然很小,但它正在增长,应该有更多的研究人员加入进来。然而,他承认提高速度需要时间,但努力通常是值得的。"分析数据的科学家应该把它放在他们的工具箱里."(晋南编)
中国科学新闻(2017-10-31,第三版国际版)
上一篇:游戏成瘾或许不是病