Data Flow

Today’s topic is ostensibly Data Flow, though the linked article deals with the offshoot dubbed by its inventor “Flow-Based Programming”.

More often than not, data flow programming involves using a GUI to connect boxes to one another.  The connections direct the “flow” of data through reusable components to build a software system.

There are some interesting examples in the audio and video worlds, where signal generators or input sources are routed through processors, filters, mixers, and so on.  Such systems allow non-computer-scientists and non-hardware engineers to build complex software signal processors quickly, and visualize and test the results along the way.

Sonic Core SCOPE audio data flow

Xine video architecture data flow

Business process managers tend to follow the data flow programming model, too.

Although data flow programming often depends on niche proprietary development environments, the concepts involved can be applied when designing any software.  The key is to separate the logic from the data structures during system design.  This separation facilitates the design of reusable logic components — input sources, data generators, filters, output targets, and so on.  Such reusable components can significantly ease the development of new features; and modifying existing logic often becomes a simple matter of surgically inserting or removing reusable logic components.

Of course, object oriented fanatics have a hard time separating logic from data.  But an open-minded OO developer might save herself a lot of bad code and software bloat by keeping the data flow paradigm in mind the next time she designs a new software system or reverse-engineers an existing one.

J. Paul Morrison developed a more-or-less data flow system for a Canadian bank (?Bank of Montreal?).  He writes about Flow-Based Programming in a quirky style and with a few antiquated ideas thrown in for good measure.  Originally his intriguing essay was a book, now out of print:



Tags: ,

3 Responses to “Data Flow”

  1. Paul Morrison Says:

    “with a few antiquated ideas”! Hey, it was written 15 years ago! Seriously though, I am in process of revising it – could you give me some ideas about what should be removed, and what sort of new stuff you would like to see in it? TIA, Paul

    • jtienhaara Says:

      Wow, what a pleasant surprise! Thanks for the invitation Paul, I will definitely throw together a few thoughts and send them your way.
      And thanks for visiting, too. Who better to encourage literacy among developers than an author-developer? 🙂
      Cheers and talk to you soon!

  2. Paul Morrison Says:

    Soon?! That was Jan. 8! Still looking forward to your feedback!

    Thanks in advance!


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: