As a leader commissioning software development, you have several interactions with vendors providing services. Building trust between you and the vendor is essential to successful collaboration. How do you build trust, while preserving your rights and the vendor's obligations? To answer this, we must first define a software development contract and its essential terms and conditions.
The custom software development contract is a legally binding document that establishes the terms and conditions of the relationship between the customer and the contractor. It assists both parties in avoiding software development risks while achieving expected results. A strong contract ensures the project's good quality and a positive experience working with the development team.
- Types of software development contracts
- Custom software development contract template checklist
- 1. Services and resources to be provided
- 2. Deliverables and Acceptance Criteria
- 3. Pricing and payment terms
- 4. Intellectual Property Rights
- 5. Confidentiality (Non-Disclosure Clause or Agreement)
- 6. Non-compete Protection
- 7. Compensation for Damages
- 8. Governing Law and Jurisdiction / Dispute Resolution
- 9. Termination of Collaboration
- 10. Changes to the Contract
- Conclusion
Types of software development contracts
It is important to understand the funding strategy and the main idea of the project in order to choose the best solution.
There are two primary ways of paying a developer for the production of custom-made software: an hourly charge, or a lump-sum (known as a "fixed-price" agreement). Therefore, the two types of software development contracts are “time and materials” contracts and “fixed price” contracts.
Time and material
This is the most typical sort of custom software development outsourcing arrangement. By signing a time and material contract, you commit to paying the developers for their time spent on your project. To get the total fee, simply multiply the number of hours delivered by all the developers by the hourly rate adopted for the project (or a total number of man-days X man-day rate).
Vendors prefer a time and material contract because it guarantees payment even if the project extends beyond the anticipated timeline. However, this requires you to maintain control over the entire process of the project.
There are several considerations when signing a time and materials contract. By definition, you agree to pay more if the project takes longer than projected. You can have more control over the development process if your vendor implements iterative delivery. This gives you a constant update of the completed work every two weeks (or weekly, if you prefer) and allows you to estimate the remaining time.
Fixed budget
A fixed-price agreement requires a high level of certainty on all dimensions of a project, from design to technical solutions for both parties. It involves an assessment of all stages of the project and is more suitable for engaging suppliers to perform minor tasks.
With a large software development project, a fixed budget contract often does not function effectively due to its inability to accommodate combined effects of scope and technical unknowns and/or subsequent changes that are involved in a project. In order to remedy this, a fixed budget contract may permit predefined adjustment to the scope and final contract price, depending on prevailing conditions.
The fixed-price agreement favors the client by providing certainty as to the cost of the project. Fixed bids are quite popular on freelance marketplaces, where customers post assignments and the sum they are willing to pay.
Custom software development contract template checklist
There are certain key provisions that should be in every software development contract, notwithstanding whether the contract is a time and material contract or a fixed budget contract.
Services and resources to be provided
The software development contract describes:
- the nature of services to be provided,
- the place and time of service delivery,
- The mechanism of personnel selection/approval.
The main types of services to be provided under a software development contract are design, programming, quality assurance, and - sometimes - workshops. The contract may go beyond stating the type of services to be provided, to specifying the expected deliverables (for example, designs, application modules or software features). The specifications may be written in a nontechnical language or be a prototype of the software.
The contract also defines the scope of the project and the procedure for making changes to the specification or scope. Such modification will likely impact the project timeline and cost and should always be agreed by both parties.
Further, the contract describes the personnel to provide the services, such as specific individuals with skills and competencies to be approved by your firm or the outsourcing company. These individuals are not named in the agreement but are described broadly. For example 2 python back-end developers, 1 React front-end developer. The agreement may also state the mechanism of personnel selection or approval, granting you the choice to approve the proposed personnel.
Finally, the software development contract states the place of service delivery - fully remote or on-site - and time of delivery of the services, including time for collaboration when in different time zones.
Deliverables and Acceptance Criteria
This section sets the success criteria for a project. To avoid misunderstandings and arguments, the criteria for job acceptance should be written in plain language.
Prior to initiating the process of developing custom software, a software supplier and a customer collaborate to define acceptance criteria for the required application based on its system specs.
In fixed budget contracts, the customer sometimes receives a Certificate of Acceptance when the project is complete and the generated software meets all predefined requirements. This certificate verifies that the application complies with all contract requirements and that both the software vendor and the customer agree on the project's successful completion.
In the case of a Time and Material agreement, the client receives a monthly report and certificate of acceptance detailing the tasks done and the time spent by the team on those tasks.
In either case, the performance of the software should be tested to determine the extent to which it meets the predefined specifications. This section of the contract states how the performance test would be conducted and the acceptable form of feedback required to be obtained from the test.
Pricing and payment terms
This section defines the payment terms of the contract, depending on the type of contract.
In a fixed budget contract, this section defines the lump sum to be paid, whether payment is to be made upon achievement of defined milestones, and the timeline for the project.
On the other hand, in a time and material contract, this section states the hourly fee of the vendor. It also states the frequency of payment, which could be weekly, monthly, quarterly, or depending on the progress of the project.
The contract also states the frequency with which the vendor would report or update the client and the detail of worklogs to be provided by the vendor.
Intellectual Property Rights
This section establishes who owns the intellectual property rights in the produced software and is one of the most critical sections of the contract. It is critical to emphasize here that the final product is the customer's property. Thus, the customer acquires ownership of the generated application's source code, or - when Open Source software is deployed - the customer at least has the title to deploy it for the intended purposes
The software development company has no right to use, create, alter, sell, or rent developed software for profit in any form. In order to ensure that the software development company does not use or have any right to the produced software, the contract must clearly provide for the transfer of ownership from the software company to your company. Also, if the contract terminates before the project is completed, the contract should transfer ownership of whatever code they have produced so far to your company.
Where open-source tools are used in the production of the software, care must be taken to study the licensing terms, as some licenses require modifications of the open-source software to be distributed under the same open-source licenses. The contract may specify the kind of licenses that can and cannot be used in developing the software. It may also require the vendor to list the Open Source components deployed in an agreed location for your firm’s review. You are to ensure that the licenses permit the Open Source components to be used in the way they have been used by the vendor in the software. Where the license requires the consent of the author prior to use of the open-source tools, your firm must seek the consent of the author in accordance with the license.
Additionally, the client needs to keep in mind that the author will remain the owner of open-source components, while ownership of codes developed by the programmer will be transferred to you or your firm. This is because the client merely has a license to the open-source tools and cannot acquire ownership to Open Source components.
Confidentiality (Non-Disclosure Clause or Agreement)
This section safeguards both your firm and the software development business from the disclosure of sensitive information and trade secrets to other parties. Your firm and the software provider can agree on which data is considered sensitive and what consequences will apply if it is disclosed.
If a secrecy section contains a great deal of information, it can be expanded into a non-disclosure agreement (NDA) and linked to the main custom software development contract. The confidentiality obligation in the software development contract of NDA would generally outlive the completion of the project.
Non-compete Protection
It is necessary to also ensure that your vendor can not deliver a very similar solution to your competitor. A non-compete clause prevents the service provider from creating a similar software for your competitor within a specific time after the completion of the project. This helps your firm retain a competitive advantage in its industry.
Compensation for Damages
The warranties section covers a variety of product and project-related commitments that both the vendor and the client agree to fulfill. They are frequently associated with the software's functional performance.
A warranty may be a commitment from the vendor to the customer that the software will perform as expected, in accordance with the specifications, for a specific period of time. If not, the vendor may have an obligation to compensate the client. For instance, if any bugs or malfunctions occur in the generated software, the vendor is obligated to repair or replace them.
Other forms of warranties that attract compensation include a warranty as to the ownership of the software and that the software will not infringe on the intellectual property rights of any third party.
Here is a sample warranty clause:
- SERVICE PROVIDER warrants that for a period of 3 months following acceptance, the Software will operate substantially according to the Specifications. In the event of any breach of the warranty, in addition to any other remedy to which CLIENT may be entitled, SERVICE PROVIDER shall take all action necessary at its expense to cause the Software to operate according to the warranty.
- SERVICE PROVIDER warrants that the Software will not infringe upon any copyright, patent, trade secret, or other intellectual property interest of any third party. SERVICE PROVIDER will indemnify and hold CLIENT harmless from and against all such infringement claims, losses, suits and damages including, but not limited to, attorney's fees and costs, and shall promptly following any bonafide claim of infringement correct the Software so as not to be infringing, or secure at its own expense the right of CLIENT to use the Software without infringement.
Governing Law and Jurisdiction / Dispute Resolution
Another important section in a software development contract is the governing law/dispute resolution section. Ensure your country (or state) law applies and governs the contracts and in case of dispute, that your local court has jurisdiction.
Additionally, establishing dispute resolution processes can benefit both parties in avoiding the significant expenses associated with judicial proceedings. This can be resolved through arbitration or mediation between a software vendor and a client.
The arbitration will be conducted by a panel or a single arbitrator who will provide a final decision after hearing the arguments of both parties. Whereas mediation entails a mediator and the two parties collaboratively discussing their differences.
Termination of Collaboration
The termination clause will usually provide the process and notice period for termination of resources deployed on your project and termination of the entire contract. It is advisable for termination to be made in writing.
See a snapshot of a termination clause below:
- CLIENT reserves the right and shall be free to terminate the collaboration at a 4 (four) weeks’ notice. When booking resources for an unlimited time CLIENT reserves the right and shall be free to terminate such booking at a 4 (four) weeks’ notice. The provision shall not apply during a test project implementation period which shall not exceed 2 weeks.
- SERVICE PROVIDER shall be free to terminate the collaboration at a 4 (four) weeks’ notice.
- The termination of collaboration between the parties shall have no impact on the rights effectively acquired by the CLIENT or SERVICE PROVIDER prior to the date on which the termination becomes effective.
Changes to the Contract
Finally, the contract should state the process for modifying its terms and conditions. Changes to the contract should be required to be made in writing, for records of both parties. Written changes should be introduced in the manner provided for in the final clauses of the contract.
When fixed-price is used for payment, the changes in scope and the resulting changes in price and implementation schedule should be included in the Appendix amending the contract. Remember to specify the date when the changes are to take effect, e.g. when the rate is to change for price calculation, which may sometimes be weeks or even months after signing the Appendix.
Conclusion
In building trust with a vendor, the custom software development contract should clearly set out the terms of collaboration. Importantly, the scope of the services to be provided should be set out. The cost of the services means, and frequency of payment should also be stated in the contract. Additionally, the transfer of intellectual property rights in the software should be specified in and affected by the contract. Finally, the governing law, jurisdiction, and means of resolving disputes should be clearly set out in the contract. These would reduce disputes arising from the contract and align your expectations with that of the vendor.