This lesson is in the early stages of development (Alpha version)

Design Principles for Reserach software

Overview

Teaching: 0 min
Exercises: 0 min
Questions
  • How do design principles differ for research software

Objectives
  • To understand design constraints for research software

Research Software Specific Challenges

For most of research software we have a positive feedback loop. When we start exploring some phenomenon we devise a mathematical model for it. In the initial stages one typically focuses on one or two most accessible aspects of the problem. So one makes simplifying assumptions. As understanding grows one starts to relax the simplifying assumptions and the model grows more complex. A more complex problem will usually need more complex software and more hardware resources. The more complex problem will in turn lead to greater understanding … and thus the positive feedback loop persists.

This process leads to several challenges that are unique to RS

An addition challenge is faced by scientific software in that verification is complicated by floating point representation

SOLID Principles Pose Some Difficulties

As shown in the figure, some of the SOLID principles do not work too well with RS. For example the Single Responsibility princple can become difficult to follow when there is a lot of lateral interaction become components and computational efficiency demands fusion of operations. In general greater understanding tends to lead to tighter coupling among components. Open/closed principle run into problem when new insights need invasive alteration of either the numerical method or specific implementation details. To avoid unnecessary code duplication it may be best to allow modification in the existing code. Lateral interactions and tight coupling among interfaces can often make it difficult to segregate interfaces, or to avoid dependency inversion.

We will see examples of some of these challengs that we work through in the next section

Additional Considerations for Research Software

Some additional considerations come into play for designing RS that may not be needed for enterprise software. These are:

Key Points

  • Design principles need to be adapted for research software