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 order to facilitate collaborative work, modern software development techniques also include tools such as version control, bug and feature development tracking, automated regression testing and provide utilities for exchanging this information. These tools are leveraged were possible in the project. This is essential for working across agencies and across time zones, both for initial development and long term evolution and maintenance. However, these tools imply changes in working habits and practices, affecting individual and collaborative work.
In this talk, an overview of the current status of the system will be presented. The new development practices will be described. The implications of the new practices for partners of the project, for research, for testing and validation and for operational use of the system will be presented, including exchanges and transitions between research and operations.