Software Patents: A Practical Perspective