Redo data structures
Data structures in DTT have become somewhat convoluted. See #174 (closed) for an example.
Ideas: Restrict key data structures to only describing data and relationships. Put processes else where.
Use only one set of data structures internally. These will be regular C/C++ types. Alternate representations are only used for I/O, such as an xml conversion when writing to file, or for the purposes of an RPC. NO conversion to command line strings for internal consumption.
Tie the GUI to the data state, so that when the GUI is updated the data structures are updated and vice-versa.
Create a domain layer with a domain-driven design to control and process tests. See Domain-Driven Design by Eric Evans.
Adhere to principle of immutable value objects.
Tests remember all settings that created them.
A timeline object for a test: there are two types, absolute and relative. Relative is relative to "now", and is turned into absolute when the test is started. All actual tests and test results use absolute. Perhaps an absolute timeline is just a relative timeline with the Now bound to a particular time.
Problems: This change amounts to a redo of a lot of the diag layer. Diag will mostly be the domain layer and the domain layer will mostly be in diag, but we need to be able handle remote diag connections. I don't know anyone who uses this feature but we can't assume nobody does.
How to tie ROOT gui objects to these data structures in a nice way that's fast and doesn't impact the data structure themselves?