As the title suggests, the entire app is to be overhauled. It is highly coupled in its current state. I propose an atomized-MVC approach, i.e. each unit of the app is packaged as an MVC model, with the view holding the widgets, the controller observing/reacting to view changes (user actions) and in turn calling methods of the model, which houses the current state of the view. The model has the necessary logic to update its state. The various units of the app are lightly connected via a network of models, with all models connected to one or more common models, e.g. samples model, protocols model, etc. All models are observable, allowing them to stay in sync via traitlets features. In addition, the views are automatically updated by observing their respective models.
Early testing of this approach suggests a significant improvement in performance. In addition, the high-cohesion, low-coupling of this approach improves maintainability and extensibility.
As the title suggests, the entire app is to be overhauled. It is highly coupled in its current state. I propose an atomized-MVC approach, i.e. each unit of the app is packaged as an MVC model, with the view holding the widgets, the controller observing/reacting to view changes (user actions) and in turn calling methods of the model, which houses the current state of the view. The model has the necessary logic to update its state. The various units of the app are lightly connected via a network of models, with all models connected to one or more common models, e.g. samples model, protocols model, etc. All models are observable, allowing them to stay in sync via
traitlets
features. In addition, the views are automatically updated by observing their respective models.Early testing of this approach suggests a significant improvement in performance. In addition, the high-cohesion, low-coupling of this approach improves maintainability and extensibility.