Description
Description
Currently, the cFS, ROS, F' and standalone backends perform similar functionality and are built around similar ideas, but are built slightly differently. This causes an unnecessary amount of code replication, and makes it hard to factorize code out, to incorporate features from a backend into others, and to connect all 4 backends to the GUI.
To make the code easier to maintain and help introduce new features in Ogma, we should modify the implementation of all four of those backends to have the same structure, use similar types, and ideally use the same auxiliary functions. This will help us meet existing requirements in terms of features that need to be implemented in Ogma, and in terms of code cleaning.
Type
- Management: Code cleaning and re-architecturing.
Additional context
None.
Requester
- Ivan Perez.
Method to check presence of bug
Not applicable (not a bug).
Expected result
The cFS, ROS, FPrime and standalone backend use the same types to manage failure, and rely on the same auxiliary functions for the common features they implement.
Desired result
The cFS, ROS, FPrime and standalone backend use the same types to manage failure, and rely on the same auxiliary functions for the common features they implement.
Proposed solution
Make all backends be built around the ExceptT
monad, using just ErrorTriplet
to capture errors, and use the same auxiliary function to read specs for the backends that support it.
Further notes
None.