News Column

Patent Issued for Program Flow Specification Language and System

June 19, 2014



By a News Reporter-Staff News Editor at Computer Weekly News -- A patent by the inventor Iossiphidis, Joseph (Scarborough, CA), filed on May 10, 2013, was published online on June 3, 2014, according to news reporting originating from Alexandria, Virginia, by VerticalNews correspondents.

Patent number 8745594 is assigned to Technobasics Software Inc. (Scarborough, Ontario, CA).

The following quote was obtained by the news editors from the background information supplied by the inventors: "After its completion, a program typically undergoes beta tests to make sure that it works as specified. The beta test is an expensive and time consuming process requiring special software and knowledge. Even after the beta testing we aren't sure that a program works as specified. Such assurance can be achieved if all the paths of a program are examined and such a test is immense. The problem is bigger and more complex because a software system has hundreds and even thousands of cooperating programs. A program is correct, if it has operational correctness and semantics correctness. Operational correctness determines that a program uses and produces the expected data values. Semantic correctness determines that the rules of processing the order of the statements produce the intent of the program.

"The uncertainty of program correctness is derived from the fact that programmers find partial help in developing correct programs and that is the syntax of statements. An error in the syntax of a statement is immediately identified by the host compiler but not its operational correctness; there are no general rules for their identification and thus they have to be developed explicitly by the programmer and as the programmer perceive the correctness. A program isn't just a pile of statements; it is a combination of statements whereas their order of process determines the intent of the program. No programming language can independently declare the operational and the semantic correctness of a program; they don't support such syntax and this inability has many ill consequences.

"The operational correctness of a statement is explicitly determined by the programmer including the order of processing the statements of a program. Since they cannot be declared by the current programming languages, we aren't sure that they are used correctly. Moreover, the order of processing the statements is expressed by using operational statements. Hence, it is not clear what the use of a statement is: for manipulation of data or for manipulation of the order of statements. A program becomes complex because it is a mixture of non-homogeneous functional statements hence it is difficult to understand its logic.

"The design and development of a system is time consuming and costly because they are better understood with the time. Currently, the logic of a system is rigid because it is described in operational statements and such statements conceal the intent. A change in a system's specifications implies changes in the system's application programs and perhaps in a complex way. Hence, programs may have to be modified, rewritten, or added. It is obvious that it is difficult to estimate the development time and cost of the system under these conditions.

"The maintenance of a system is a paramount requirement because a system is written once but it is changed many times in its life time. The maintenance of a system requires the programs to be understood by programmers who perhaps didn't write the original programs. Understanding programs, we are interested in the way a program works or what the statements do and the way they are ordered. Currently, statements used for ordering are alike with the operational statements. Hence, it takes time and activities out of the ordinary to determine how a program works and if a system has hundreds of programs this becomes an immense task. The logic of a program is hidden in operational statements making the system dependent on a few programmers because statements don't reveal their purpose easily without interpretation. Moreover, training new employees is difficult including the education of customers.

"Undoubtedly the development of a program takes effort, money, and time. It would be uneconomical to develop a program's structure from scratch every time one is needed. It would clearly be desirable to have a method and system to represent the control follow of a program in a standardized manner so that control code can be generated from such a representation."

In addition to the background information obtained for this patent, VerticalNews journalists also obtained the inventor's summary information for this patent: "The following presents a simplified summary of the disclosure in order to provide a basic understanding to the reader. This summary is not an extensive overview of the disclosure and it does not necessarily identify key/critical elements of the invention or delineate the scope of the invention. Its sole purpose is to present some concepts disclosed herein in a simplified form as a prelude to the more detailed description that is presented later.

"The present invention provides a method for sequencing the execution of a number of p-segments by a computer processor, the number being an integer greater than zero and referred to as N, each p-segment being a sequence of one or more statements executable by the processor, each p-segment having a unique identifier, the p-segments being stored in a memory accessible by the computer processor, the p-segments being part of a manipulation program or being called from the manipulation program, the method including the steps of: (a) providing a flow sequencing program comprising a plurality of f-segments, each f-segment being associated with one or more of the N unique identifiers such that each unique identifier is associated with exactly one f-segment; (b) configuring the manipulation program to cause control to be first passed to a designated first p-segment upon execution of the manipulation program; © configuring the manipulation program so that after the completion of execution of each p-segment, control is passed to the f-segment associated with the unique identifier associated with the completed p-segment and at least one variable identifier and value of the variable computed by the completed p-segment is passed to the f-segment; wherein each f-segment is configured either to cause execution of the manipulation program to terminate, or to cause control to be passed to one of the p-segments.

"The method may further include the step of executing the manipulation program on the computer processor, where each p-segment may be configured to complete its execution within a finite time, and the flow sequencing program may be configured to cause execution of the manipulation program to terminate within a finite time.

"The configuration of the manipulation program to cause control to be passed to the f-segment associated with the unique identifier associated with a completed p-segment after the p-segment has completed may be done by inserting a call in the manipulation program to a pre-defined program, referred to as FlowGenerator, after each p-segment so that the FlowGenerator program causes control to be passed to the f-segment associated with the unique identifier associated with a completed p-segment after the p-segment has completed, and the FlowGenerator program may return the identifier of the next p-segment to be executed to the manipulation program, the manipulation program being configured to pass control to the p-segment identified by the returned identifier.

"At least one f-segment may be configured to cause an error to be generated and execution of the manipulation program to be terminated on the occurrence of a pre-determined condition.

"At least one of the f-segments may include an acceptance portion and an interaction portion, the acceptance portion being executed before the interaction portion, the acceptance portion comprising at least one statement to verify that the value of the variable corresponding to the at least one variable identifier is within a particular range or is equal to a particular value, and if the value of the variable is not within the particular range or the value of the variable is not equal to the particular value, as the case may be, the f-segment may cause execution of the manipulation program to be terminated.

"The interaction portion of at least one f-segment may include at least one f-expression, each f-expression comprising a condition and a specification of the unique identifier of a p-segment that is to be executed next if the condition is evaluated as being true.

"Each &segment may have an interaction portion.

"A plurality of f-segments may have an acceptance portion.

"The flow sequencing program may execute on the same computer processor as the manipulation program and p-segments.

"The flow sequencing program and at least one of the p-segments may be written in different programming languages.

"The manipulation program may be automatically generated by a program generator based on a specification of N programs representing the p-segments so that the manipulation program, upon execution, first passes control to the designated first p-segment and after the completion of each p-segment, passes control to the f-segment associated with the unique identifier associated with the completed p-segment.

"The method may further include an initial step of providing a canonical s-diagram, the canonical s-diagram comprising a directed graph having a plurality of nodes and a plurality of directed edges, each node specifying the unique identifier of a p-segment or a condition that is part of one of the f-expressions, each edge connecting one p-segment node to one condition node or one condition node to one p-segment node, wherein each f-expression in the flow sequencing program corresponds to one condition node and one p-segment node with an edge extending from the condition node to the p-segment node.

"The flow sequencing program may be generated from the s-diagram.

"The step of providing a flow sequencing program may include generating the flow sequencing program from the s-diagram.

"The flow sequencing program may be generated from the s-diagram by a computer program running on a computer processor.

"The invention further provides a computer system comprising a control computer processor, a computer readable memory accessible by the control computer processor, and a language processor stored in the memory and executable by the control computer processor to receive and execute on the control computer processor an f-program for sequencing the execution of a number of p-segments by a target computer processor, the number being an integer greater than 0 and referred to as N, each p-segment being a sequence of one or more statements executable by the target computer processor, each p-segment having a unique identifier, the p-segments being part of a manipulation program or being called from the manipulation program, wherein the f-program is a flow sequencing program comprising a plurality of f-segments, each f-segment being associated with one or more of the N unique identifiers such that each unique identifier is associated with exactly one f-segment, the manipulation program is configured to cause control to be first passed to a designated first p-segment upon execution of the manipulation program and the manipulation program is configured so that after the completion of execution of each p-segment, control is passed to the f-segment associated with the unique identifier associated with the completed p-segment and at least one variable identifier and value of the variable computed by the completed p-segment is passed to the f-segment, and wherein each f-segment is configured either to cause execution of the manipulation program to terminate, or to pass control to one of the p-segments.

"The target computer processor may be the control computer processor and the p-segments may be stored in the computer readable memory.

"The target computer processor and control computer processor may be separate processors and control may be passed between the f-program and manipulation program by electronic messages sent via an electronic communications network.

"The computer system may further include a FlowGenerator program stored in the memory and executable by the control computer processor, wherein the configuration of the manipulation program to cause control to be passed to the f-segment associated with the unique identifier associated with a completed p-segment after the p-segment has completed may be done by inserting a call to the FlowGenerator program after each p-segment in the manipulation program so that the FlowGenerator program causes control to be passed to the f-segment associated with the unique identifier associated with a completed p-segment after the p-segment has completed, and the FlowGenerator program may return the identifier of the next p-segment to be executed to the manipulation program, the manipulation program being configured to pass control to the p-segment identified by the returned identifier.

