How To Negotiate Software Contracts