(161a) How to Professionally Develop Reusable Scientific Software – and When Not to
- Conference: AIChE Annual Meeting
- Year: 2019
- Proceeding: 2019 AIChE Annual Meeting
- Group: Computational Molecular Science and Engineering Forum
Monday, November 11, 2019 - 12:30pm-12:45pm
A critical challenge in scientific computing is balancing developing high-quality software with the need for immediate scientific progress. We present a flexible approach that emphasizes writing specialized code that is refactored only when future immediate scientific goals demand it. Our lazy refactoring technique, which calls for code with clearly defined interfaces and sharply delimited scopes to maximize reuse and integrability, helps reduce total development time and accelerates the production of scientific results. We offer guidelines for how to implement such code, as well as criteria to aid in the evaluation of existing tools. To demonstrate their application, we showcase the development progression of tools for particle simulations originating from the Glotzer Group at the University of Michigan. We emphasize the evolution of these tools into a loosely integrated software stack of highly reusable software that can be maintained to ensure the long-term stability of established research workflows.