An Analysis of Process Characteristics for Developing Scientific Software

An Analysis of Process Characteristics for Developing Scientific Software

Diane Kelly (Royal Military College of Canada, Canada)
DOI: 10.4018/978-1-4666-2059-9.ch019
OnDemand PDF Download:
No Current Special Offers


The development of scientific software is usually carried out by a scientist who has little professional training as a software developer. Concerns exist that such development produces low-quality products, leading to low-quality science. These concerns have led to recommendations and the imposition of software engineering development processes and standards on the scientists. This paper utilizes different frameworks to investigate and map characteristics of the scientific software development environment to the assumptions made in plan-driven software development methods and agile software development methods. This mapping exposes a mismatch between the needs and goals of scientific software development and the assumptions and goals of well-known software engineering development processes.
Chapter Preview

Scientific Software

Definition of Scientific Software Development

A project that we categorize as scientific software development has the following three characteristics. First, the software is written to answer a scientific question. The question can be general, such as, “Is it safe to operate this nuclear generating station?” or specific, such as, “Can I track satellites with this telescope?” Second, the writing of the software necessitates the close involvement of someone with deep domain knowledge in the application area related to answering the question. The person with the deep domain knowledge, the scientist, usually writes the software. This is Segal’s professional end-user developer. We have observed cases where the scientist has not written the software, but the software developer has had to become enough of an expert in the domain to understand and implement what the scientist is describing. Third, the software provides output data to support the scientific initiative. A human is in the system loop to examine the data and make observations and ultimately, answer the scientific question. The expectation is that the data provided by the computer solution is correct and will not misguide the scientist answering the question.

The science application can be solving large systems of differential equations, analyzing immense amounts of data such as imagery or bioinformatics, and computing using analytical and empirical models. Our definition of scientific software, however, excludes the following: control software whose main functioning involves the interaction with other software and hardware; user interface software that may provide the input for and report of scientific calculations; and any generalized tool that scientists may use in support of developing and executing their software, but does not of itself answer a scientific question.

Scientific software may have an extensive graphical user interface or interact with other software or hardware to obtain data. It may run on complex multi-processors and require middleware support to make use of hardware capabilities. But in the following discussion, we are talking exclusively about the code that implements the science application whether it is designed as a separate module or inserted into a product that includes these other parts. We contend that this core scientific part of the product requires different considerations when it is being developed.

Complete Chapter List

Search this Book: