Personally, I'm OK with software being patentable provided a couple of changes to the way they are currently awarded. First, a software patent must be truly novel to be patented. Taking something we already did without computers, and making a program that automates it should not be grounds for copyright. Also, taking something that programmers have been doing for decades and all of a sudden deciding to patent it shouldn't be awarded a patent. Perhaps the patent office should hire some actual people versed in software and computer systems development to help determine of some new patent application is actually something we haven't all been doing for the last 20 years.
Secondly, a fully working codebase should be submitted with the patent application such that, when the patent is expired, we actually have a record as to how the patented software was actually implemented. You shouldn't just be able to describe what the software does to be awarded a patent. A fully working code base must be presented so that the patent office can determine that you've actually done something novel and that you've actually made software that does what you say it does.
Thirdly, software patents should be shortened to make up for the fact that software evolves at such a fast pace. 5 years should probably do it.
Personally, I think all patents should be shortened. The world moves at a much faster pace than it did 100 years ago. It's completely possible to come up with a new invention and have worldwide adoption within 2 years, and the product even often becomes obsolete within 5 years. Maybe something like apply for patent, you have 5 years to bring it to market. If you don't have a significant marketable product, then patent expires. If you have a product, you get another 5 years to sell it. Maximum patent length is 10 years.