论文标题
科学软件开发的软件工程实践:系统地图研究
Software Engineering Practices for Scientific Software Development: A Systematic Mapping Study
论文作者
论文摘要
背景:由于这些应用的必要复杂性,规模的增加以及对强化维护和重复使用的需求,科学软件应用程序的开发远非微不足道。目的:为此,科学软件的开发人员(通常缺乏正式的计算机科学背景)需要使用适当的软件工程(SE)实践。本文介绍了一项有关使用SE用于科学应用程序开发及其对软件质量影响的系统映射研究的结果。方法:为了实现这一目标,我们对359篇论文进行了系统的映射研究。我们首先描述了科学软件开发中使用的SE实践目录。然后,我们讨论了驱动这些实践应用的感兴趣的质量属性,以及应用质量实践的暂定副作用。结果:主要发现表明,科学软件开发人员专注于提高实施生产率的实践,例如代码重用,使用第三方库以及“良好”编程技术的应用。此外,除了发现性能是许多这些应用程序的钥匙驱动器之外,科学软件开发人员还发现可维护性和生产力很重要。结论:研究结果与现有文献进行了比较,在软件工程棱镜下进行了解释,并提供了对研究人员和从业人员的各种影响。该研究的关键发现之一对于推动未来的研究努力很重要,这是缺乏对使用软件实践时需要进行的权衡的证据,即对其他质量属性的负面影响(间接)影响。
Background: The development of scientific software applications is far from trivial, due to the constant increase in the necessary complexity of these applications, their increasing size, and their need for intensive maintenance and reuse. Aim: To this end, developers of scientific software (who usually lack a formal computer science background) need to use appropriate software engineering (SE) practices. This paper describes the results of a systematic mapping study on the use of SE for scientific application development and their impact on software quality. Method: To achieve this goal we have performed a systematic mapping study on 359 papers. We first describe a catalogue of SE practices used in scientific software development. Then, we discuss the quality attributes of interest that drive the application of these practices, as well as tentative side-effects of applying the practices on qualities. Results: The main findings indicate that scientific software developers are focusing on practices that improve implementation productivity, such as code reuse, use of third-party libraries, and the application of "good" programming techniques. In addition, apart from the finding that performance is a key-driver for many of these applications, scientific software developers also find maintainability and productivity to be important. Conclusions: The results of the study are compared to existing literature, are interpreted under a software engineering prism, and various implications for researchers and practitioners are provided. One of the key findings of the study, which is considered as important for driving future research endeavors is the lack of evidence on the trade-offs that need to be made when applying a software practice, i.e., negative (indirect) effects on other quality attributes.