Video | Managing the complexity in the software we build to study complex systems

Rewatch the presentation delivered by Allen Lee on 04 March 2024

Posted by Open Modeling Foundation on March 06, 2024 · 4 mins read

On 04 March, the second ModelShare workshop took place with the Open Modeling Foundation’s Allen Lee at the helm. Allen introduced various factors to consider when developing computational models, as well as questions with which modeling communities are still getting to grips.

In terms of considerations for successful modeling initiatives, Allen spoke of the fundamental process of developing a model: (i) understand and decompose the key elements of that which is being modeled, and (ii) recompose these elements into a computationally operable system. With this high level process in mind, we can better frame two considerations Allen suggests enable a model’s success; locality and observability.

  • Locality is about creating system components that have an extremely focused scope; much like with the transition from software monoliths to microservices, drawing on more local data that reduce complexity can lead to more transparent and resilient systems; and
  • Observability is about being able to inspect and debug software (e.g.: with monitoring or logging tools), as well as providing transparency into your computational model through rigorous documentation and metadata curation practices.

Allen also introduces the notion of encapsulation; the concept of hiding information that doesn’t need to be exposed to others. In our day-to-day lives, this is rather simple. For example, if it’s raining outside and a friend asks what the weather is like, you probably wouldn’t respond with the air pressure, the current phase of the Moon, or whether the clouds look ominous or not. You would say “it’s raining.” You instinctively know what information needs sharing, and what information can be kept to yourself. Encapsulation works something like this, establishing the attributes that don’t need to be shared or exposed from one part of a software system to another. This can help us to manage software complexity by pushing complex logic and hiding it within a coherent software module. In general, it is best to anticipate and encapsulate the things that are most likely to change in your system; to insulate yourself from those changes when they can and do occur.

Regarding questions within scientific communities, the dependence on technical tools such as GitHub was discussed during the Q&A (not in the video). These tools may be necessary for the computational aspects of scientific research, but domain experts may not have sufficient training or experience with such tools. Allen described the importance of clear documentation practices and the use of clear language when sharing computational outputs. There is also a tension between the need for domain experts to receive more training on such tools, and the need for the computer science community to lead by example and share exemplars of rigorous standards.

Relatedly, a question about the impact of model-sharing was discussed. One underlying assumption throughout the discussion was that sharing data and practices in accessible ways ensures the longevity of scientific findings; if we can share our models transparently with generations to come, we are feeding into humanity’s shared knowledge base.

Watch the full presentation below, join us on 25 March for the second workshop, and sign up to our Google Group to learn how you can get involved with the ModelShare program!

📸 Image by Alan Warburton / © BBC / Better Images of AI / Plant / Licenced by CC-BY 4.0