1. Field of the Invention
The present invention relates to computer software, intellectual property, and systems and methods for identifying and valuing a computer software program relative to general population computer software programs, especially in efforts of prior art searches of computer software inventions.
2. Description of Prior Art
The use of simple character sequences to code lowest abstract functional components of a larger, complex system has been appreciated for years by widespread applications in fields such as chemistry, biology, and genetics. For example, genetics is built upon a coding scheme of identifying four nucleobases (adenine, guanine, cytosine, and thymine) as major components of nucleotides of deoxyribonucleic acid (DNA). These are the familiar “base pairs” of DNA that are used to identify and associate structural DNA components to the functionality of proteins. Chemistry sorts out molecular compounds and observes chemical reactions by the structures and functions of elements of the periodic table. Biology further capitalizes on the coding schemes of chemistry and genetics to help understand the organic and inorganic roles of molecular compounds in the formation and functioning of life. The commonality and great utility of simple coding schemes to separate and categorize lowest abstract functional components is apparent. This further allows scientists, engineers, medical practitioners, patent attorneys, patent examiners, law-makers, students, educators, and more to search through and adequately distinguish the structural and functional similarities and differences between these elements and compounds. While these coding practices arise from natural properties inherent to these elements and compounds, the computer sciences exists with relatively less natural intervention in its existence.
The computer sciences is mostly a construct of human intervention. While the operation of computer hardware and software are limited by the laws of physics, people have played the larger role in deciding how computer technology has evolved. This has resulted in a wide array of standard and non-standards for such things like hardware specifications, software programming languages, network connectivity, and more. Regardless of the diverse and subjective uses of computer technology, all software programming is linked by the mathematical rules of logic. Computer programs can be presented by algorithms to show the bare structural and functional roles of the software program, regardless of the computer programming language. In fact, computer programs are routinely presented as logical flowcharts, especially in environments of production teams and intellectual property technology disclosures. Unfortunately, flowcharts are as diverse and subjective in their use as the vast landscape of programming languages and a lack of standards for creating and reporting by flowchart has resulted in a thicket of nearly incomparable documentation of software program algorithms. Even worse, the rise in popular use of unstructured breaks of flowchart diagramming has allowed software patent applicants to practice a drafting method akin to allowing one to disclose as they please. These unstructured breaks are difficult to maneuver around so that a full comprehension of the true software algorithm being presented can be achieved. Consequently, unstructured flowcharts routinely conceal the true number and types of components of a software program algorithm which further gives the advantage to applicants to create a false illusion that their invention is more simple or vastly different from the prior art when often it is very similar, more complex, or the exact same invention.
The software patent debate is well documented by information technology and law journals, U.S. courts, public opinion articles, and other publications. Any future substantial change to the legality of software patents, however, is uncertain. Therefore, a new focus of academic and technological efforts should be to improve the current system as is.
Important court rulings concerning the filing of software patents include In re Hayes and In re Sherwood establishing that adequate description writing of software inventions do not require full listing of code sources as long as the functions of the software are fully disclosed. This has left the door wide open for patent drafters to leisurely explore and use flowchart diagramming of software inventions. A serious issue not addressed by the courts in regards to this type of disclosure is standard formatting of flowcharting of logical computational structures. It is common knowledge among average programmers that there is a stark difference between structured and unstructured programming. Current research has found that a known set of weak software patents, identified as the most-litigated software patents from January 2000 to February 2009, was found to be plagued with 71.3% unstructured flowcharts for 258 flowcharts identified among 57 software patents. This is statistically significant compared to only 23.1% unstructured flowcharts for 195 flowcharts from 59 general population software patents. It is indicated from these results that the low quality of these most-litigated software patents that often lost their cases is related to the low quality of software flowchart disclosure.
One of the most serious problems with unstructured flowcharts is that it does not represent a one-to-one relation between the flowchart and source code. This is problematic for several reasons including the failure to represent a unique software algorithm, misleading functional processing, concealment and subjective removal of logical functional structures, and other factors. For the most part, any software algorithm can be taken and unstructured to such a point that what once was the same or very similar to the prior art is now extremely unfamiliar as it has been construed to be very different in form and function. In summary, the courts allowing patent drafters to disclose software algorithms by unstructured flowchart diagrams is akin to giving them a license to “disclose as they please.” Consequently, there is a strong need for a system and method for identifying and valuing software patents by effective identification of logical software structures as lowest abstract functional components and further identification of unstructured break points in the order of flow of data processing. The present invention is the only known technology that can perform all these tasks.
The present invention is a system and method for identifying and valuing a computer software program. Each algorithm of the program is identified and coded by a sequence of characters. The sequence is called a logical structures-to-functions (LSF) sequence as it is based on a logical structures-to-functions (LSF) model. To uniquely identify software program algorithms, there are eleven rules for coding a LSF sequence. The rules are accomplished in a general execution of steps of a method. Number and types of lowest abstract functional components and order of flow of logical data processing of each computer program algorithm of the computer program are identified. Components of each algorithm are coded into a sequence of characters for preserving information of the order of flow of data processing and number and types of components. The sequence is stored in a data storage medium. The data storage medium is queried to compare the sequence of characters, for its respective computer program algorithm, to general population sequences, of other computer program algorithms, to find similarities and differences in structural and functional data processing.
The following list briefly identifies elements of
The detailed description for
It is then processed by a decision structure asking if there is a nested structure in repetition structure 143. If there is a nested structure, it is further processed by sequence structure calling method for nested structure 137. If it is not a repetition structure it is processed by a sequence structure for coding unknown structure 145 for being an unknown structure. Further processing following all of these previously mentioned structures occurs by a decision structure asking if structure has an unstructured break in data processing 147. If there is an unstructured break in this part of the source code it is identified by a sequence structure for coding unstructured break in data processing 149. This can include an entry, exit, or both of unstructured data flow at this point. After this, further processing occurs by a decision component of repetition structure asking if there is another structure of the source code 151. If there are more lowest abstract functional components (logical structures) of the source code to be analyzed for completing the LSF sequence by LSF modeling, the processing will return to decision structure for asking if sequence structure 127. Processing continues for each logical structure of the source code until the last structure is processed and reaches decision component of repetition structure asking if there is another structure of the source code 151. Since it is the last structure, processing will go to a sequence structure storing the final LSF sequence 153 which then stores the LSF sequence in a data storage medium. This will most likely be a database though other containers like flat file systems and spreadsheets could also be used for storage. The querying capabilities of these other systems, however, would most likely not be as powerful as a database and therefore a database as a data storage medium is preferred.
The present invention draws upon proven models of the natural sciences to create an artificial “genetic code” for software program algorithms. The advantages are comparable to the successes of coding schemes used in chemistry, biology, and genetics. By identifying only the lowest abstract functional components (logical structures) with their respective order of flow of logical data processing by a simple sequence of characters, software program algorithm data storage can be reduced often by more than 90%. Furthermore, a collection of software program algorithms can be quantitatively, effectively, and quickly compared for same or similar inherent structures and functions. Just as a gene bank provides quick identification, an LSF bank would save a countless number of hours for scientists, engineers, students, educators, patent examiners, and more that may often need to rely on extensive qualitative searches of software programs—usually a direct result of failure by patent drafters to provide meaningful software algorithm flowcharts that can accurately describe the true number and types of lowest abstract functional components and order of flow of logical data processing.
For example, the LSF sequence for
Though hardware and software configuration for accessing an LSF database is proposed by remote client connection to the database, the database could likewise be accessed by other methods such as a company intranet or direct interfacing to the database server. The method proposed is considered to most suitable for the potential use of the LSF database by persons all around the World. Users could easily connect to the LSF database and submit a source code for quick and automated creation of its unique LSF sequence. This sequence could then be stored in the LSF database and compared to all other sequences for quick and effective identification of prior art.
The ability of the LSF model to ensure one-to-one relations of inventions to their disclosure of software program algorithm, to allow proper identification of software, and to be a quick and effective method for valuing software is not achievable by any other known technology. The rules for the LSF model are encouraged as the best balance between standardization and flexibility for a method of coding any kind of sequence of characters for the present invention; however, there are other models that could be used. Accordingly, the scope of the current invention should be judged only by the content of the claims and their legal equivalents.