Navigating Software Development Contracts: An In-Depth Example
Definition of a Software Development Agreement
A software development agreement is a contract entered into by a business and an external developer or agency, where the business is seeking to hire the developers or development agency to create or develop their digital product or goods. The developer or agency will either be tasked with creating the software from "scratch" or developing "off-the-shelf" software to the specifications of the business.
If the business is looking to have the development work carried out by either in-house staff or outsourced development staff , it is also considered good practice to put in place a software development agreement to either reflect the materials terms of the deal or ensure that the outsourced staff will be in compliance with the terms of the agreement.

Essential Components of Software Development Agreements
A comprehensive software development agreement should explicitly set forth the scope of work that the software developer is agreeing to undertake. It should document in detail the services to be performed at each stage of the development process as well as the expected completion dates for each stage. A good software development agreement should also include the number of hours of work that the software developer anticipates committing to the project.
The software development agreement should state when payment for the project is to be made; for example, the contract could provide for an upfront retainer, followed by periodic payments through the project, and a final payment upon completion of the project.
Similarly to other standard contracts, a software development agreement forms the basis for the business relationship between the software developer and the client and as such, should outline the parties’ rights with respect to intellectual property. The agreement should specify who owns any and all modifications to existing software, the work product from the project, and other items created pursuant to the software development project. It should also specify how any preexisting materials of one of the parties will be handled.
Typical Terms Found in Software Development Agreements
A confidentiality clause is essential in establishing expectations for the confidentiality of disclosed information. As a non-standardized agreement, a software development agreement should include a thorough definition of confidential information. This not only protects the information of both parties but also the information resulting from the development of the work. The parties may state the need for each party to designate the information they feel should be considered confidential. You will also want to detail the time period the non-disclosure obligations may be in effect. Typically it extends to the duration of the contracting relationship, but that may depend on the private or public nature of a party or the interests involved in designating information as confidential.
The indemnity clause holds a party legally responsible or financially liable for the losses of another. The implication being the party has responsibility for the payment and management of legal claims, even ones which have not been substantiated. In some circumstances, the parties may decide to apportion liability for claims for which the indemnifying party is legally liable, including claims of the other party, and those of customers and employees.
Depending on the parties involved in the contract, you may have a choice on how disputes are resolved. You may opt to have disputes settle through alternative dispute resolution (ADR). It is an informal, cost-effective alternative to settling disputes through traditional means. This allows the parties to avoid the courts or trial process by having a neutral party attempt to reconcile the conflict. In the case that formal litigation is unavoidable, you may wish to specify the choice of law (governing law), the jurisdiction and venue for litigation, and the place of performance.
If you decide to terminate a contract prior to the completion of a project, you may have obligations to the other party that are not obvious. There may be requirements to repay a party for their costs in relation to the development of the work. Or your decision to terminate the contract may put the intellectual property rights or the further development of the work at risk. Based on the business case and parties involved, you should consider the parties responsibilities for the fulfilment of obligations upon termination of the contract, and the specifics for voluntary and involuntary termination.
An Overview of Intellectual Property Rights
Understanding the ownership of intellectual property rights arising from the Project and of the Output, as well as the use of the Output, is essential to the final agreement. How shall the Output of the Project be owned? As a matter of default, the Developer owns all IPR in the Output as it is he who created it. If the Client wishes to ensure that it owns such IPR, the agreement needs to reflect this, however, it should be recognised that it is rare for one party to create the entirety of the ‘Output’ of a project. For example, if the Client has supplied an artist’s brush to the Developer to provide a graphics overlay on electronic equipment, the question will be whether the IPR created by implementing the graphics overlay belongs to the Developer, to the Client, or to both. Similarly it needs to be clearly set out whether the Client or Developer owns the source code for the intellectual property that is created. As a matter of default the author will own the ownership rights in the code, however, he also has a right of attribution, i.e. he has the right to be identified as the author of the work; therefore, unless the contrary is stated in the agreement, the Developer will have "moral" rights in the software which prevent the Client from removing his name. When using third party software, the agreement must also address usage rights. If the agreement allows the Developer to use third party software when developing the Output, the agreement should address whether the third party provider is permitted to be identified as a third party supplier.
Sample Software Development Agreement
This Software Development Agreement ("Agreement") is made and entered into as of [Insert Date] by and between First Party, a company with registered office at [Insert Address] ("Client") and Second Party, a company with registered office at [Insert Address] ("Developer").
- SCOPE. Developer agrees to provide Client with the deliverables as shown on the Scope of Services Worksheet, attached as Exhibit A (the "Deliverables"), and Client may procure, and Developer shall use reasonable commercial best efforts to deliver, such Deliverables as they are required pursuant to the respective delivery schedule (the "Delivery Schedule") also shown on the Scope of Services Worksheet.
- ACCEPTANCE OF DELIVERABLES. All Deliverables shall be subject to Client’s acceptance within seven (7) working days after receipt by Client. If any Deliverable fails to meet the specifications and Client notifies Developer of such failure during the seven (7) day period, Developer shall, at no additional charge, promptly correct any non-conformance issues identified by Client.
- WORK PRODUCT. Developer shall prepare and submit the Work Product to Client for review under the Schedule of Deliverables . Client shall have fourteen (14) working days to review the Work Product. If Client determines that the Work Product does not meet all of Client’s requirements or has other deficiencies, Client shall promptly furnish written notice to Developer thereof.
- 2. Client will compensate Developer as set forth in Exhibit A (the "Project Budget"). Client agrees to pay 100% of the required fees for the Deliverables upon delivery. Payment for all other fees and expenses shall be paid by Client within ten (10) working days from receipt of invoice.
- TERMS AND TERMINATION. The term of this Agreement shall be 6 months. Early termination of this Agreement may be accomplished only in writing by signed agreement of both parties.
- INDEMNIFICATION. Developer agrees to indemnify, defend, and save Client from and against any and all claims, charges, damages, costs, expenses, fees (including reasonable attorney’s fees) recoverable under applicable law, obligations, Quasi-Contractual obligations, and liabilities that may be incurred by, asserted against, or suffered by Client arising out of, related to, or connected with:
Tips for Drafting a Software Development Agreement
In addition to the more obvious and easily recognized advantages of a well thought out software development agreement, it is crucial that an entity, business owner or legal counsel consider the possibility that new updates may be required for tomorrow’s release of changes in technology, and if such updates will be completed on the same contractual terms such that the new features will be owned by the company rather than the developer. Yeager notes that these clauses "pertain in particular to the extensible nature of the app world and the associated costs." This means that if a programmer must physically update any hardware or software, or create entirely new algorithms to accommodate future programmatic changes, the cost of such programming time, at least, should be balanced against any unilateral increase in the software developer’s strength over the fate of the product. It is in an entity’s best interest to consider the impact of any software development agreement, as such agreements can serve as binding instruments to transfer rights to app developers if not correctly drafted.
Common Issues and Solutions in Software Development Agreements
A common pitfall for many businesses is to assume that the terms and conditions of a software development agreement need only address the areas outlined in the last post. For example, much attention is often paid to the warranty and limitation of liability sections of such agreements. While those are incredibly important areas that must be addressed in the agreement, additional critical areas of protection may not get the attention they deserve. Here are a few more areas of focus that often get overlooked:
- Failure to understand the difference between source code and object code. Many businesses drafting development agreements for the first time fail to understand the purpose of the software being developed. For example, some businesses will spend all their time negotiating terms addressing the delivery and acceptance of object code, but fail to address the broader programming language that makes up source code. Source code forms the foundation of the software and its underlying functional capabilities, including enhancements, upgrades and maintenance. Object code is the programming code of the software that is readable only by a computer. It is a good practice to require the vendor to deliver both source code and object code.
- Failing to have a specific plan in place for the management of project changes. Most software development projects evolve over time. As business and legal needs change , new processes might get added and legal compliance issues might arise that necessitate modifications to the project. Step one is to understand that project changes require the mutual agreement of the parties. The parties should plan ahead for such project changes and develop a process for managing such changes.
- Failure to address other third-party rights surrounding the use of a vendor’s work product. It is not enough to consider just intellectual property rights that may be created as part of the project development. The IRS has strict rules defining what types of compensation may be provided to independent contractors and consultants. For example, if the vendor is a corporation and the compensation to be provided for the work product exceeds $600 in any year, the IRS requires businesses to report the payment and file an information return (1099-Misc). The IRS also has worker’s compensation and unemployment insurance obligations for certain workers. The bottom line is that independent contractor tax issues may arise if the vendor is organized as a corporation or LLC.
- Failing to address liability issues that may arise from the use of open source, third-party developed software and third-party developer modules. The parties can agree on who owns the new intellectual property created as part of the project, but they must also address the parties’ rights to use any existing code, modules, API interfaces, libraries, design tools and other products. This includes intellectual property created by the parties’ employees and their third-party vendors.