Furthermore software engineering practices are important for
Furthermore, software engineering practices are important for addressing productivity problems in scientific software. Even though the speed of the hardware is rapidly increasing, the additional complexity makes it more difficult for scientists to be productive developers. According to Faulk et al., the Lapatinib in the scientific development process are the primary barriers to increasing software productivity and these bottlenecks cannot be removed without a fundamental change to the scientific software development process .
The previous paragraphs highlighted the software quality and productivity problems that scientific software developers face. Because developers of more traditional software (i.e. business or IT) have used software engineering practices to address these problems, it is not clear why scientific software developers are not using them. Throughout the literature, various CSE researchers and software engineering researchers have drawn conclusions about the use of software engineering practices in the development of scientific software. To date, there has not been a comprehensive, systematic study of these claims and their supporting evidence. Without this systematic study, it is difficult to picture the actual effectiveness of SE practices in scientific software development. Based on our own experiences interaction with scientific software developers, we can hypothesize at the outset that the relatively low utilization of software engineering practices is the result, at least in part, of two factors: (1) the constraints of the scientific software domain (Section 2) and (2) the lack of formal training of most scientific software developers.
This paper has three primary contributions.
Therefore, the goal of this paper is to analyze information reported in the literature in order to develop a list of software engineering practices researchers have found to be effective and a list of practices researchers have found to be ineffective. In order to conduct this analysis, we performed a systematic literature review to examine the claims made about software engineering practices in the scientific software literature and in the software engineering literature. In this paper, we define a claim as: any argument made about the value of a software engineering practice, whether or not there is any evidence given to support the argument. In particular, we are interested in identifying those claims that are supported by empirical evidence.
The remainder of this paper is organized as follows: Section 2 provides background on previous research about SE for scientific software. Section 3 describes the research methodology used in this systematic literature review. Section 4 reports the scientists’ and software engineers’ claims about SE for scientific software.
Background Traditional software development focuses on the process of developing software to fulfill the needs of a customer. This focus on the process has led software engineers to emphasize quality of the code itself. Scientific software, on the other hand exists primarily to provide insight into important scientific or engineering questions that would be difficult to answer otherwise. Because the goal for scientific software developers is the creation of new scientific knowledge, the emphasis placed on software quality (i.e. correctness of code, maintainability, and reliability) has been historically lower than seen in more traditional software engineering . Furthermore, even for developers who place a great deal of emphasis on software quality, it is likely that at least some existing software engineering practices must be tailored to be effective in scientific software development . The remainder of this paper focuses on the suitability of existing software engineering practices to address the issues facing scientific software developers. To provide some background, it is important to describe the scientific software community. While the scientific software community is not monolithic, Basili et al.  enumerated three characteristics that are common across the majority of the community. In addition to these common characteristics, Basili et al.  also enumerate three variables that differentiate projects within the scientific software community. The following subsections describe the common and variable aspects, respectively.