-
Notifications
You must be signed in to change notification settings - Fork 5
Description
NMF Synchronizations are used to implement the synchronization between the two versions of the data model involved in each scenario. Two solutions are provided: a specific one, where overlaps between models need to be declared, and a generic one, where only overlaps that require some sort of custom transformation are declared.
Expressiveness
Correctness criteria has not been ported to .NET and this aspect of the benchnmark could not be checked. For example, in scenario3-forward of the Generic solution, the change to the instance V2 is performed before the initial synchronization. Is the change in the target instance ignored? The benchmark provides two test cases for each scenario.
The generic solution, by generating blocks, has been developed explicitly for the round-trip case and it does not support the full expressivity of the modeling language (e.g., inheritance, multivalued attributes and references).
Comprehensibility
Understanding the generic solution involves the use of reflection in the .NET framework, and this part is a bit verbose. The specification of mappings, in both solutions, is fairly intuitive but there are features of NMF Synchronizations that have not been explained (the method shouldCorrespond, the methods Coalesce and CoalesceBack).
Bidirectionality
The solution is fully bidirectional, including the reversal of expressions involving operations (like difference). This is possible because NMF provides a mechanism for defining the reversal of operations.
Re-usability
NMF provides superimposition for reusing NMF synchronization blocks in scenario 2 and the generation of blocks enables the reuse of migration logic in scenario 1.
Performance
The author argues that the generic solution needs not be computationally more expensive than the specific one because .NET compiles expressions built through reflection to object code. This is an interesting point. However, runtimes have not been analysed because the performance tests have not been ported to .NET.