Patent ID: 7073166

Claim:
A method of coding a software system, the method comprising the steps of: a) recording a design control flow graph that represents intended functionality of a software system, the design control flow graph comprising a plurality of nodes between which transitions occur; b) generating source code for a software system, the source code comprising a plurality of software system nodes, wherein the source code includes monitoring functions, wherein each software system node has such a monitoring function and corresponds one-to-one with a respective one of said nodes of said design control flow graph, and wherein the design control flow graph is produced before, or at least independently of the source code to specify intended function and structure of the source code; and c) executing executable program code corresponding to the source code, wherein the executing proceeds in a sequence such that a first node of the executable program code corresponding to the first one of the software system nodes is exited and a second node of the executable program code corresponding to the second one of the software system nodes is entered from the executable program code's first node, and the executing includes: recording indicia of the exiting from the executable program code's first node by the executable program code for the monitoring function of the first software system node; and comparing to the indicia, by the executable program code for the monitoring function of the second software system node, a record of valid predecessor nodes from a predecessor array, wherein if the comparing indicates the first software system node is not a valid predecessor to the second software system node, the executable program code for the monitoring function of the second node cleanly terminates the executing and records the entry to the second executable node from the executable program code's first node as not in conformance with the design control flow graph.