2.8. Source Text for Nodes and Edges

Notes:

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.




Prev: properties | Next: validate | Up: functional | Top: index