Function Flow Block Diagram (FFBD)
Function flow block diagrams (FFBDs) have the classic features of logic structures and control flow. Part of the behavioral (logical architecture) representation set, they unambiguously represent the flow of control through sequencing of functions and constructs, focusing exclusively on structural control and ignoring the sequencing and synchronization aspects of the corresponding data flow. The FFBD is often used in conjunction with an N2 diagram to provide a more complete representation of behavior.
The FFBD is available for entities in the Function class (as well as any other subclasses of ProcessingUnit).
When drawn horizontally, the flow of control is left to right. When drawn vertically, the flow of control is top to bottom.
Rectangular nodes represent functions. Circular nodes and branching structures represent control constructs - the building blocks of behavior. As a function completes execution, flow of control proceeds along the branch lines to the next function or control construct. Each construct has a precise definition that prescribes how control will be passed within the construct and when the construct itself will end. This combination is fully executable (not just animated) by the simulator.
GENESYS supports the standard hierarchical features of logical architectures. When the decomposition of an entity has been specified, the icon representing that entity has a black box in the upper left corner as a visual cue.
A special aspect of GENESYS' FFBD and EFFBD representations are reference nodes. Reference nodes reflect the context immediately surrounding this behavior. The function shown in a gray box with a broken frame on the left edge represents the last function to complete before this decomposition begins (the source of control flow). The function shown in a gray box with a broken frame on the right edge represents the next function to enable when this decomposition completes (the sink of control flow). When there is no previous or next function, the boxes are simply labeled "Ref." When a function appears multiple times in a system model or when the previous / next construct is complex, reference nodes can begin to branch, showing all of the paths into and out of a given function's decomposition. These reference nodes are automatically computed and updated by GENESYS. In this way, the reference nodes provide very valuable context information.
NOTE:
|
When reference nodes branch, there are always an equal number of branches on the source and sink of the diagram. These branches correspond - if you enter the decomposition by the first branch on the left, you will exit by the first branch on the right, and so on.
|
Toolbox Properties
In addition to the classic diagram options, the FFBD settings include:
- Show Reference Nodes - controls whether reference nodes should be computed and shown at the beginning and end of the flow. Reference nodes indicate the source and sink of the control flow (what function completed immediately before this flow begins and what function will be enabled when this flow completes).
Diagram Toolbox
The constructs and key entities tabs allow you to quickly develop your FFBD diagram, while the all entities tab enables you to relate your functions to the remainder of your system definition.
Constructs
- New Entity - drop onto a branch to insert a new activity (function) as part of the diagram decomposition (decomposed by)
- Entity - drop onto the diagram background to insert an existing activity (function) as part of the diagram decomposition (decomposed by)
- Parallel - drop onto a branch to insert a new parallel construct (concurrency) with two branches
- Select - drop onto a branch to insert a new select construct (exclusive OR) with two branches
- Loop - drop onto a branch to insert a new loop construct
- Loop Exit - drop onto the end of a branch within a loop construct to insert an exit from the enclosing loop
- Iterate - drop onto a branch to insert a new iterate construct
- Replicate - drop onto a branch to insert a new replicate construct
- Exit - drop onto the end of a branch to insert a new exit from this decomposition
- Exit Condition - drop onto a function node to add an exit branch
- Branch - drop onto a parallel or select construct to add an additional branch
- New Input - drop onto any function node to create a new item as an input (inputs)
- Inputs - drop onto any function node to add an existing item as an input (inputs)
- New Trigger - drop onto any function node to create a new item that triggers the node
- Triggers - drop onto any function node to relate an existing item that triggers the node
- New Output - drop onto any function node to create a new item as an output (output from)
- Outputs - drop onto any function node to add an existing item as an output (output from)
Utilities
- Image - drop onto the diagram to insert a new picture
- Note - drop onto the diagram to insert a new note (descriptive text in a note icon)
- Shapes - drag one of the shapes from the toolbox and drop onto the diagram to insert a new shape
Key Entities
- Component - drop an existing component onto a function to relate it to the node using the performs relation
- DomainSet - view the existing DomainSet entities in the project
- Exit - drop an existing exit onto a function node to assign the exit as an exit condition (exits by)
- Function - drop an existing function onto the diagram background to it as part of the diagram decomposition (decomposed by)
- Item - drop an existing item onto a function node to establish any valid relationship. Most often, this will be triggers or output from.
- Resource - drop an existing resource onto a function node to relate it to the node using the captured by, consumed by, or produced by relation
All Entities - all classes and entities in the system model, allowing you to drag any entity on top of a diagram node to establish relationships with the balance of your system model
Context Menu Commands
Depending on what is selected on the diagram, the following options may be available:
Tips and Tricks
- Double-clicking on constructs is a shortcut for editing their specific properties. Double-clicking on a branch allows you to edit the branch annotation. Double-clicking on an iterate or a replicate allows you to specify the corresponding domain set. Control double-clicking is a shortcut for adding a branch to a parallel or select construct.
- When using commands to manipulate the diagram (or when double-clicking a construct on the toolbox for quick insertion), selecting the branch will insert at the end of the branch. To insert before a construct, have the construct selected.
- When using drag-drop to manipulate the diagram, dropping a node or construct on the background adds the object to the end of the main branch. Dropping it on a branch inserts at the specific position on the branch.
- Using CTRL while using drag-drop will either move the selected node(s) or insert a copy of the selected node(s). Hold CTRL before dragging to use this feature. If you release CTRL before you release the mouse button, the node(s) will be moved to the new position. If you continue to hold CTRL until after you release the mouse, the node(s) will be copied into the new location.
- Nested logic is used when determining the color for constructs. Therefore, setting the color scheme for a parallel construct affects all constructs within that construct that are set to use the default color scheme. This allows you to quickly apply color schemes to nested constructs.
- By default, the function icon displays the component the function is allocated to as the bottom line. Maintaining this representation complements the logical architecture with the physical allocation.
- While most users think of dragging objects from the toolbox onto the diagram, you can also drag objects from the diagram onto toolbox entities to establish relationships. This is particularly useful when allocating functions. Shift-click to select the functions of interest and then drop them onto the performing component on the All Entities tab to allocate several functions at once.