Abstract
Today’s computational researchers are expected to be highly proficient in using software to solve a wide range of problems ranging from processing large datasets to developing personalized treatment strategies from a growing range of options. Researchers are well versed in their own field, but may lack formal training and appropriate mentorship in software engineering principles. Two major themes not covered in most university coursework nor current literature are software testing and software optimization. Through a survey of all currently available Comprehensive R Archive Network packages, we show that reproducible and replicable software tests are frequently not available and that many packages do not appear to employ software performance and optimization tools and techniques. Through use of examples from an existing R package, we demonstrate powerful testing and optimization techniques that can improve the quality of any researcher’s software.
Highlights
Writing scientific software has progressed from the work of early pioneers to a range of computer professionals, computational researchers, and self-taught individuals
To analyze the use of software optimization tools and techniques, we evaluated all Comprehensive R Archive Network (CRAN) packages on two different metrics: Metric 1: In the source code of each package, search for non-empty src directories using the regular expression pattern “src[^/]Ã/.+”
While the test driven development (TDD) strategy has done much to improve the focus of the software engineering world on testing, some have found that it does not work with all development styles (Hansson, 2014; Sommerville, 2016), and others have reported that it does not increase developer productivity, reduce overall testing effort, nor improve code quality in comparison to other testing methodologies (Fucci et al, 2016)
Summary
Writing scientific software has progressed from the work of early pioneers to a range of computer professionals, computational researchers, and self-taught individuals. While a rigorous and formal software engineering approach is not well suited to the standard lifecycle of research software (Wilson, 2016), there are many techniques that can help to reduce cost of maintenance and speed development While best practices such as the use of version control software, open access to data, software, and results are becoming more wide spread, other practices such as testing and optimization need further attention. To analyze use of software testing techniques, we evaluated all CRAN packages on two different metrics: Metric 1: In the source code of each package, search for non-empty testing directories using the regular expression pattern “[Tt]est[^/]Ã/.+”. To analyze the use of software optimization tools and techniques, we evaluated all CRAN packages on two different metrics: Metric 1: In the source code of each package, search for non-empty src directories using the regular expression pattern “src[^/]Ã/.+”.
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.