I have always had a mixed view of software patents. There are some things that probably deserve them, but there are a lot that don't. Just because someone hasn't done something with a computer before doesn't mean that it is worth a patent. (Think "method for completing a financial transaction across an international border using the internet.") That's pretty obvious if you have seen an e-commerce sale within the same country.
I have not heard many good solutions. Some people say "do away with them all." That's overkill. Other people decry the situation, but feel that there is nothing we can do to fix it.
This paper has another proposal - use the "obvious to try" standard that comes from the medical industry. The standard assumes that there is a standard set of tools that computer scientists know, and there are obvious solutions based on applying these know tools. This forms the basis for a definition of "obvious to try," and a way to weed out the obvious patents that we all complain about.
Read the full paper here.http://papers.ssrn.com/sol3/papers.cfm?abstract_id=2399580