Notes:
', the dftool
displays the file containing the FMSL definition of the operation of the
current canvas.
Here is the precise correspondence between fmsl source text and dfd:
DFD | FMSL |
node | operation, which must be the component of another op unless it's the level 0 node |
level | operation, with components and dataflow attribute |
edge | a connection element in a dataflow attribute spec, plus a obj declaration of the same name as the edge name |
data store | value declaration of the same name as the data store name |
We need to do something in the realm of context diagrams, since in fmsl we can't have a dfd just sitting around without an outermost op to contain it. So, I think we need to do something like have each canvas always be a level, with an appropriate name, say in the canvas window banner.
To deal further with the context issue, we need to require that each df canvas corresponds to a unique op definition. This is related to the "inny" versus "outty" in the semi- and fully-formal chapters of the book. The important point is that each dfd canvas has to be defined in terms of an op with components that are effectively refs to other ops, so that the same op can appear in two or more dfd contexts. As it is now, I'm pretty confident that the outty-style notation makes this happen. So, again, what needs to happen in the dftool is that each canvas correspond to a unique op def. We can use overloading and module qualification to deal with two or more canvases having the same name. It may be appropriate, as an option or required, to put the fully qualified, and if necessary signature, in the window banner. The "if necessary" part for the signature can mean that the signature is not necessary if the op is not overloaded in the current module context. And then we have to be clear about how module context is reflected in the dfd display. Here's a crack:
Editing text potentially invalidates dataflow, but this is detected in the
normal way in the text. I.e., errors occur when dataflow connections are type
checked. What we need to come up with is the appropriate (aka, clear and
helpful) way to display type checking errors related to dataflow in the dfd
itself. It may be some variant of the roll-over displays for edge connection.
E.g., when there's a type mismatch in any df connection, the edge(s) in the dfd
that correspond to that connection are colored red.