Diagramming Data Flow, without Data Flow Diagrams.
March 11, 2010 3:38 AM   Subscribe

I'd like to visualize data flow in a system, but can't really find a standard way to do so.

So, I'm trying to describe how a bunch of modules interact in a system. We have "content objects" and "processor objects" which take content and transform it. I have a large number of relationships in the way of

raw_data1 is transformed by cooker A into cooked_data1
cooked_data1 and cooked_data2 are transformed by cooker B into seasoned_data3 and seasoned_data4.

The processors can use multiple inputs and produce multiple outputs, content objects can be used as inputs for multiple processors

I don't think Data Flow Diagrams are appropriate since they don't give adequate representation to the content objects (which I'd then like to visually group to represent different tiers, like "raw", "cooked", "seasoned"), and doing it as an UML class diagram does not convey the distinction between processors and content well enough IMO.

My current best guess is "color-coded class diagram". Does anyone have a better alternative? I have a feeling this should be a standard problem.
posted by themel to Computers & Internet (6 answers total) 5 users marked this as a favorite
I never liked HIPO charts very much, but it sounds like it may be of interest to you.
posted by Chocolate Pickle at 3:50 AM on March 11, 2010

You may wish to use swim lanes, where you use lanes for "raw", "cooked", and "seasoned". Some nicer examples here.
posted by SNACKeR at 5:17 AM on March 11, 2010

I've always modeled processes like this using horizontal swim lanes, but that might be awkward if the relationships aren't mostly linear.
posted by majick at 8:12 AM on March 11, 2010

You may want to look at Flying Logic. It seems more logic/outcome oriented (if/then, and/or, etc.) than what you want, but it may be able to get you there.

The problem I think you're encountering is that you consider the object to be permanent.

- Raw object.
- Cooked object.
- Seasoned object.

Most systems would treat these as 3 different objects, but you seem to want to treat it as 1 object with 3 different states.

Flying Logic (which I have no affiliation with - I've never even used it, just saw it & thought it looked cool) seems like it would do this statement well. "The processors can use multiple inputs and produce multiple outputs, content objects can be used as inputs for multiple processors." However you may have to back up a step & think about the logic behind why it would transform an object in various ways.

Or maybe you just want to borrow some of the visual elements that they use to differentiate between an object & a processor.
posted by MesoFilter at 10:19 AM on March 11, 2010

I don't see why you can't just make a nice digraph with GraphViz. The .dot input language is really simple to produce and there are numerous options for controlling how the graph is laid out and labeled and so on.
posted by Rhomboid at 11:05 AM on March 11, 2010

Thanks, I guess it'll be UML class diagram with swim lanes. I think I can get the "data tier" thing across by making each tier a lane and putting the processors onto lane boundaries if it does not look to terrible.

@Rhomboid: Graphviz will definitely be involved, since I have to write it up as MetaUML in the end and I'm no good at arranging things manually, but I wanted it to look UMLy or like some other standard so that I didn't need to explain the notation.
posted by themel at 11:24 PM on March 11, 2010

« Older lawn care help please   |   Bipolar g/f wants space. How to handle? Newer »
This thread is closed to new comments.