One of the biggest challenges in writing patents for computer-implemented inventions (CII) or “software patents” is the level of disclosure that is required. A patent examiner can reject the patent application in Europe for lack of enabling disclosure (as we have previously reported here) or for “indefiniteness” in the United States.
Giving full details of the source code – which could run to several thousand printed pages – is not required. A growing number of decisions from the courts and patent offices from around the world clearly indicate that it is, however, necessary to give details about the algorithms underpinning the invention if the patent is going to be granted (or upheld if challenged). An applicant that fails to give a sufficient level of detail risks losing their patent.
The level of disclosure needed in a patent specification, and in particular, for a patent application directed to a computer program is always challenging. A decision by the CAFC Appeals Court in the US has given some additional guidance. In the recent case of Rain Computing v. Samsung Electronics America, 989 F.3d 1002 (2021), Rain Computing’s granted patent claims were later held to be invalid. Samsung successfully argued that the claims of the patent directed to a “user identification module” were “indefinite” because the patent description did not disclose in detail the method or algorithm by which the module actually functioned as a means of controlling access to a software package.
Anecdotally, it seems that many patent applications directed to software modules in a computer-implemented invention in fact fail to provide sufficient descriptions of the algorithms performed by those software modules. The reason for this is probably a natural consequence of how the software modules are specified by programmers during the design process stage before the software modules are coded. A software module provides a layer of abstraction so that the programmer only needs to provide the required input in order to receive the expected output. The programmer generally is not concerned about how the software module actually produces the output, so long as the module carries out its function correctly and efficiently. For this reason, software modules are often specified merely in functional terms and the details of their underlying algorithms are left to implementation by coders after the design stage is completed. This abstract level of description is generally sufficient to guide software development and design. It is unlikely, however, to support a claim to a software module in a patent application.
Over the years, courts and patent offices have confirmed that the method or algorithm described by a software module in a patent application can be expressed as a mathematical formula, a textual description, a flowchart, or in some other way that goes beyond mere functional descriptions. The figures in the patent application might include a detailed flowchart of operations, along with written descriptions of each step in the figure. A Uniform Modeling Language (UML) behaviour diagram also can be used to describe the algorithm, as long as the patent description includes enough detail to understand the diagram. Other patent applications include a form of pseudocode to describe the algorithm. It is this level of detail that is often to be found in whitepapers, architectural diagrams, use cases, simulations, models, etc., (but not high-level description found in a marketing presentation) that is required by the patent office. If the patent description seems better-suited for public relations or marketing purposes, then its level of detail is probably not enough to satisfy a patent examiner that the computer-implemented invention is sufficiently disclosed.
One of the ways in which to improve the disclosure in the patent application is to avoid the use of the term “module” in the specification and rather describe the various elements in much more substantial or concrete terms and/or to refer to existing open-source programmes that can perform the various functions. Details of the elements of the claims should still be given in the patent description. In the Rain Computing v Samsung America case, the inventors agreed that there were certain algorithms, such as “open source software” that could implement the claimed “user identification module”. However, the specification included no details about the open-source software or the claimed software. The court concluded therefore that the claims in this patent were “indefinite” and therefore not valid.