Scientific software design is particularly challenging. Faced with open problems, we need a lot of trial-and-error to just phrase our goals. We write a lot of code and eventually solve the problem, but, as scientists, we never leave the prototyping mindset with our software. Consequently, engineering and design concerns are often neglected. This results in high costs to maintenance and continued development to our software assets.
In this session, we will closely examine our scientific procedure from a software engineering perspective. We’ll start with a black-box description of our goals. We’ll perform the high-level exercise of identifying and qualifying our product, considering our stakeholders, and developing user stories for ourselves and customers. We’ll ask ourselves:
1. What is our end goal? Who benefits from our work?
2. What does it mean for our software to be correct?
3. How do we ourselves use and program our software?
4. What kinds of scientists develop our software?
5. Who else wants to use our software? How will they use it?
The shifting-goals inherent in cutting-edge scientific software suggests an agile software development process. We’ll use the perspective “everything can be automated” in order to redesign our development mindset and software stack. Testing, review, building, and deployment are important considerations.
The internal architecture of our core product, a forward simulator of multiphase subsurface flow, is a topic for another talk. We’ll sketch a greater software ecosystem that is needed around the core product, and how our scientists, programmers, and end-users will interact with the whole.
About the Speaker: Alejandro Queiruga (Project Scientist, Lawrence Berkeley National Laboratory)
Alejandro Queiruga is a project scientist in the Energy Geosciences Division. He works on developing new techniques for multiphase flow and fully-coupled geomechanics. His research focus is on the development process of scientific calculations themselves as well the verification and validation of methods, codes, and theories. He develops the use of meta-programming for numerical method generation and machine learning for discovery of governing equations, with emphasis on end-usability. Alejandro received his PhD and MS from UC Berkeley and received his BS from Carnegie Mellon University.
Host: Dipankar Dwivedi, EGD