  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.
