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.

[1]  Jeremy T Kerr,et al.  The missing Madagascan mid-domain effect. , 2006, Ecology letters.

[2]  Thierry Deutsch,et al.  Organizing Software Growth and Distributed Development: The Case of Abinit , 2011, Computing in Science & Engineering.

[3]  Eliot Soloway,et al.  Workshop on empirical studies of programmers , 1986, SOEN.

[4]  Jeremy T. Kerr,et al.  Testing, as opposed to supporting, the Mid‐domain Hypothesis: a response to , 2007 .

[5]  John Boyle,et al.  Managing Chaos: Lessons Learned Developing Software in the Life Sciences , 2009, Computing in Science & Engineering.

[6]  Andy Roberts,et al.  How Accurate Is Scientific Software? , 1994, IEEE Trans. Software Eng..

[7]  Diane Kelly,et al.  Five Recommended Practices for Computational Scientists Who Write Software , 2009, Computing in Science & Engineering.

[8]  Karl Fogel,et al.  Producing open source software - how to run a successful free software project , 2005 .

[9]  Joshua Kerievsky,et al.  Refactoring to Patterns , 2004, XP/Agile Universe.

[10]  Thomas Epperly,et al.  Why Johnny can't build [portable scientific software] , 2003, Comput. Sci. Eng..

[11]  Laurie A. Williams,et al.  Pair Programming , 2010, Encyclopedia of Software Engineering.

[12]  P. Park,et al.  Comment on “Drosophila Dosage Compensation Involves Enhanced Pol II Recruitment to Male X-Linked Promoters” , 2013, Science.

[13]  Diane Kelly,et al.  Dealing with Risk in Scientific Software Development , 2008, IEEE Software.

[14]  Alistair Cockburn,et al.  Agile Software Development , 2001 .

[15]  Geoffrey Chang,et al.  Retraction of "Structure of MsbA from Vibrio cholera: a multidrug resistance ABC transporter homolog in a closed conformation" [J. Mol. Biol. (2003) 330 419-430]. , 2007, Journal of molecular biology.

[16]  Greg Wilson,et al.  Configuration Management for Large-Scale Scientific Computing at the UK Met Office , 2008, Computing in Science & Engineering.

[17]  Andreas Zeller,et al.  Why Programs Fail: A Guide to Systematic Debugging , 2005 .

[18]  Michael E. Fagan Design and Code Inspections to Reduce Errors in Program Development (Reprint) , 2002, Software Pioneers.

[19]  Michael C. Feathers Working Effectively with Legacy Code , 2004, XP/Agile Universe.

[20]  Michael E. Fagan Design and Code Inspections to Reduce Errors in Program Development , 1976, IBM Syst. J..

[21]  Stanley Letovsky,et al.  Cognitive processes in program comprehension , 1986, J. Syst. Softw..

[22]  Retraction notice to “Plasma PCSK9 levels and clinical outcomes in the TNT (Treating to New Targets) Trial”. , 2013, Journal of the American College of Cardiology.

[23]  Judith Segal,et al.  When Software Engineers Met Research Scientists: A Case Study , 2005, Empirical Software Engineering.

[24]  Paul F. Dubois,et al.  Maintaining correctness in scientific programs , 2005, Comput. Sci. Eng..

[25]  David W. Binkley,et al.  To camelcase or under_score , 2009, 2009 IEEE 17th International Conference on Program Comprehension.

[26]  dave Why Crunch Mode Doesn't Work , 2005 .

[27]  Gerard Meszaros,et al.  xUnit Test Patterns: Refactoring Test Code , 2007 .

[28]  Greg Wilson,et al.  Software Carpentry: lessons learned , 2014, F1000Research.

[29]  Steve McConnell,et al.  Code complete - a practical handbook of software construction, 2nd Edition , 1993 .

[30]  Robert K. Colwell,et al.  A strong Madagascan rainforest MDE and no equatorward increase in species richness: re-analysis of 'The missing Madagascan mid-domain effect', by Kerr J.T., Perring M. & Currie D.J. (Ecology Letters 9:149-159, 2006). , 2007, Ecology letters.

[31]  Feng Liu,et al.  A survey of the practice of computational science , 2011, 2011 International Conference for High Performance Computing, Networking, Storage and Analysis (SC).

[32]  Robert C. Martin Agile Software Development, Principles, Patterns, and Practices , 2002 .

[33]  William Stafford Noble A Quick Guide to Organizing Computational Biology Projects , 2009, PLoS Comput. Biol..

[34]  Judith Segal,et al.  Developing Scientific Software , 2008, IEEE Software.

[35]  Les Hatton,et al.  The T-experiments: errors in scientific software , 1996, Quality of Numerical Software.

[36]  Diane Kelly,et al.  Testing for trustworthiness in scientific software , 2009, 2009 ICSE Workshop on Software Engineering for Computational Science and Engineering.

[37]  Thomas C. Herndon,et al.  Does high public debt consistently stifle economic growth? A critique of Reinhart and Rogoff , 2014 .

