From software services to websites and apps, software development is an ever-growing industry. As more businesses reach out for software development services, it is important that developers have a well-drafted software development contract. This will ensure the terms of the software development are clear and reduce the likelihood of disputes arising. This article describes the key terms that you should include in your software development contract.
How Should You Draft a Software Development Contract?
In general, the contract should remain consistent across each client project. It should have schedules attached at the end that include individual specifications for each client’s project.
For example, an initial clause will set out the development services you will supply in broad terms. The schedule will then specify the details that are particular to the specific client. This allows you to easily amend the software development contract for each client while still keeping your terms consistent across each project.
Development Services and Specifications
The development services clause describes the services in broad terms. For example, development of a website or app. It will also describe how much you will charge for these services.
The development specifications clause should reference the schedule that details the services to be provided to that particular client. This section of the software development contract should also allow for the client to request additional services or vary the specifications. Therefore, it should specify the process for amending the contract.
It is best practice is for the contract to require the client to make a written request to vary the services. The developer can then specify in writing the changes to be made, the extra time required and the additional fees.
The software development contract should state that the software will be developed in phases, not all at once. The schedule should specify:
- what each phase includes;
- the milestone deadlines for phase completion and acceptance testing; and
- any part-payment obligations.
The main clause should also describe how each party will handle delays. Contracts usually require the developer to notify the client of any delays at their end. For delays caused by the client, the contract should specify that extra time is added to the development phases until the client resolves the reason for the delay.
After each development phase, either the developer or the client will need to perform acceptance testing to confirm that the phase is complete.
Either the developer or client may perform acceptance testing. However, this clause should make it clear:
- who is responsible for the acceptance testing;
- how long they have to complete the testing; and
- how and when the acceptance is notified (ideally in writing).
Intellectual Property Rights and Assignment
The software development contract needs to specifically address intellectual property rights and assignment. For example, while the client will want the rights to use the software, the developer will also want to ensure that they retain the rights to any template code they use in multiple projects. Therefore, the contract should detail how and when the assignment occurs. It should also detail the intellectual property it assigns.
However, the developer can only assign the rights to software that they have the rights to. This is relevant because there is a wide range of open source software that is available for use. To put a client’s mind at ease, a software development agreement should include a warranty that the software developer has the right to use any open source or third-party software.
If you are a developer, you will want to limit any warranties you give. For example, by only warranting that the software complies with the specifications for a limited period during which you will fix any defects.
What you should not do is give a warranty that the software will be fit for the client’s purpose. This is too broad and open to uncertain interpretation.
The payment terms should note how the developer will request payment and when this request will be made. For example, by invoice. However, the main clause should not include specific fees and due dates. These details will vary with each client and project. Therefore, the contract should include fee details in a schedule attached to the end of the contract.
In most cases, the software development contract will link payments to successful completion of milestones.
Confidentiality and Non-Solicitation
The agreement should also cover the confidentiality of any information shared and a promise to implement effective security measures to protect this information. There should also be an agreement of non-solicitation, meaning both parties agree not to reach out to or entice away a client or employee from the other party’s business. These clauses should be enduring, meaning they continue after the completion of the contract for a specified period.
Dispute Resolution and Termination
Software development is complex. Therefore, even with a well-drafted agreement, there can be no guarantees that both parties will be able to fulfil their obligations on time or that there will be no disputes during the process of the agreement.
A good software development contract will clarify the dispute resolution process. Usually, it will state that each party has to first go to mediation to prevent disputes escalating.
The contract should also clearly describe how either party can terminate the agreement. This reduces uncertainty for both sides and therefore the likelihood of disputes.
Software developers are often located in different countries to their clients, or at least in a different state of Australia. However, the software development contract can only be signed in one jurisdiction, not internationally. This jurisdiction should be specified in the jurisdiction clause.
For example, the contract may specify it is subject to the jurisdiction of the Commonwealth of Australia and the courts of New South Wales. Where one party is overseas, the contract should also state that the parties will resolve disputes via arbitration, subject to the arbitration award being enforceable in the jurisdictions of the parties. Arbitration is a form of dispute resolution that produces binding resolutions. It is an alternative to court action and a much simpler way of resolving disputes across country borders.
A software development contract helps ensure that the software developer and the client are on the same page about the development services, timelines and payments. Before you agree to develop software for a client, it is important that you have a contract that limits your legal risk.
If you need assistance with drafting a software development contract, call LegalVision’s IT lawyers on 1300 544 755 or fill out the form on this page.
Was this article helpful?
We appreciate your feedback – your submission has been successfully received.