• DocumentCode
    235733
  • Title

    Towards Test Driven Development for Computational Science with pFUnit

  • Author

    Rilee, Michael ; Clune, Thomas

  • fYear
    2014
  • fDate
    21-21 Nov. 2014
  • Firstpage
    20
  • Lastpage
    27
  • Abstract
    Developers working in Computational Science & Engineering (CSE)/High Performance Computing (HPC) must contend with constant change due to advances in computing technology and science. Test Driven Development (TDD) is a methodology that mitigates software development risks due to change at the cost of adding comprehensive and continuous testing to the development process. Testing frameworks tailored for CSE/HPC, like pFUnit, can lower the barriers to such testing, yet CSE software faces unique constraints foreign to the broader software engineering community. Effective testing of numerical software requires a comprehensive suite of oracles, i.e., use cases with known answers, as well as robust estimates for the unavoidable numerical errors associated with implementation with finite-precision arithmetic. At first glance these concerns often seem exceedingly challenging or even insurmountable for real-world scientific applications. However, we argue that this common perception is incorrect and driven by (1) a conflation between model validation and software verification and (2) the general tendency in the scientific community to develop relatively coarse-grained, large procedures that compound numerous algorithmic steps.We believe TDD can be applied routinely to numerical software if developers pursue fine-grained implementations that permit testing, neatly side-stepping concerns about needing nontrivial oracles as well as the accumulation of errors. We present an example of a successful, complex legacy CSE/HPC code whose development process shares some aspects with TDD, which we contrast with current and potential capabilities. A mix of our proposed methodology and framework support should enable everyday use of TDD by CSE-expert developers.
  • Keywords
    parallel processing; program testing; program verification; CSE software; TDD; complex legacy CSE-HPC code; computational science and engineering; finite-precision arithmetic; high performance computing; model validation; numerical errors; numerical software effective testing; pFUnit; scientific community; software development risk mitigation; software verification; test driven development; Approximation methods; Communities; Magnetic domains; Numerical models; Scientific computing; Software; Testing;
  • fLanguage
    English
  • Publisher
    ieee
  • Conference_Titel
    Software Engineering for High Performance Computing in Computational Science and Engineering (SE-HPCCSE), 2014 Second International Workshop on
  • Conference_Location
    New Orleans, LA
  • Type

    conf

  • DOI
    10.1109/SE-HPCCSE.2014.5
  • Filename
    7017328