"Flow-Based Programming"

by J. Paul Morrison (Van Nostrand Reinhold, 1994)

Review by Andrew Wenn.

Flow based programming (FBP) is a method of application development, that has recently emerged from IBM labs [actually IBM Canada I/S - JPM]. It has the potential to dramatically change the way business applications are developed. Correctly recognising that business programming differs greatly from that found in scientific areas, because it often consists of data transformations that are performed on data files (for example report writing, sorting, updates or deletions), Paul Morrison has developed a programming design method based on modules that use a coordination language to communicate with each other. The data to be manipulated is represented as a series of streams or information packets which also include parameters indicating which fields start where and how the modules are to process them. Typically, an FBP system will have a number of precoded and pretested functions in object code format (these can be written in a number of different languages), a software driver that implements the application programming interface, a component configuration specification, procedures to compile and package individual modules and partial networks, and documentation.

As well as helping to overcome the widely recognised perils of business application development, FBP is also seen as a method of surmounting the increasingly troublesome von-Neumann computer model. It does this by modelling processes as asynchronous and parallel rather than sequential and introducting appropriate control methods.

The book consist of 29 chapters, the first three being introductory ones outlining and justifying the development of FBP. The next seven chapters cover the basics of FBP giving some simple examples of FBP in use. The following six chapters cover data descriptions and complex data structures, scheduling, deadlocks, FBP loops and networks and implementation issues. Two chapters on language considerations come next, followed by three that look at application design in more detail. The next six chapters cover miscellaneous issues such as performance considerations, how FBP relates to compiler theory and Object-Orientated design, streams and recursion, and other related concepts. The remaining chapters contain reflections on the art of application design and attempt to draw some conclusions. The text is well indexed and contains a useful bibliography.

The presentation of the book is quite unexciting. There are no sections with appropriate sub-headings within each chapter, just pages of dense text with fairly ordinary diagrams. Although I don't personally like texts with masses of white space and fussy diagrams, I feel that the publishers could have done better than this, after all, FBP is being sold as a revolutionary new technique - the style of the book makes it appear quite pedestrian. Despite this, I found the author's writing style clear and erudite. Although the author states in his introduction that education in FBP should be a hands on affair, no tutorial disk is included although an address is given where a PC based version of FBP called THREADS is available presumably at a cost. I feel that the book would have definitely been enhanced by the inclusion of a tutorial disk.

This book is highly recommended to anyone who is involved in business programming and who desires to find ways of escaping from the well recognised application development bottlenecks that occur in that field. I am unable to say whether or not FBP holds all the answers but it is a new methodology that certainly deserves consideration.

Andrew Wenn

Victoria University of Technology (Footscray)