When writing a patent application for a software invention, the most important objective is to provide enough technical description so that someone who is “skilled in the art,” can make and use the invention after reading the patent application. With software inventions, a person skilled in the art typically refers to a computer programmer. Basically, the objective becomes to describe how the software works so that a computer programmer can write the code in a desired language and assemble hardware components to replicate the invention without having to guess or experiment. Many software patents and applications have been invalidated or rejected for being too abstract, so it is also very important to list the technical solutions that your invention provides to one or more technical problems.
With this in mind it is a sound idea to discuss a hardware architecture that the software can operate on and at least one or more flow charts which describe the steps or processes that the software performs to provide the functions of the invention to a user.
The description of the physical components or hardware architecture is important because it ties the steps and processes to be performed to tangible elements. Try to describe how the software, via the hardware, provides one or more technical solutions to one or more technical problems.
The flow charts detail the steps that the software performs in order to achieve the one or more technical solutions to the one or more technical problems. Depending on the complexity of the invention, it may be easiest to provide an overview flow chart which details the software logic from a broad overarching point of view and to also provide one or more flow charts that detail how each of the steps from the over view flow chart are performed.
Is software still patentable? It depends. Usually the more technical the better and if you can use any new hardware pieces along with your software that will improve your odds. Here are some quick (non-legal and non-scientific) examples of what may generally be considered patentable vs. non-patentable software tools:
Should be patentable:
-Software to increase memory storage
-Software to reduce loading times of a graphical processor
-Software to more accurately count gallons of fuel being dispensed from a dispenser
-Software to calculate the position of a part being machined by a 3D printer
Most likely not-patentable
-Software to calculate the value of a financial asset or crypto currency
-Software to help children learn reading by displaying text and sounds
-Software to arrange data or images in a unique way on your screen
-Software to sell a new product or service online
Note that the software inventions that appear to be more technical and scientific are likely to be patentable while the software tools related to business, finance, or generally displaying data and information are likely not going to be patentable.
The data for this chart below is slightly out of date but it gives us a good snapshot of where things stand in the software (eCommerce) space. Note the blue line at the top shows that nearly 80% of of eCommerce related patent application end up going abandoned after they get a 101 type rejection (a 101 rejection means the patent office does not think this type of software is technical enough to justify a patent).