One years protection is definitely an improvement, but its still philosophically antithetical to the reason for patents to exist in the first place. Copyright should be sufficient protection, to keep people from stealing your code, but Software Patents protect the very idea, regardless of the means used to obtain it, in a way that physical patents do not.
Patents are designed to spur innovation by getting companies to share their secrets, so that a valuable portfolio of useful arts and sciences is built in the public domain (paraphrased from the Constitution Article 1). In return for sharing their secrets, the company is granted a limited exclusivity on the patented machine for a limited period of time designed such that the invention is still valuable after the exclusivity expires. Thats our first problem: Most software inventions are only good for about 5 years, which is less than copyright term. In that regard your proposal is spot on.
The bigger problem is however, that a patent on a machine makes only reasonably abstract claims, and the construction of the device must be reasonably concrete, meaning that substantially changing the design of the machine produces a new non-infringing product, even if the two devices perform the same task. Software patents however, are very very abstract, such that any means anyone could ever develop to perform a task that someone has patented an approach to, despite using a dramatically different approach, or developed without knowledge of the existing patent, is supposedly infringing. This is starkly different from Copyright, in that you generally have to know you are making an action that might infringe a copyright, by consuming an existing artefact.
Lastly, because Software Patents are so abstract (as opposed to patents on a physical machine or pharmaceutical) that when the exclusivity period is over, the secrets the inventor shared with the government are useless for further innovation in the public domain. This undercuts the entire purpose of Patents as described in the US Constitution, and only serves to promote anti-competitive practices for the companies profit.
Ultimately, there is no fix, that can make software patents work, unless every method in the algorithm is stated in the patent, such that you can create non-infringing approaches to achieve the same goal, which do not infringe, and so that the invention has worth to the public domain after exclusivity expires.