How to Protect Your Software Innovation with Patents