[38]  Steven H. D. Haddock,et al.  Practical Computing for Biologists , 2010 .

[39]  Roy Osherove The Art of Unit Testing: With Examples in .NET , 2009 .

[40]  Jeffrey C. Carver,et al.  Software Development Environments for Scientific and Engineering Software: A Series of Case Studies , 2007, 29th International Conference on Software Engineering (ICSE'07).

[41]  Brian E. Granger,et al.  IPython: A System for Interactive Scientific Computing , 2007, Computing in Science & Engineering.

[42]  Clifford A Goudey,et al.  Aquaculture in Offshore Zones , 2006, Science.

[43]  吴树峰 从学徒到大师之路--读《 The Pragmatic Programmer, From Journeyman to Master》 , 2007 .

[44]  Manuela Herman,et al.  The Art Of Unit Testing With Examples In Net , 2016 .

[45]  Philip J. Barter,et al.  Plasma PCSK9 levels and clinical outcomes in the TNT (Treating to New Targets) Trial (Retraction of vol 59, pg 1778, 2012) , 2013 .

[46]  Julia Eichmann,et al.  Making Software - What Really Works, and Why We Believe It , 2011, Making Software.

[47]  Pras Pathmanathan,et al.  Chaste: using agile programming techniques to develop computational biology software , 2008, Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences.

[48]  Yogesh L. Simmhan,et al.  The Open Provenance Model (v1.01) , 2008 .

[49]  Judith Segal,et al.  Models of scientific software development , 2008, CSE 2008.

[50]  Jorge Aranda Software Carpentry Assessment Report , 2012 .

[51]  Andreas Zeller CHAPTER 6 – Scientific Debugging , 2009 .

[52]  Lutz Prechelt Two Comparisons of Programming Languages , 2011, Making Software.

[53]  G. Chang,et al.  Structure of the multidrug resistance efflux transporter EmrE from Escherichia coli. , 2004, Proceedings of the National Academy of Sciences of the United States of America.

[54]  Henrik Kniberg,et al.  Scrum and XP from the Trenches: Enterprise Software Development , 2007 .

[55]  Sergey Fomel,et al.  Reproducible Computational Experiments using Scons , 2007, 2007 IEEE International Conference on Acoustics, Speech and Signal Processing - ICASSP '07.

[56]  Douglas H. Deutschman,et al.  Differential Responses of two Species of Kangaroo Rat (Dipodomys) to Heavy Rains: a Humbling Reappraisal , 2008 .

[57]  Joel Spolsky The Joel Test: 12 Steps to Better Code , 2004 .

[58]  R Yihui Xie,et al.  knitr : A General-Purpose Tool for Dynamic Report Generation in , 2013 .

[59]  Michael B. Jones,et al.  The problems you're having may not be the problems you think you're having: results from a latency study of Windows NT , 1999, Proceedings of the Fifth IEEE Real-Time Technology and Applications Symposium.

[60]  Christopher J. Roy,et al.  Verification and Validation in Scientific Computing , 2010 .

[61]  Paul F. Dubois,et al.  Issue tracking , 2003, Comput. Sci. Eng..

[62]  Greg Wilson,et al.  Software Carpentry: Getting Scientists to Write Better Code by Making Them More Productive , 2006, Computing in Science & Engineering.

[63]  David W. Kane,et al.  Agile methods in biomedical software development: a multi-site experience report , 2006, BMC Bioinformatics.

[64]  Michael A. Heroux,et al.  Barely sufficient software engineering: 10 practices to improve your CSE software , 2009, 2009 ICSE Workshop on Software Engineering for Computational Science and Engineering.

[65]  Janice Singer,et al.  How do scientists develop and use scientific software? , 2009, 2009 ICSE Workshop on Software Engineering for Computational Science and Engineering.

[66]  Penny Grubb,et al.  Software Maintenance: Concepts and Practice , 2003 .

[67]  Forrest Shull,et al.  How Effective Is Test-Driven Development? , 2011, Making Software.

[68]  Retraction Kiehntopf,et al.  Retraction , 1997, Concurr. Comput. Pract. Exp..

[69]  Elmar Jürgens,et al.  Do code clones matter? , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[70]  Roger R. Hock,et al.  Forty Studies That Changed Psychology : Explorations into the History of Psychological Research , 1992 .

[71]  Peter Smith Software Build Systems: Principles and Experience , 2011 .

[72]  David Kane,et al.  Introducing agile development into bioinformatics: an experience report , 2003, Proceedings of the Agile Development Conference, 2003. ADC 2003.

[73]  Z. Merali Computational science: ...Error , 2010, Nature.

[74]  C. Alberini,et al.  Memory , 2006, Cellular and Molecular Life Sciences CMLS.

[75]  Moshe Y. Vardi Science has only two legs , 2010, Commun. ACM.

[76]  Jason Cohen Modern Code Review , 2011, Making Software.