-
Notifications
You must be signed in to change notification settings - Fork 9
Description
The DFDCyclicTransposeFlowGraphFinder detects cycles via the entity names of the nodes already in the tree structure. This causes issues with models that were converted from PCM since they usually contain multiple Nodes with the same entity name. Switching from Entity Name to Node based detection would also not solve the issue of complex pseudo cycles as its completely valid to pass through the same node multiple times without actually having a "real" cycle.
I added a model in DataFlowAnalysis/ExampleModels#13 that shows a pseudocycle with exactly that behavior
I therefore changed the DFDCyclicTransposeFlowGraphFinder to Pin based cycle recognition. However after my changes were done the difference between the Cyclic and Non-Cyclic finder amounted to about 15 lines (not considering the added heuristics for higher efficiency). Considering this and that @Nicolas-Boltz wanted at least a warning to be displayed when a cycle is found with the Non-Cyclic finder, which would be 10 of these 15 lines difference, I decided to fully integrate the Cycle Detecting and Resolution into the Non-Cyclic finder in #209.
This means that the DFDTransposeFlowGraphFinder is then able to handle all DFDs with and without cycles but still inform the user about the cycle handling protocol. Due to the added heuristics it also runs significantly faster than before which made us reenable the bigger TU Models.
The only functionality "lost" is the possibility of running a cycle more than one time. This however has been prevented by the unification process of the DFDVertex even before the changes.