The key concept in modern software development for complex systems is the separation of concerns. In a well-designed architecture, teams can develop different aspects in parallel without interfering with other teams work and without breaking the components they are not working on. Scientists can be more efficient focusing on their area of expertise without having to understand all aspects of the system. This is similar to the concept of modularity. However, modern techniques (such as Object Oriented programming) extend this concept and, just as importantly, enforce it automatically and uniformly throughout a code.
In this project, the concepts of models is clearly separated from the observation handling with clear interfaces. The data assimilation algorithms are themselves separated from the model space and observation space components. In this talk, an overview of the system and the current status of the implementation of the various data assimilation components will be presented.