| Literature DB >> 32203531 |
Michael Riesch1, Tien Dat Nguyen1, Christian Jirauschek1.
Abstract
Science depends heavily on reliable and easy-to-use software packages, such as mathematical libraries or data analysis tools. Developing such packages requires a lot of effort, which is too often avoided due to the lack of funding or recognition. In order to reduce the efforts required to create sustainable software packages, we present a project skeleton that ensures the best software engineering practices from the start of a project, or serves as reference for existing projects.Entities:
Year: 2020 PMID: 32203531 PMCID: PMC7089539 DOI: 10.1371/journal.pone.0230557
Source DB: PubMed Journal: PLoS One ISSN: 1932-6203 Impact factor: 3.240
Overview of best practices in software engineering for scientific software projects.
For each best practice, implementation candidates are listed where the selected choice is denoted in bold.
| Group | Best practice | Implementation candidates (not exhaustive) |
|---|---|---|
| Project management | Version control system | |
| Project management tool | ||
| Workflow | ||
| Coding style | Code formatting style | |
| Code formatting tool | ||
| Static code analysis | clang-tidy, cppcheck, cpplint | |
| Independence | Use open file formats | e.g., JSON, CSV, HDF5 |
| Use open-source libraries | e.g., Eigen, FFTW, GNU Scientific Library | |
| Automation | Continuous integration | |
| Build automation | ||
| Documentation | Function reference | |
| “Big picture” documentation | ||
| Testing | Unit test framework | |
| Code coverage report | ||
| Deployment | Package binaries | |
| Online documentation |
Fig 1Overview of the project skeleton.
The source code and dependencies of a scientific software project are denoted in orange. These are the parts the developer has to provide. The presented skeleton guides the project from creation to deployment. Here, the arrows denote jobs that are created by the CMake build system. These jobs are triggered during the different continuous integration stages (build, tests, quality, deploy) or (in the case of the dashed arrows) by the conda-forge build service that follows the recipe [18]. The job names indicate the tools in use, where CXX represents one of the C++ compilers that are supported by CMake.
Fig 2Creating an instance of the project skeleton on GitHub.
On the project page of bertha [20], click on “Use this template”. In the following, enter the desired owner, repository name, and project description. The button “Create repository from template” will then create the instance.
Fig 3Creating an instance of the project skeleton in GitLab.
Click on the plus button to create a new project. After selecting the “Create from template” tab, choose bertha by clicking “Use this template” (currently in development, see [21]). Then, enter the project name and description and click “Create project”.