I have always found the concept of software patents confusing. I am listed as a co-inventor on a software patent, so perhaps that raises a conflict of interest. Still, here is my best understanding of the issue.
For anything to be patented, it has to be new, useful, and not obvious. Also, you cannot patent a business process or a mathematical algorithm. If the business process or algorithm, though, is incorporated into a system that relates to concrete, real world values, that that system is patentable.
Several recent examples of software patents show the complexity of this issue:
Amazon files a patent in 1997 for the concept of One Click shopping where a customer enters their credit card number just once and the can place multiple product orders in the future with a single click of the mouse. They sued and prevailed over a competitor, Barnesandnoble that offered an "Express Lane" for their customers, that also stored a credit card number once and allowed customers to place multiple orders under that credit card.
Microsoft has applied for a patent for the IsNot operator in BASIC. This is
A system, method and computer-readable medium support the use of a single operator that allows a comparison of two variables to determine if the two variables point to the same location in memory.
Apparently, this improvement on the construction
Not (a Is b)
is sufficiently original to warrant a patent.
You can find an earlier version of this page on my original website.