More and more companies are considering the use of technology in their traditional businesses. These companies with non-IT background usually outsource the software development services to some IT company or consultant. In the process, such companies (referred to as client/customer in software development contracts) face few major challenges:
All of these challenges can be addressed by executing a well-defined and properly drafted software development contract with the IT company or the consultant, clearly enunciating the key terms of agreement between the client and the IT company/consultant (referred to as developer in software development contracts).
All software development contracts can be broadly classified in to two types – (a) fixed price/cost contract, and (b) time and materials contract. Both have their own pros and cons and all depends on the project specific requirements to make a choice between the two. Moreover, terms can also be tweaked in bespoke contracts to provide for a combination of the two depending on the requirements of the client.
Fixed Price/Cost Contract: As the name suggests, fixed price/cost contracts lay down a fix price/cost for all of the services agreed to be provided under the contract. In simpler terms, both the client and the developer fix a final price for full cycle of software development even before the start of the project. In such contracts, it is important to identify and record clear and precise project requirements. This is more suited to smaller projects where clear specifications, features and requirements are identifiable even before the start of project.
Time & Materials Contract: This type of contract is suitable when the project requirements could not be finalized at the start of the project. In such contracts, the price/cost of the project is dependent on time, efforts and material (including cost for licenses, hosting, database, etc.) involved in the project. In this case, the project scope is not constant and a client can change the requirements in the middle of the project. However, any change in the scope of the project would lead to increased cost and delay in deadline. Parties can finalize a change request form along with the contract to avoid future disputes. A change request form should clearly mention the product changes and the effect of such changes on the project cost and deadline.
Even though there is no fixed format to draft a software development contract as the terms vary on the basis of negotiations between the parties. However, few important terms need to be considered while drafting any software development contract.
Scope of the Project
It is important to mention all the deliverables of the project in clear and precise terms. This head should cover minute details like technology stack used for development, handling code deployments, APIs and permitted third party tools, etc. Detailed scope of the project can be provided as an Annexure to the contract.
For time and material contracts, it is also important to cover the procedure to implement changes after the start of the project along with the consequences of such changes.
Project deadlines, milestones and payments
This head should cover the project deadline, the project cost including its calculation, the time-linked milestones, and the payment schedule. It should also cover the consequence of any default by the client (on payment liability) and by the developer (on account of delay in achieving milestones) so that both parties have clear understanding of their obligations.
For time and material contracts, the project cost would be variable and therefore, it is important to clearly specify the developers’ hourly rates on the basis of the experience and qualifications of the developers.
Criteria for work acceptance on delivery
It is very important to specify the criteria for work acceptance on the basis of technical metrics so as to avoid misunderstandings at the later stage. It is suggested that both the parties agree on a set of predefined requirements (possibly in a check-list form) in order to simplify the basis for work acceptance. This would also give a better idea to the developer about the deliverables.
This is required only if the client wants the developer to train is employees on the working of the software. This clause should include complete details pertaining to the time, duration, additional costs and place of training.
Post-deployment maintenance and support
This clause lays down details about the time period for which the developer will provide support and maintenance. It should also cover the type of support, resource persons, turn-around-time, and the cost implications of the support.
Intellectual Property Rights
This head covers the details about the ownership of the software. A computer software is an intellectual property which is protected under the Copyright Act, 1957. Usually, the rights related to the software are vested with the developer but the developer is entitled to transfer any or all of his rights to a third party by way of an agreement. Ideally, the ownership (including the developed source code) in such cases should be transferred to the client as the software was developed at the instance of the client only. Furter, it is better to explicitly prohibit the developer to use, develop, modify, sell, rent for benefit in any other way the developed software or any alterations.
Also, there could be a possibility that the developer could have infringed the intellectual property rights of any third party during the development of the software. Therefore, there should be a clause for indemnification of the client from any lawsuit(s) that may arise due to the infringement of any Intellectual Property Right of third parties by the developer.
During development of the software, the client would share confidential business information to the developer which should be protected under the Contract. Under this head, the developer should undertake not to disclose any project-related confidential information to any third party. The term confidential information should be properly defined and the confidentiality clause should survive the term and termination of the contract.
The task of software development is a specialized task. The client does due diligence before allotting the project to the developer. Therefore, there is a legitimate expectation on part of the client that the project would be done by the developer only. Therefore, it is important that the client should ensure that a non-assignment clause is included in the software development contract so as to bar the developer from assigning the project or any part of it to any third party.
It is important to lay down the mechanism to resolve any dispute between the parties. The contract should also provide for liquidated damages in case of breach by one of the parties. It is advisable for parties to opt for mediation followed by arbitration so as to avoid high litigation costs and delay and laches involved in judicial proceedings.
•Laws are constantly changing, either
their substance or their interpretation. Even though every attempt is made to keep the information correct
and updated, yet if you find some information to be wrong or dated, kindly let us know. We will acknowledge
your contribution.Click here to know more.