Negotiating Software Contracts