Jackson Structured Programming

related topics
{math, number, function}
{system, computer, user}
{theory, work, human}
{son, year, death}

Jackson Structured Programming or JSP is a method for structured programming based on correspondences between data stream structure and program structure. JSP structures programs and data in terms of sequences, iterations and selections, and as a consequence it is applied when designing a program's detailed control structure, below the level where object-oriented methods become important.[1][2]



JSP was originally developed in the 1970s by Michael A. Jackson and documented in his 1975 book Principles of Program Design.[3] Jackson's aim was to make COBOL batch file processing programs easier to modify and maintain, but the method can be used to design programs for any programming language that has structured control constructs, languages such as C, Java and Perl. Despite its age, JSP is still in use and is supported by diagramming tools such as Microsoft's Visio and CASE tools such as Jackson Workbench [4]

Jackson Structured Programming was seen by many as related[5] to Warnier Structured Programming,[6] but the latter method focused almost exclusively on the structure of the output stream. JSP and Warnier's method both structure programs and data using only sequences, iterations and selections, so they essentially create programs that are parsers for regular expressions which simultaneously match the program's input and output data streams.

Because JSP focusses on the existing input and output data streams, designing a program using JSP is claimed to be more straightforward than with other structured programming methods, avoiding the leaps of intuition needed to successfully program using methods such as top-down decomposition.[7]

Another consequence of JSP's focus on data streams is that it creates program designs with a very different structure to the kind created by the stepwise refinement methods of Wirth and Dijkstra. One typical feature of the structure of JSP programs is that they have several input operations distributed throughout the code in contrast to programs designed using stepwise refinement, which tend to have only one input operation. Jackson illustrates this difference in Chapter 3 of Principles of Program Design.[3] He presents two versions of a program, one designed using JSP, the other using 'traditional' methods.

Full article ▸

related documents
Threaded code
Header file
Object database
Comparison of Java and C++
Brute force attack
Java Database Connectivity
Object-relational mapping
Pseudorandom number generator
Interpreter (computing)
Prototype-based programming
JavaServer Pages
Selection sort
Lexical analysis
Naive Bayes classifier
Affine transformation
Grover's algorithm
Scientific notation
Shell sort
Data Encryption Standard
Tree automaton
Cyclic group
Root-finding algorithm