The T-experiments: errors in scientific software

  title={The T-experiments: errors in scientific software},
  author={Les Hatton},
  booktitle={Quality of Numerical Software},
  • L. Hatton
  • Published in Quality of Numerical Software 1996
  • Computer Science
Extensive tests showed that many software codes widely used in science and engineering are not as accurate as we would like to think. It is argued that better software engineering practices would help solve this problem, but realizing that the problem exists is an important first step. 

Figures and Tables from this paper

Best Practices for Scientific Computing
We describe a set of best practices for scientific software development, based on research and experience, that will improve scientists' productivity and the reliability of their software.
Code Design and Quality Control
ESM codes have mostly been written directly by scientists, as experts in the various geoscientific domains relevant for these model. This contrasts with commercial forms of software development,
Exploring the Role of Diagnosis in Software Engineering
Software engineers, encouraged to believe that their capability to remove defects matches their ambition to do so, rarely contemplate the possibility of software failure during design. Changing this
Automated Software Testing for Matlab
  • S. L. Eddins
  • Computer Science
    Computing in Science & Engineering
  • 2009
Using Matlab xUnit automated testing framework, scientists and engineers using Matlab can make software testing an integrated part of their software development routine.
Mutation Sensitivity Testing
Mutation sensitivity testing addresses challenges of code-testing by showing that a few well-designed tests can detect many code faults and that reducing error tolerances is often more effective than running additional tests.
Design Patterns in Scientific Software
A method of teaching design patterns which introduces patterns as they are used in refactoring, extending and reusing a computational science case study is described.
Bridging the Chasm
This article reviews the research that addresses the gap, exploring how both software engineering and research practice may need to evolve to accommodate the use of software in science.
Programming technology, reliability, safety and measurement
The influence of programming technology on reliability and on safety, and why the industry seems unable to learn from its mistakes, apparently preferring to chase pots of gold with object oriented
Software Intensive Science
This paper argues that the difference between contemporary software intensive scientific practice and more traditional non-software intensive varieties results from the characteristically high
Metamorphic Testing: A Simple Yet Effective Approach for Testing Scientific Software
Why MT is an appropriate testing technique for scientists and engineers who are not primarily trained as software developers and how it can be used to conduct systematic and effective testing on programs that do not have test oracles without requiring additional testing tools are discussed.


NPATH: a measure of execution path complexity and its applications
NPATH, which counts the acyclic execution paths through a function, is an objective measure of software complexity related to the ease with which software can be comprehensively tested.
Reexamining the Fault Density-Component Size Connection
The author found that medium-sized components were proportionately more reliable than small or large ones, and there may be limits on the fault density the authors can achieve.
Investigating the Influence of Formal Methods
The effects of using formal methods to develop an air-traffic-control information system are investigated and a rich record of a tool's or technique's effectiveness is recorded.
An experimental evaluation of the assumption of independence in multiversion programming
N-version programming has been proposed as a method of incorporating fault tolerance into software and it is revealed that the programs were individually extremely reliable but that the number of tests in which more than one program failed was substantially more than expected.
Programming language concepts
This revision of a popular, text/reference guide analyzes and evaluates the important concepts found in current programming languages based on how the language supports software development and improves the reader's ability to appreciate and evaluate programming languages.
Safer C - developing software for high-integrity and safety-critical systems
  • L. Hatton
  • Computer Science
    McGrawHill international series in software engineering
  • 1995
Safer C: Developing Software for High-integrity and Safety-critical Systems highlights the 'holes' in C, but also demonstrates clearly that, employed correctly, C can be used to write software of as high intrinsic quality as other languages.
How Accurate Is Scientific Software?
This paper describes some results of what, to the authors' knowledge, is the largest N-version programming experiment ever performed, to determine just how consistent the results of scientific computation really are, and to estimate accuracy.
A Complexity Measure
  • T. McCabe
  • Computer Science
    IEEE Transactions on Software Engineering
  • 1976
Several properties of the graph-theoretic complexity are proved which show, for example, that complexity is independent of physical size and complexity depends only on the decision structure of a program.
The seismic kernel system — a large‐scale exercise in fortran 77 portability
The design and successful implementation of a 500,000+ line portable FORTRAN 77 package for the processing of seismic data is described, which exhibits demonstrably high efficiency on a wide variety of machines from minicomputers to the largest supercomputers.
C Traps and Pitfalls
This chapter discusses Lexical Pitfalls, Syntactic pitfalls, and Advice and answers about printf, varargs, and stdarg.h: the ANSI varargs.h.