A short history of structured flowcharts (Nassi-Shneiderman Diagrams)

Ben Shneiderman (Draft: May 27, 2003)

The fascinating history and evolution of structured flowcharts (usually called Nassi-Shneiderman Diagrams or structograms) goes back to 1972. As a graduate student, I got the idea while attending an ACM organized talk in New York by Michael Jackson on structured programming. If GOTOs were to be avoided, then shouldn't the lines in old flowcharts be avoided as well. Fifteen minutes of sketching led to the first ideas of sequence, conditionals and iteration.

Returning to Stony Brook, fellow graduate student Isaac Nassi shaped the ideas based on his more in-depth knowledge of structured programming principles. Together we wrote the original paper, which was quickly rejected for publication in the Communications of the ACM. So we sent it to the unrefereed ACM SIGPLAN (Special Interest Group on Programming Languages) Notices where it appeared in August 1973.

Nassi, I. and Shneiderman, B., Flowchart Techniques for Structured Programming, SIGPLAN Notices 8, 8 (August, 1973). (PDF file)

Since then it has been referenced thousands of times, spawned dozens of software implementations, been taught in dozens of textbooks, and is a required national standard in some countries. In Germany they are widely used and known as Struktogramme, standardized by DIN 66261 (November 1985), INFORMATION PROCESSING; NASSI-SHNEIDERMAN FLOWCHART SYMBOLS.

It's been exciting to see how this idea has spread, how others have extended it (sometimes abused it), and what influence it has had. I think its appeal has to do with its simplicity, originality, and ease of extending and embedding it. For visually oriented users, it provides a compact overview of a program that can show some relationships nicely. On the other hand, it may consume more paper than the code and be harder to scan for some details.

I believe it is helpful at early stages of program design for sketching the high-level modular design. For some people it is an aid in guiding thinking about nested conditional structures, in a more visual way than a decision table.

Note: unfortunately many citations are to 'Nassi-Schneiderman'.

Some recent web references include:

sguk.gif (21483 bytes)StruktoGraaf 3.0
StruktoGraaf is a development environment for Nassi-Shneiderman diagrams
(Program Structure Diagrams, Struktograms). It is a Windows 95/98/ME/NT/2000
application. StruktoGraaf lets you create, edit, save, print and even execute PSD's!
    http://www.sichemsoft.nl/indexuk.html

The EASYCODE family evolved over many years through several companies.  Early versions include:

    1) EasyCODE - CASE Tool Editor for Advanced Nassi Shneiderman Charts (ANSC)
       http://www.pls-mc.com/deliveringsolutions/maincase.ht

    2) EasyCODE V6.8 by BKR: Programming, Maintenance, Development and Documentation
    Using the Nassi-Shneiderman method of structure diagrams to document the logic flow of the
    program,  EasyCODE keeps every source code fit. EasyCODE is ideal for engineering,
    re-engineering of existing source code and documentation. It can handle an incredible variety
    of different programming languages from C/C++ to COBOL, from FORTRAN to Basic,
    from Pascal to Oracle SQL.    http://www.eurosoftinc.com/easyc.html

Current Version
EASYCODE GmbH (German Headquarters), http://www.easycode.de
EASYCODE Inc. (USA Headquarters) http://www.easycode-software.com
 

In it´s heart EasyCODE is still a powerfull graphical editor using the Nassi-Shneiderman structure diagram method to create and display software. Today EasyCODE supports up to 25 programming languages and according to the developer "is one the most common tools for code-analysis, documentation and maintenance purposes.  For C/C++ developers, especially in the Embedded Field EasyCODE offers various extensions for project-management, -analysis and quality insurance. With just around 13.000 sold licenses EasyCODE has become the most important Nassi-Shneiderman development tool."  Please visit http://www.easycode.de for any further information and free trial versions:  EasyCODE V7 has been designed in a modular manner and is used for graphic software development in the form of the „Advanced Nassi-Shneiderman“ structured charts. EasyCODE always shows its strength when requirements become complex, maintenance or development projects are to be performed or when post documentation is needed rapidly.

 

nassischneidermancolor_sm.gif (13885 bytes)Smartdraw diagramming tool includes NSD
   http://www.smartdraw.com/resources/centers/software/nassi.htm

 

Microsoft Visio includes Nassi-Shneiderman templates
   http://www.microsoft.com/office/visio/

SourceCoder analyzes and profiles Delphi source code, giving developers quantitative code measurements and enabling them to quickly pinpoint problematic areas. SourceCoder automatically creates Nassi-Shneiderman structograms. Screen shots are available.
   http://href.com/SCODER:0

A brief tutorial and other info is at:
   http://www.geocities.com/SiliconValley/Way/4748/nsd_home.html

There is a neat Java applet that is an editor to make NSDs on the web at
   http://www2.informatik.uni-erlangen.de/IMMD-II/Research/Activities/DiaGen/nsd-editor/

The NSD-Editor is a graphical tool to create and edit diagrams of type "Nassi-Shneiderman". The user can manipulate diagrams in a graphical, mouse-driven editor. The editor automatically adjusts the layout of the diagrams depending on its size. The editor can generate source code (C and PASCAL) from diagrams. The current version is running under MS-WINDOWS(TM) and written in Borland DELPHI(TM).
   http://www-iiuf.unifr.ch/sde/projects/kalt/NSD.html

