7
$\begingroup$

I don't think I've ever seen any scientific computational software that I would consider "good" in terms of software design. I don't mean in terms of functionality, but in terms of good high-level design, coding standards, readability, etc. Most things I've encountered have some degree of bad code smells.

What are some examples of really good computational science software engineering? Why do you like it? Preferably open source so we can see it, any language.

To minimize the subjective nature of the question, and because there's no one "right way" to do things, please give concrete examples of things like software design patterns, agile development practices, regression testing, and similar things implemented in scientific codes.

I like this post titled "The Exceptional Beauty of Doom3's Source Code." I'd love to see a similar example in the scientific world.

$\endgroup$

closed as too broad by Kirill, Daniel Shapero, Paul Jul 12 '16 at 22:27

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • $\begingroup$ Glad you ask this question, I've been wondering about the same! Deal.II has impressed me with its documentation, but I haven't looked at the code. $\endgroup$ – Jannis Teunissen Jul 12 '16 at 20:04
  • 4
    $\begingroup$ This question is dangerously close to a textbook example for the "primarily opinion-based" closure reason. To prevent that, it might be a good idea to make clear in the question what you expect from a good answer (e.g., "please give concrete examples of a good software design pattern, one pattern per answer" rather than "deal.II/FEniCS/dune is teh b3st!!!eleven!"). Ideally, the examples should be specific to numerical code (rather than, e.g., a nifty parameter parser). Finally, this might be a good candidate for a community wiki question (since there's no clear "correct" answer). $\endgroup$ – Christian Clason Jul 12 '16 at 20:42
  • $\begingroup$ A lot of computational codes I have seen in industry and research, ranging from simulation to computer vision, have often been messy to the extent I wonder how they could maintain and improve it. So I understand your question. I think the way the question is worded will draw out answers based on opinions rather than, say, an actual software engineering practice/guideline. Maybe you could find some SE practices/guidelines you like and ask if any computational codes use them? $\endgroup$ – spektr Jul 12 '16 at 21:44
  • 1
    $\begingroup$ I agree it's dangerously close to opinion-based; I added an edit to request concrete examples as suggested. And yes, many research codes of I've worked with have been absolutely horrendous in terms of software design. I'm sure we're all very familiar with that! I hope this doesn't get closed for being "primarily opinion-based"; I think it's a good discussion to have and this is the best place to have it, with a lot of experienced people here. $\endgroup$ – Aurelius Jul 12 '16 at 22:14

Browse other questions tagged or ask your own question.