Software Engineering Practices for Scientific Software Development: A Systematic Mapping Study

10/19/2020
by   Elvira-Maria Arvanitou, et al.
0

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.

READ FULL TEXT

page 9

page 23

page 25

research
01/11/2022

Building Bridges: Establishing a Dialogue Between Software Engineering Research and Computational Science

There has been growing interest within the computational science and eng...
research
06/12/2019

Better Code, Better Sharing:On the Need of Analyzing Jupyter Notebooks

By bringing together code, text, and examples, Jupyter notebooks have be...
research
06/03/2019

A New Framework for software Library Investment Metrics

Software quality is considered as one of the most important challenges i...
research
05/15/2023

A Systematic Mapping Study and Practitioner Insights on the Use of Software Engineering Practices to Develop MVPs

[Background] The MVP concept has influenced the way in which development...
research
12/16/2022

SE Factual Knowledge in Frozen Giant Code Model: A Study on FQN and its Retrieval

Pre-trained giant code models (PCMs) start coming into the developers' d...
research
02/27/2017

xSDK Foundations: Toward an Extreme-scale Scientific Software Development Kit

Extreme-scale computational science increasingly demands multiscale and ...
research
08/31/2021

Mapping breakpoint types: an exploratory study

Debugging is a relevant task for finding bugs during software developmen...

Please sign up or login with your details

Forgot password? Click here to reset