Thursday, September 11, 2008

A Tool for Generating Data Flow Diagrams

Many months ago, I posted an entry called Context Diagrams as a Tool for SOA. Today I learnt that Douglas Barry has created a tool to help software designers visualise data flows. Just specify your inputs and outputs and "wire" them up, then the tool generates visual representations of the relationships. You can get what Barry calls "Business Process Diagrams", "Data Flow Diagrams for Services" and "Data Flow Diagrams". [I couldn't tell the difference between the plain DFDs and the DFDs for Services. They seemed to be identical in this version.]

Anyway, it's quite an interesting application, and I had lots of fun playing with it.

My suggestions to further develop the tool:

1. Allow flow chaining, i.e., allow the outputs of one step to become inputs to the next. [Or perhaps the tool is already doing this and I haven't understood the notation yet.]
2. Provide support for localised and progressive decomposition of modules, i.e., allow the designer to explode a node within its own context without having to go back to the top-level listing of all inputs and outputs, because beyond a point, this tends to become confusing. [Barry explains that this is already catered for, but perhaps my initial examples were too simple and didn't support a second level of decomposition that would have tested this feature.]
3. Refine the "DFDs for Services" view to be truly service-oriented, by allowing for a different paradigm of construction below level 1. Then the tool can help to implement the Viewpoint Flip that I've argued is the deciding characteristic of SOA. [Perhaps we need to support UML class or object diagrams once we explode Services into their components. I'll have to think about this some more.]
4. Aesthetics - create some conventions to lay out the diagram in a more predictable manner, so that it is aesthetically appealing and more intuitive at first glance. I had to drag the components and arrows around a fair bit to see the flows more clearly, once the diagram got beyond a certain size (i.e., more than 2 inputs and 2 outputs). (I know this is just quibbling, but the tool has a lot of potential, and some smarts around the generation of graphics would make it very powerful.)

It's a free site (for now, at least) and you're not asked to register with your personal details either, so I'd recommend that you give the tool a try. If you missed the link earlier, you can find it here.

No comments: