There is a gap in scientific information systems development concerning modern software engineering and scientific computing. Historically, software engineering methodologies have been perceived as an unwanted accidental complexity to computational scientists in their scientific systems development. More recent trends, like the end of Moore's law and the subsequent diversification of hardware platforms, combined with the increasing multidisciplinarity of science itself have exacerbated the problem because self-taught "end user developers" are not familiar with the disciplines needed to tackle this increased complexity. On a more positive note, agile programming methods have approached software development practices to the way scientific software is produced. In this work, we present the experience of a multi-year industry research project where agile methods, microservices and DevOps were applied. Our goal is to validate the hypothesis that the use of microservices would allow computational scientists to work in the more minimalistic prototype-oriented way that they prefer while the software engineering team would handle the integration. Hence, scientific multidisciplinary systems would gain in a twofold way: (i) Subject Matter Experts(SME) use their preferable tools to develop the specific scientific part of the system; (ii) software engineers provide the high quality software code for the system delivery.
翻译:在现代软件工程和科学计算方面,科学信息系统的发展存在差距。从历史上看,软件工程方法被视为对计算科学家的科学系统开发的意外复杂性。最近的趋势,如摩尔法律的终结和随后硬件平台的多样化,加上科学本身日益多样化的多元性,使问题更加严重,因为自学的“终端用户开发者”并不熟悉解决这一日益复杂问题所需的学科。从更积极的方面看,灵活的编程方法将软件开发实践与科学软件生产方式相提并论。在这项工作中,我们介绍了一个多年工业研究项目的经验,该项目应用了敏捷的方法、微观服务和DevOps。我们的目标是验证这样一种假设,即使用微观服务将使计算科学家能够以他们所希望的更起码的原型方式工作,而软件工程小组则会处理这种整合问题。因此,科学多学科系统将以双重方式获益:(一) 主题专家(SME) 使用他们更可取的工具开发系统的具体科学部分;(二) 软件工程师为系统交付提供高质量的软件代码。