"At least one of the f-segments may include an acceptance portion and an interaction portion, the acceptance portion being executed before the interaction portion, the acceptance portion comprising at least one statement to verify that the value of the variable corresponding to the at least one variable identifier is within a particular range or is equal to a particular value, and if the value of the variable is not within the particular range or the value of the variable is not equal to the particular value, as the case may be, the f-segment may cause an error to be generated and execution of the manipulation program to be terminated, and wherein the interaction portion of at least one f-segment may comprise at least one f-expression, each f-expression comprising a condition and a specification of the unique identifier of a p-segment that is to be executed next if the condition is evaluated as being true.

"The computer system may further include an f-program generator configured to receive a canonical s-diagram, the canonical s-diagram comprising a directed graph having a plurality of nodes and a plurality of directed edges, each node specifying the unique identifier of a p-segment or a condition that is part of one of the f-expressions, each edge connecting one p-segment node to one condition node or one condition node to one p-segment node, wherein each f-expression in the f-segment corresponding to the unique identifier of a p-segment node corresponds to one condition node, where an edge connects the p-segment node to the condition node, and another p-segment node with an edge extending from the condition node to the other p-segment node, and wherein the f-program generator generates the f-program from the s-diagram by translating each set of one target condition node and one target p-segment node, where an edge connects the target condition node to the target p-segment node, into an f-expression comprising a condition corresponding to the target condition node and a specification of the unique identifier of a p-segment corresponding to the target p-segment node that is to be executed next if the condition is evaluated as being true.

"The invention further provides a computer system including a computer processor, a computer readable memory accessible by the computer processor, an f-program stored in the memory, which f-program is executable by the processor, and a manipulation program comprising a number of p-segments stored in the memory, the manipulation program and p-segments being executable by the processor, the number being an integer greater than 0 and referred to as N, wherein each p-segment is a sequence of one or more executable statements and each p-segment has a unique identifier, wherein the f-program is a flow sequencing program comprising a plurality of f-segments, each f-segment being associated with one or more of the N unique identifiers such that each unique identifier is associated with exactly one f-segment, the manipulation program is configured so that when it is executed on the processor, control is passed to a designated first p-segment and the manipulation program is configured so that after the completion of execution of each p-segment, control is passed to the f-segment associated with the unique identifier associated with the completed p-segment, and at least one variable value computed by the completed p-segment is passed to the f-segment, and wherein each f-segment is configured either to cause execution of the manipulation program to terminate, or to pass control to one of the p-segments.

"At least one of the f-segments may include an acceptance portion and an interaction portion, the acceptance portion being executed before the interaction portion, the acceptance portion comprising at least one statement to verify that the value of the variable is within a particular range or is equal to a particular value, and if the value of the variable is not within the particular range or the value of the variable is not equal to the particular value, as the case may be, the f-segment may cause an error to be generated and execution of the manipulation program to be terminated, and wherein the interaction portion of at least one f-segment may comprise at least one f-expression, each f-expression comprising a condition and specifying the unique identifier of a p-segment that is to be executed next if the condition is evaluated as being true.

"The computer system may further include an f-program generator configured to receive a canonical s-diagram, the canonical s-diagram comprising a directed graph having a plurality of nodes and a plurality of directed edges, each node specifying the unique identifier of a p-segment or a condition that is part of one of the f-expressions, each edge connecting one p-segment node to one condition node or one condition node to one p-segment node, wherein each f-expression in the flow sequencing program may correspond to one condition node and one p-segment node with an edge extending from the condition node to the p-segment node, and wherein the f-program generator may generate the f-program from the s-diagram by translating each set of one target condition node and one target p-segment node, where an edge connects the target condition node to the target p-segment node, into an f-expression comprising a condition corresponding to the target condition node and a specification of the unique identifier of a p-segment corresponding to the target p-segment node that is to be executed next if the condition is evaluated as being true."

URL and more information on this patent, see: Iossiphidis, Joseph. Program Flow Specification Language and System. U.S. Patent Number 8745594, filed May 10, 2013, and published online on June 3, 2014. Patent URL: http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&r=1&f=G&l=50&s1=8745594.PN.&OS=PN/8745594RS=PN/8745594

Keywords for this news article include: Programming Language, Technobasics Software Inc.

Our reports deliver fact-based news of research and discoveries from around the world. Copyright 2014, NewsRx LLC


For more stories covering the world of technology, please see HispanicBusiness' Tech Channel



Source: Computer Weekly News


Story Tools






HispanicBusiness.com Facebook Linkedin Twitter RSS Feed Email Alerts & Newsletters