A software development agreement is an agreement or contract whereby one party (the Developer) enters into an agreement with another party (the Client) to develop a software for the Client. The agreement provides the important terms and conditions to abide in the midst of the performance of the software development agreement in order to protect both the Developer and Client’s rights. There are several important clauses to be considered in a software development agreement.
- SCOPE OF AGREEMENT/ “SERVICES” PROVIDED
There should be a clear and comprehensive terms of the deliverables expected out of the software development agreement and both parties should be aware and agreeable to such terms. Among the scope of services to be considered are:-
- The software development process;
- The timetable/schedule/phases of the development of the software which includes delivery dates, any important critical timing and whether time is of the essence;
- The consequences should the timeframes are not complied with;
- The duration of the agreement;
- Any further development or further agreement in the future;
- Whether to include variations of software;
- Responsibilities of both parties;
- Liquidated damages for any breach of the terms of the agreement.
Performance and acceptance testing
It is important to do an acceptance testing after a phase of the development is completed as per the development timetable. The duration of the acceptance testing should also be specified in the agreement. The communication of acceptance and time to communicate acceptance must also be specified. Mode of communication of acceptance is commonly though written notice. It is also important to take note that certain agreements may take silence as a sign of acceptance hence both Parties must be specific on the requested mode of communication of acceptance.
Variations to the scope of services
Both Parties may agree to the variation of the scope of the services to the terms of the agreement. If there were to be variations, the costs and methods of calculation for such variations should be determined. This is to ensure the new costs are not potentially inflated because of higher dependency and reliance of the services of the developer and the cost and inconvenience to the Client to replace the service provider at that point of time.
- OWNERSHIP/INTELLECTUAL PROPERTY
It needs to be determined who shall have ownership and intellectual property rights over the software source code. Under Copyright Act 1987, the default position is that copyrighted material shall vest initially to the author/developer according to Section 26(1) of the Act. However, these can change through a written assignment of such rights. Developer should consistently be cautious and always have a back up of the source code by storing it in a central source code control system.
Third-Party Intellectual Property Rights
There should be clauses on third party intellectual property rights in the event there is usage of third-party hosting or third-party application or services. The liabilities, warranties and representations of the third-party host and services as well as Developer’s liability, warranties and representations pertaining to the usage of such third party must also be addressed. The payment of the licensing of such third-party host/services must be included.
Intellectual Property Warranties and Indemnities
The Developer should provide warranty to the Client that the software and Client’s usage of the software shall not cause infringement to any third-party copyright. Client should also ask Developer to indemnify in the event there are any third-party infringement claims, notwithstanding any warranties provided by the Developer.
- SUPPORT AND MAINTENANCE SERVICES SUPPORT
Provisions on support services is essential in a software development agreement. Support services are mainly required after the software had been installed and tested. Examples of things to be considered for provisions on support are:
- Details of the specific support services;
- Process of seeking for support and appropriate response time based on the severity of the issue;
- Warranties in regards to performance criteria, run times and response times;
- Matters not included the support services;
- The duration of the support arrangement;
- Whether there should be a separate agreement for support services;
- Access by the Developer to the servers, facilities, employees and premises of the Client in order to perform the support services; and
- Whether the developer can sub-contract support services.
Provisions on maintenance should be included the software development agreement as due to modernization and improvement of technology, modern software had undergone evolution. Thus, for continuous usage it may require updates or be upgraded. Clarification on this matter are necessary in a software development agreement:
- Possible necessary changes due to improvement and change to technology
- The usage of a maintenance contract or existing support services provisions in order to address the need for additional functionality if needed
- Fees for maintenance
- LIABILITY, WARRANTY, INDEMNITY
Provisions on liability should also be included in related to software development such as the Developer’s liability for consequential loss, appropriate insurance for Developer, the method for calculation of liabilities, etc
Warranty & Indemnity
Developer and Client should agree on the warranties and indemnities in the software development agreement in order to allocate risks in the event things goes south. Developer should avoid making claims that the software will function forever as technologies are rapidly changing. Example of provisions are guarantees of non-infringement of third-party intellectual property, warranties in regards to performance of software, promise to remedy defect and more.
Confidentiality is one of the important aspects in a software development agreement. As the Client would need to disclose information or data to the Developer in order to create the software, hence strict confidentiality provisions are needed to protect confidential information of the Client. There should also be a liability clause for any breach of confidential information or provisions with a high penalty in order to prevent any future breach.
In the event the Developer uses sub-contractors or third-party in order to perform the services, usually there would be a disclaimer that there would be no breach should confidential information if it was disclosed to employees or sub-contractor, provided the Parties are subjected to a non-disclosure agreement with restrictive terms.
It is also recommended to include non-solicitation provisions in order to protect both Parties legitimate business interests. Each Parties customers, suppliers, contractors, staffs or employees would not be solicited to join the other Party. The Parties may include provisions such as not to deal with the customers, suppliers, contractors, staffs or employees as long as the agreement is still subsisting and for a certain period of months or years after the agreement has been concluded, expired or terminated.
In regards to the payment or fees, there are several things to consider:
- Appropriate and reasonable upfront fees;
- Method of calculation for fees of any further works in order to foresee any cost blowouts;
- Payment schedule for progress payments;
- If there are any fee dispute or delay in payment, whether Developer would be able to cease development;
- Fees for support services and maintenance are recommended be paid upfront in order for the ongoing operational costs be defined the agreement.