Software, like any new idea or invention, needs patent protection. If you plan to develop or market your brilliant idea, you're going to want to do so without it being stolen by competitors. You may already know how to get a patent, but when it comes to software, in particular, there are a few unique things you need to take into consideration before starting your application. Ask yourself these three simple questions, and you'll have a much clearer idea of whether or not your software is patentable.
Question 1: What Exactly Am I Trying to Protect?
Your innovation might be an algorithm, a snippet of code, a full-blown computer program or a new computing-based process. It's worth taking some time to pin down the exact limits of what you are trying to protect before approaching patenting. This is because there are certain things that patents do not ordinarily cover. Code, for example, is not routinely patentable (although it is protected by copyright). This is because computer code is just one method of achieving an outcome.
It's entirely possible to write a dozen different snippets of code to achieve the same result -- so while the code is covered by copyright, patenting is not appropriate in this instance. You're much more likely to be able to get a patent if your invention is a system or a set of processes with a clearly defined outcome. The computer code may well be used as part of this system, but it is the process and not the specific code that will be protected by a potential patent.
Question 2: Does It Pass the 'Machine or Transformation' Test?
Although it was decided in the 2010 case of Bilski vs. Kappos that the "machine or transformation" test could not be the only method of determining patentability, it is nevertheless still given strong consideration when determining whether a software-based application might be eligible for a patent. This simple test asks whether the process in question is "tied to a specific machine or apparatus" or transforms an article into a "different state or thing".
The first part -- regarding a specific machine -- is the most relevant in this case. Is your innovation attached to a particular, named machine? And -- importantly -- is that machine a vital part of the process that you're trying to protect, rather than just an added extra? If your innovation makes use of a specific machine or apparatus in a way that is only vaguely connected to its main purpose, it is much less likely to constitute patentable software.
Furthermore, there's the case of Alice Corp vs. CLS Bank Int'l to take account of. This 2014 ruling determined that the simple recitation of a generic computer program counted as an "abstract idea", and as such would be ineligible for patent protection, unless some feature rendered the innovation more than just abstract. If Bilski vs. Kappos wasn't enough to convince you, then the Alice ruling should neatly underline the importance of having a specific machine or apparatus at the center of your innovation.
Question 3: Will Your Idea Be News to a Software Engineer?
In order to be patentable, inventions need to be novel: something that nobody has thought of before. In the case of software, you should go one step further, and ask yourself whether an expert in the field -- someone competent, and thoroughly versed in software design -- would think that your process is an obvious and easy thing to accomplish. If so, then you will not likely be able to secure a patent, even if nobody else has sought to patent the process before. There are exceptions to this rule, of course (Amazon's one-click purchase feature being particularly notable for the controversy it has caused), but it's still an important and relevant question to ask.
Of course, patent law is constantly changing -- and can be complex at the best of times, particularly when it comes to software. In order to ensure a positive outcome, the best thing you can do is to secure the services of a patent expert to guide you through the difficult territory surrounding patent law.