Defining the boundaries of (Software) Patents
I can't help thinking that part of the differentiator between "valid patent" and "invalid patent" should be based on the generality or level of abstraction of a result: a new type of coffee machine has a pretty well defined, circumscribed use - furthermore someone else can come along and adapt the coffee machine to a substantially different field (and if there was an inventive step - get another patent). This is a world away however, from patenting particular types of data representations, search algorithms or standard business workflows - the more abstract a "contribution" is the more likelyhood there is that it might have a chilling effect on development of solutions in a wide range of application areas.
Furthermore, it's often easier to come up with the detailed, domain specific application of a method than the abstract method itself. If a patent has already been issued in an area, large classes of desirable solutions might be unimplementable without consent of the patent holder. Unless we're promoting innovation on how to "implement solutions whilst avoiding previous patents" this can't be a good thing.