This article is written by Arushi Agarwal, pursuing Diploma in Advanced Contract Drafting, Negotiation, and Dispute Resolution from LawSikho. The article has been edited by Ruchika Mohapatra (Associate, LawSikho).
A software development agreement refers to an agreement between two parties where one is a developer and the other one is its client. By way of this Agreement, the developer contracts to develop the software application required by the client. The client may be individuals running a tech setup or companies owning complex software. The software developer works as per the concepts and requirements of its clients that are usually the core of the agreement. The time limit for the development of the given software is the essence of most software agreements. A software development agreement is also known as the ‘Master Services Agreement’.
Software companies are now outsourcing their business by hiring developers for private as well as commercial purposes. This makes it apt to demarcate the extent of the rights and obligations of software developers and their clients to avoid the possibility of any kind of disputes. As stated above, each company prefers software development as per the nature of its idea, the complexity of its project, the team it plans to employ, etc. while a few key questions are universally valid, others may differ depending on the development process. All aspects must be carefully measured before agreeing to the terms of the agreement.
Once the software developer develops and transfers the customized software to its client, the client would incorporate the same in its product, services or processes, and this customization is elucidated as an appendix, exhibit, or rider clause in the agreement. The client would also test the workability to see if it fits the business requirements, and all these steps find a place in the ‘scope of work’ or ‘statement of work’ of a software development agreement.
The commercial intent of parties entering into a software development agreement is like that of a work for hire agreement. The written agreement serves as a roadmap for the parties at each point and if any dispute arises, it suggests ways to overcome it.
Types of software development agreements
There are typically three types of agreements with software developers. These three can also be combined in a master service agreement. The following are the characteristic of each one of them below:
Here with the time/material principle, one pays for the developed user stories, there are certain progress indicators that are always agreed upon. Since many IT companies use the agile methodology for product development for their clients, its principals and ideas should be defined in the agreement, various words kike sprints, backlogs, user stories, etc. are used here. In waterfall agreements, the result of the development is stated in the very beginning only. This means both parties are aware of the exact results soon after signing the agreement and the work statement. However, this is not the case in agile agreements.
- Generality- At the start of the development process itself, the product owner and the customer have a backlog- the general ideas and outline of how the result would look like. After that, the project is divided into sprints with user stories.
- Payment- The payment is evaluated depending upon the difficulty and time for the given user story and the sums of all user stories from the price of the specified sprint. One can think of sprints as some stages with the price of the work, that is formed based on the user stories within the specified period. It is always better to include a provision that allows changing the price spent per hour. One may also sign an additional agreement apart from the general agreement or just include an annexe with prices stipulated to avoid making permanent changes.
- Warranty- In an agile agreement, the developer should warrant that the software developed does not suffer from the claim of any third party. The parties further state that the given agreement is an agreement of a work made for hire and therefore, customers would receive all copyrights.
In these relationships, a developer cannot guarantee the exact result from the very start, but during the working process, each user story gets accepted. Hence, parties tend to understand the progress as the process moves forward. More and more software development agreements are now made on an agile basis, so it is extremely important to state fair terms out there.
Waterfall (fixed price) contract
It is an agreement where the agreed work statement is stated as an integral part of the agreement and then one expects the result to meet all the stated requirements. An agreement can be signed based on this model when one has a strict and complex vision of their future software. To understand it better, let us say that a developer received the exact instructions from a waterfall agreement and the deadline to be adhered to. The developer can accordingly create the software as per the technical order received. Parties generally determine the deliverables to be produced in a statement of work. This defines all the aspects of the software development agreement. Let us understand it by going through some of the main features of waterfall agreements as stated below-
- The subject of the agreement- The basic question of ‘what do we develop’ is answered in this clause. It generally includes design, development, delivery, testing, maintenance, and support of all deliverables set forth in the decision statement of work. The most convenient way to write down the subject matter of the contract is to include the most comprehensive provision possible.
- Obligations of the parties- In this clause, states what materials are provided by the customer and when. The obligations of the developer are formed in a way that makes the developer liable for the development of the software in straight accordance with the statement of work.
- Warrants of the parties- In this clause, both the customer and the developer guarantee that they are entering into the agreement with good faith and are completely eligible to do so. The following provisions may be included by them:
- Parties have the necessary corporate power to enter into the agreement and to carry out its obligations hereunder.
- The execution, delivery and performance of the agreement have been duly authorized by all necessary corporate action and
- No consent of any person or entity that is not a party to the agreement is required or necessary for it to carry out its obligations under this agreement.
- Liability and confidentiality- Different provisions on liability are included by the parties such as breach of intellectual property rights, breach of obligations with respect to termination of the agreement, breach of obligations with respect to the termination of the agreement, breach of contractor’s indemnification obligations, etc. The most important part is related to the issue of confidentiality. The purpose behind inserting a confidentiality clause is to restrict outsiders from knowing about the relationship under the agreement and its results and not to forget the penalty for the party that fails in performing its obligations.
How to draft a software development proposal?
Each requirement should be clearly described to ensure proper implementation of each process and a smooth transition from one phase to another. A business requirement document is used throughout the entire circle of the project to ensure that the product meets the detailed specifications and that the project gains value and achieves the desired result. A software development agreement has the following contents:
- Project scope- It comprises the purpose of the proposal and the ways to achieve it. This is covered under heads like need assessment and scope of the services.
- Project management – This section throws light on the structure and working of the project and action items against each phase of the proposed project. This is covered under heads like project structure and project phases.
- Project deliverables and milestones- It comprises heads like deliverables and project teams, schedule of deliverables (planning, design development, and integration, content and testing, final handover).
- Financials- It tells us how to determine the project cost. This consists of design and development cost, invoicing schedule, payment terms, financial assumptions.
- Conclusion- Under conclusion, the intention of the party is summed up stating further that any other query shall be addressed as when raised.
- About the software house- This section gives an overview of what the company is, where it has its subsidiaries, its portfolio of services, the quality of the people and what makes it unique.
- Attachments- This section contains all the necessary details provided in the form of attachments.
Essential features of a software development agreement
This segment highlights the essential clauses in a software development agreement. It also talks about some common hurdles that arise in the development process, while also providing guidance on how to identify and resolve such issues.
- Definition clause- While it is extremely crucial to include explicit and comprehensive details about the required deliverables in the final agreement, it is even more important to form a lucid and mutual understanding of the expectations of both parties. Therefore, the parties shall define the key deliverables and services in the agreement.
- Scope of work/scope of engagement- The agreement shall cover what the party is agreeing to develop for its client. All obligations are limited to the extent of the scope of work decided by the parties. The agreement should also specifically exclude the work that a party will not be doing without the extra compensation.
- Development specifications and technical requirements- It is crucial to have clear and explicit terms surrounding development specifications and technical requirements for scoping the agreement and mitigating the risk of potential disputes.
- Work changes orders- In all probability, the work involved might change due to an upgrade in technology or change in circumstances during the project. Due to this, the agreement shall have a modification of the work clause that includes a mechanism for change agreed by the parties. It shall also mention the additional work, payment for the work and any amendments to the project’s milestones and timelines because of the changes.
- Timeline- This clause outlines the duration in which a software developing team would complete the required body of work. The parties may decide to break the timeline down into discrete milestones by listing individuals’ deliverables and their respective deadlines. This makes it a two-way street as feedback can be given from the other party on a regular basis it prevents client disappointment and negative consequences such as breach of the agreement.
- Testing and acceptance of the deliverables- The agreement should mention the required testing of the product. Under some methodologies of software development, testing is regarded as a separate phase altogether. If this is the case, then it must be highlighted in the agreement. It shall also outline if the quality assessment process of one party is any different from the other party. Lastly, the agreement shall state the repercussion if any party fails to test as required by the agreement.
- Payment/compensation- Stating the payment amount and payment intervals would ensure that the other party does not keep waiting to receive the payment. It is generally made in two forms:
- Fixed price- It is the price given to the whole project. It is beneficial to the parties as they know upfront how much the project will cost. Clients have the leverage here to insist on how the project looks in the end and how long it takes to develop.
- Time and materials- Here the client pays for time spent and the cost of materials. This model is beneficial in the sense that one gets paid even if their project takes more time than anticipated.
- Third-party software- The software developing company shall not use any third-party IP unless it obtains the written consent of the client. The software developer warrants that the work is free of any IP violation. However, if the use of third-party IP results in any IP infringement, the software developer is liable to indemnify its client of any loss occurring thereby.
- Open-source usage- Many software developing companies refer to open-source libraries while developing software. The clients of such companies may wish to know the full details of materials accessed from such libraries and whether the requirements for access were duly completed or not. This is important for audits or due-diligence purposes.
- Confidentiality- As per the confidentiality clause, except as otherwise required by the applicable law, neither party shall disclose to any unrelated third party any information with respect to the terms and provisions of the agreement during the term of the agreement. Apart from what is required by law, the parties in their agreement should mutually agree on what else would comprise ‘confidential information’. This would ensure there is the clarity with respect to such information and parties would be cautious while carrying out their contractual obligations.
- Intellectual property ownership- Parties shall decide which of them would own the IP arising from the project. When any of the parties intend to own the business IP, it becomes crucial to note the default position under the Copyright Act, 1957. If any change is to affect this default position, then a clear assignment clause shall be inserted by the parties. The receiver shall also ensure that the software developer agrees to take the necessary steps to formalise the relevant assignment of IP to the business.
- License- If the intention of the business is to have ownership rights over the IP after the services of the developer are completed, then it shall be considered whether the developer would then require a license to use the IP once the assignment of ownership rights is done. If it is a phased project, then the developer may require different licenses at different phases of the development process.
- Non-performance- This clause ensures that the development progresses satisfactorily and as per the required timeframes. Liquidated damages shall be considered in case of failure in meeting performance requirements by the party. This must be a genuine pre-estimate of damages enforceable in the court.
- General representations and warranties- It is necessary to document the representations and warranties from the parties relating to performance, run times and response times. These go on to the extent that if the given software includes plug-ins or back-end software, it would be important to list down the developers’ obligations regarding the operation of these and any suitable exclusions from representations and warranties, for example, non-performance due to third-party IT issues.
- Maintenance services- These services are like support services. The focus of the maintenance services clause is to keep everything up to date. The agreement should specify which work is general work and which kind of work would be categorized as additional work. Minor updates may not be chargeable, but significant updates are mostly chargeable.
- Termination- Just like any other agreement, the parties can terminate a software development agreement. This clause outlines the circumstances under which any of the parties reserve the right to end the contract. The questions to cover are:
- How can the termination happen?
- What happens to money owed?
- What is the required amount of written notice?
- Does your client need to stop using your code?
- Do your developers need to hand over the code?
- What provisions of the software development agreement should survive the termination?
None of the parties wishes to end an agreement early, but outlining the procedures, at least the ways in which termination can happen, becomes predictable.
- Jurisdiction, governing law, and dispute resolution- Each agreement is governed by local law or international law if the parties belong to different jurisdictions. This clause states that the agreement shall be construed and enforced and the legality and validity of each term and condition shall be determined in accordance with the internal, local laws of any place, applicable to agreements fully executed and to be performed therein. The procedural law of such jurisdiction shall apply to the extent necessary to affect the arbitration or adjudication of disputes concerning the agreement.
A software development agreement refers to an agreement between two parties where one is a developer and the other one is its client. By way of this agreement, the developer contracts to develop the software application required by the client. Generally, those who write business requirement documents have a thorough understanding of the business processes and the key objectives of the project to ensure proper implementation of different requirements and different elements within the requirement. The most important element of a business requirement document is the scope of the project which includes any restrictions and constraints that need to be considered during the development process. Most businesses require customized software as per their unique needs to ensure that operations can be automated. To hire customized software development services, one needs to be careful of the following mistakes: factoring price over value, having uncertain goals and objectives, loopholes in the agreement, not securing the source code as intellectual property, failure to seek a non-disclosure agreement, overlooking incommunicado and cultural barriers and do-it-yourself software agreements.
Students of Lawsikho courses regularly produce writing assignments and work on practical exercises as a part of their coursework and develop themselves in real-life practical skills.
LawSikho has created a telegram group for exchanging legal knowledge, referrals, and various opportunities. You can click on this link and join: