A Nassi–Shneiderman diagram (NSD) in computer programming is a graphical design representation for structured programming. This type of diagram was developed in 1972 by Isaac Nassi and Ben Shneiderman who were both graduate students at SUNY-Stony Brook. These diagrams are also called structograms, as they show a program's structures.
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 straightforward 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 for formal programming. Their abstraction level is close to structured program code and modifications require the whole diagram to be redrawn. Nonetheless, they can be useful for sketching processes and high-level designs.
Nassi–Shneiderman diagrams are almost isomorphic with flowcharts. Everything that can be represented with a Nassi–Shneiderman diagram can also be represented with a flowchart. For flowcharts of programs, almost everything that can be represent with a flowchart can also be represented with a Nassi–Shneiderman diagram. The exceptions are constructs like goto and the C programming language break and continue statements for loops.
In Germany, Nassi–Shneiderman diagrams were standardised in 1985 as DIN 66261. They are still used in German introductions to programming, for example Böttcher and Kneißl's introduction to C, Baeumle-Courth and Schmidt's introduction to C and Kirch's introduction to C#.
Nassi–Shneiderman diagrams can also be used in technical writing.
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.