Enhanced Function Flow Block Diagram (EFFBD)
A variant of the traditional FFBD representation, the EFFBD and its SysML cousin Activity diagram are the most complete representations of behavior. Part of the behavioral (logical architecture) representation set, they unambiguously represent the flow of control through sequencing of functions and constructs as well as the data interactions overlaid to present a more complete picture. EFFBDs also display resources - the third critical aspect of executable behavior.
The EFFBD 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 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.
The rounded rectangles on an EFFBD represent the items or the data interaction aspect of behavior. Whereas most behavioral representations focus on either the control or the data, the EFFBD and the activity diagram represent both to provide full context and understanding. The EFFBD clearly distinguishes between the two primary roles that items play:
- Triggers - control the execution of a function by their presence or absence. Triggers can be simple signals or actual objects. The designation does not come from the item itself but from the relationship between the item and the function (an item can be an input for one function and a trigger for another function). Items that trigger a function are drawn with a double-headed arrow entering the function. Items shown with a green background are triggers for one or more functions in the system model (not just on this diagram).
- Data Stores - input to or output from a function with no control implications. Data stores are shown with a single-headed arrow connecting to the functions they input. Items that are pure data stores throughout the system model are shown with gray backgrounds by default, allowing them to be easily distinguished. They can also be toggled off in order to better focus on triggering data and its sequencing effect.
Understanding whether an item is local in scope or used beyond the bounds of a given activity can provide valuable insight when engineering and assessing a system. To help visualize this, boundary items those items which are input to, output from, or trigger a function beyond the scope of the current activity and its decomposition can be optionally constrained to the diagram frame. When this option is selected in the diagram properties, the difference between local items (drawn in the interior of the diagram) and items used elsewhere in the system model (drawn on the diagram frame) is immediately evident. By default, this option is enabled for new activity diagrams, delivering the maximum insight from the item positioning.
NOTE:
|
Trigger and Input?
It is not necessary to connect an item to a function as both a trigger and a data store. It is implicitly understood that a trigger is also an input to the function.
|
Resources are also optionally displayed on EFFBDs. Resources are drawn with a double border to help distinguish them. Resources can be related to functions in three different ways:
- Consumes - resources that are consumed during a function's execution (electrical power, for example) are indicated with a half circle decoration on the resource and an arrowhead indicating the flow of resources into the corresponding function.
- Produces - resources that are produced during a function's execution (again, electrical power or perhaps fresh water) are indicated with a half-circle decoration on the function and an arrowhead indicating the flow into the resource.
- Captures - resources that are utilized during a function's execution and then released (a human operator responsible for overseeing a task, for example)
A function begins execution when it has received all of its triggers and its necessary resources have been acquired. If the flow of control has reached a function but either the triggers or resources are not available, the function is said to be enabled but waiting. Obviously, this has notable impacts in the sequencing and synchronization of behavior as well as the overall performance (how quickly the process completes) and whether or not it can complete at all due to live-locks and deadlocks.
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 EFFBD diagram 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).
- Show Data Nodes - controls whether data stores will be shown by default. In cases where there is a large amount of data flow, it can be helpful to hide data stores to focus attention on triggering data.
- Show Resource Nodes - controls whether resource nodes will be shown by default. Resource nodes reflect the production, consumption, and capturing of required resources during function execution.
Toolbox Insert
The constructs and key entities tabs allow you to quickly develop your EFFBD diagram, while the all entities tab enables you to relate your diagram entities to the remainder of your system definition.
Constructs
- New Entity - drop onto a branch to insert a new function as part of the diagram decomposition (decomposed by)
- Entity- drop onto the diagram background to insert an existing 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 a new 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 a new branch as the last branch
- New Input - drop onto any function node to create a new item that is input to the node
- Inputs - drop onto any function node to relate an existing item that is input to the node
- 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 that is output from the node
- Outputs - drop onto any function node to relate an existing item that is output from the node
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 relate it as part of the diagram decomposition (decomposed by)
- Item - drop an existing item onto a function node to relate it to the node using the input to, triggers, or output from relation
- 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.
- Once you have established an item on a diagram as an input, output or trigger, you can drag-drop that item node onto a function node within the diagram to quickly establish your data relationships.
- When rearranging icons on your diagram, arrange the function nodes first. Items are positioned relative to their corresponding functions, by default, so items may shift as functions are repositioned.
- Nested logic is used when determining the color for a 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.
- The EFFBD does not traditionally lend itself to the use of graphical images in place of geometric icons. For this reason, you can achieve great impact if you selectively use images that reflect movement and motion to highlight a critical aspect. You can also frequently use graphical images to better represent resources.
- 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.