Nassi-Shneiderman on the Web
   http://www.rdrop.com/~cary/html/psd.html

Program Structure Diagrams-- part of a course given at the University of Twente
   http://wwwis.cs.utwente.nl:8080/dmrg/MEE/misop013/

Generation of Nassi-Shneiderman Diagrams under Unix
   http://www.fz-juelich.de/zam/nassi/

Latex support for NSD
   http://www.educat.hu-berlin.de/~voss/lyx/layouts/nassi.phtml

screportsmall1.gif (6089 bytes)SourceCoder automatically creates Nassi-Shneiderman structograms
   http://www.delphifaq.com/e/scshot2.htm

Other references:
Pong, Man-chi, A graphical language for concurrent Programming, 1986 IEEE Workshop on Visual Languages, 26-33. CS Dept at Univ. of Edinburgh. -but work done at Univ. of Kent, Structure charts supported by system called Pigsty.

List of textbooks (prepared in 1981)

Geller, Dan and Freedman, Dan, Structured Programming in APL, Winthrop Publishers, Cambridge, MA 1978.

Haskell, Richard, FORTRAN Programming using Structured Flowcharts, Science Research Associates, 1978.

Kieburtz, Richard, Prentice Hall, Inc., Englewood Cliffs, NJ

Structured Programming and Problem Solving with ALGOL W, 1975.

Structured Programming and Problem Solving with PL/I, 1977.

Structured Programming and Problem Solving with PASCAL, 1978.

Merchant, Michael, FORTRAN 77 Language and Style, Wadsworth Publishing Co., Belmont, CA, 1981.

Orr, Kenneth, Structured Systems Development, Yourdon Press, New York, 1977.

Pollack, Seymour V. and Sterling, Ted, A Guide to PL/I, Third Edition, Holt, Rinehart and Winston, New York, 1981.

Ruston, Henry, Programming with PL/I, McGraw-Hill Book Co., New York, 1978.

Weinberg, Gerald, Workbook and films on Structured Programming, Edutronics Films, 1975.

Yourdon, Ed, Gane, Chris, and Sarson, Trish, Learning to Program in Structured COBOL, Yourdon Press, New York, 1976.

 

List of references (prepared in 1981)

Articles referencing our ideas and making further contributions include:

Brooke, J.B. and K.D. Duncan "An experimental study of flowcharts as an aid to identification of procedural faults" ERGONOMICS, Vol. 23, No.4, (1980), 387-399.

Brooke, J.B., and K.D. Duncan "Experimental studies of flowchart use at different stages of program debugging" ERGONOMICS, Vol. 23, No. 11, (1980), 1057-1091.

Chen, Thomas L.C. "Reflection on the Implementation of a Software Design", IEEE COMPSAC 1979 p. 69-73.

Friedman, Daniel P. and Stuart C. Shapiro " A Case for the While-Until", ACM SIGPLAN Notices, Vol. 9, No. 7 July 1974.

Haskell, Boddy and Jackson "Use of Structured Flowcharts in Undergraduate Computer Science Curriculum" ACM SIGCSE Sixth Technical Symposium on Computer Science Education July 1976.

Meredith, Carlisle F., "A structured Graphical Database Modeling Technique", In The Technology of Database Management Systems 3rd Ed., R.A. Bassler and J. J. Logan Editors, College Readings Inc., Alexandria, VA, 1976, 251-164,

Roy, Patrick "Linear Flowchart Generator for a Structured Language" ACM SIGPLAN Notices, Vol. 11, No. 11 November 1976.

Van Gelder, Allen, Structured Programming in COBOL: An Approach for Applications Programmers, Communications of ACM, Vol 20, No. 1 January 1977.

Witt, Jan "The COLUMBUS APPROACH" IEEE Transactions on Software Engineering , Vol. SE-1, No. 4 December 1975.

Other articles simply reference our work in their discussion. Through personal contacts I am aware of extensive use of our structured flowcharts in Burroughts, IBM, GE, ATT, Bell Labs, Siemens, U.S. Navy and numerous universities.  New Chapin has made a series of minor variations on the structured flowchart idea and pretentiously christened them Chapin charts. He writes and lectures extensively on this topic.

An excellent review and tutorial article appears in ACM SIGSOFT - Software Engineering Notes, Volume 3, Number 5 (November 1978) which contains papers from a "Software Quality and Assurance Workshop" held in San Diego, CA November 15-17, 1978. The paper, by Cornelia M. Yoder and Marilyn L Schrag (both of IBM Endicott), is titled "Nassi-Shneiderman Charts: An alternative to Flowcharts for Design." This article has been reprinted in the Auerbach Computer Programming Management series.

Graphics based version of structured flowcharts are described in:

C. Thomas Watson, Star-charter: A Design Aid and Documentation Tool for Structured Programs, IBM Technical Report 07.616, September 1976.

Nam Ng, A Graphical Editor for Programming using Structured Charts, IBM Research Report RJ2344, September 19, 1978, San Jose, CA.

H.P. Frei, D.L. Weller, and R. Williams, A Graphics-based Programming-Support System, ACM SIGGRAPH Vol. 12, No. 3 1978.