Collaborative Research: Making Software Engineering Work for Computational Science & Engineering: An Integrated Approach

Scientific and engineering advances are increasingly dependent upon software, and this overall field is often called Computational Science & Engineering (CSE). With the increase in the reliance on software for many critical decisions and advances, it is of utmost importance for that software to be correct and easy to maintain. As a result, scientists and engineers are devoting a larger percentage of their time to the development and maintenance of code, leaving less time for the underlying science or engineering. The discipline of software engineering (SE) is focused on creating techniques and tools to help developers work more effectively and efficiently. Historically, the use of SE practices for science and engineering software (in CSE) has been relatively low. Modern SE has a number of light-weight practices that would likely fit well into the workflow of science and engineering software projects. The low use of SE in CSE appears to be the result, at least partially, of the lack of properly-tailored, lightweight, practices that have been shown effective in science/engineering domains.<br><br>This project has three main activities:<br><br>(1) Continuing the Software Engineering for Computational Science & Engineering Workshop (SE-CSE) series. This will bring together members of both communities and inform them about the problems and solutions each community has, and will lead to collaborations between the communities.<br><br>(2) Evaluating the usefulness of peer code reviews on scientific and engineering software. By building and validating a set of checklists to support scientific/engineering peer code review, a deeper understanding of the types of defects commonly made by CSE developers will be obtained. This knowledge will not just motivate checklist items, but it will inform the development of additional SE methodologies.<br><br>(3) Developing and evaluating whether properly chosen and clearly presented metrics can be beneficial for scientific and engineering developers. A community survey concerning metrics will provide unique insight into the type of information the CSE developers are currently using and would be interested in using if provided properly. This type of knowledge does not currently exist and will be quite valuable to others in the community wishing to support the use of metrics. The project will build an initial version of a metrics dashboard. This dashboard will act as a proof-of-concept to illustrate that a standard SE methodology (i.e. using metrics to provide insight into the software development process) can be used effectively by CSE developers.<br><br>In addition to the results of the individual activities, all of them together will help advance scientific/engineering progress by helping developers build higher quality software. The project will provide examples of how appropriate SE practices can be used effectively within the CSE domain. Dissemination of these results into the appropriate SE, CSE, and additional venues will allow them to have broad impacts.