Skip to content

DFD Cycle Detection runs on Node entity names - Causes Issues with PCM-created DFDs and Pseudocycles #210

@01Parzival10

Description

@01Parzival10

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.

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingcoreRelated to the core DFD/PCM data flow analysistestingRelated to testing and test cases or models

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions