Nassi-Shneiderman diagram

Nassi-Shneiderman diagram

A Nassi-Shneiderman diagram (or NSD) is a graphical design representation for structured programming. Developed in 1972 by Isaac Nassi and Ben Shneiderman, these diagrams are also called "structograms", as they show a program's structures.

Overview

Following a top-down design, the problem at hand is reduced into smaller and smaller subproblems, until only simple statements and control flow constructs remain. Nassi-Shneiderman diagrams reflect this top-down decomposition in a straight-forward way, using nested boxes to represent subproblems. Consistent with the philosophy of structured programming, Nassi-Shneiderman diagrams have no representation for a GOTO statement.

Nassi-Shneiderman diagrams are only rarely used. Their abstraction level is close to structured program code and modifications require the whole diagram to be redrawn.

Nassi-Shneiderman diagrams are (almost) isomorphic with flowcharts. Everything you can represent with a Nassi-Shneiderman diagram you can also represent with a flowchart. For flowcharts of programs, just about everything you can represent with a flowchart you can also represent with a Nassi-Shneiderman diagram. The exceptions are things like goto, and the C programming language loop break and continue statements.

Diagrams

Process Blocks: the process block represents the simplest of steps and requires no analyses. When a process block is encountered the action inside the block is performed and we move onto the next block.

Branching Blocks: there are two types of branching blocks. First is the simple True/False or Yes/No branching block which offers the program two paths to take depending on whether or not a condition has been fulfilled. These blocks can be used as a looping procedure stopping the program from continuing until a condition has been fulfilled.

The second type of branching block is a multiple branching block. This block is used when a select case is needed in a program. The block usually contains a question or select case. The block provides the program with an array of choices and is often used in conjunction with sub process blocks to save space.

Testing Loops: this block allows the program to loop one or a set of process until a particular condition is fulfilled. The process blocks covered by each loop are subset with a side-bar extending out from the condition.

There are two main types of testing loops, test first and test last blocks. The only difference between the two is the order in which the steps involved are completed. In the test first situation, when the program encounters the block it tests to see if the condition is fulfilled, then, if it is not completes the process blocks and then loops back. The test is performed again and, if the condition is still unfulfilled, the processes again. If at any stage the condition is fulfilled the program skips the process blocks and continues onto the next block.

The test last block is simply reversed, the process blocks are completed before the test is performed. The test last loop allows for the process blocks to be performed at least once before the first test.

References

Further reading

* Nassi, I.; Shneiderman, B.: " [http://www.geocities.com/SiliconValley/Way/4748/nsd.html Flowchart techniques for structured programming] ", SIGPLAN Notices XII, August 1973.

External links

* [http://www.cs.umd.edu/hcil/members/bshneiderman/nsd/ "A short history of structured flowcharts (Nassi-Shneiderman Diagrams)"] , by Ben Shneiderman

Software

* [http://diuf.unifr.ch/softeng/student-projects/completed/kalt/NSD.html NSD-Editor] simple editor for creating Nassi-Shneiderman diagrams (GPL)
* [http://structorizer.fisch.lu Structorizer] – Nassi-Shneiderman diagram-editor for Linux, Mac OS X & Microsoft Windows, released under the GNU General Public License


Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Look at other dictionaries:

  • Nassi–Shneiderman diagram — Example of a Nassi–Shneiderman diagram A Nassi–Shneiderman diagram (NSD) in computer programming is a graphical design representation for structured programming [1]. This type of diagram was developed in 1972 by Isaac Nassi and the at the time… …   Wikipedia

  • Nassi-Shneiderman — DIN 66261 Bereich Programmierung Regelt Informationsverarbeitung; Sinnbilder für Struktogramme nach Nassi Shneiderman Kurzbe …   Deutsch Wikipedia

  • Nassi-Shneiderman-Struktogramm — DIN 66261 Bereich Programmierung Regelt Informationsverarbeitung; Sinnbilder für Struktogramme nach Nassi Shneiderman Kurzbe …   Deutsch Wikipedia

  • Nassi — may refer to: Isaac Nassi, computer scientist and businessman Thomas Nassi (1892 1964), Albanian American musician and pioneering music educator Maurizio Nassi (b. 1977), Italian footballer Joseph Nasi, 16th century Jewish diplomat and… …   Wikipedia

  • Nassi-Schneiderman-Diagramm — DIN 66261 Bereich Programmierung Regelt Informationsverarbeitung; Sinnbilder für Struktogramme nach Nassi Shneiderman Kurzbe …   Deutsch Wikipedia

  • Nassi-Schneidermann-Diagramm — DIN 66261 Bereich Programmierung Regelt Informationsverarbeitung; Sinnbilder für Struktogramme nach Nassi Shneiderman Kurzbe …   Deutsch Wikipedia

  • Nassi-Schneidermann-Struktogramm — DIN 66261 Bereich Programmierung Regelt Informationsverarbeitung; Sinnbilder für Struktogramme nach Nassi Shneiderman Kurzbe …   Deutsch Wikipedia

  • Nassi-Shneidermann — DIN 66261 Bereich Programmierung Regelt Informationsverarbeitung; Sinnbilder für Struktogramme nach Nassi Shneiderman Kurzbe …   Deutsch Wikipedia

  • Nassi-Shneidermann-Diagramm — DIN 66261 Bereich Programmierung Regelt Informationsverarbeitung; Sinnbilder für Struktogramme nach Nassi Shneiderman Kurzbe …   Deutsch Wikipedia

  • Diagram — Further information: Chart Sample flowchart representing the decision process to add a new article to Wikipedia. A diagram is a two dimensional geometric symbolic representation of information according to some visualization technique. Sometimes …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”