Agile Software Development Contracts: Key Considerations
Agile software procurement methodology (agile methodology) is a method of software development and procurement for bespoke software (custom-made software that you can adjust, modify, and adapt to fit the demands and requirements of any business). In the development of a bespoke software, understanding and defining the parameters of development, the methodology used plays a crucial role. It is necessary for IT project leaders to understand the legal and technical intricacies involved in agile software procurement contracts. To understand the minute details of agile software procurement contracts let’s understand the agile methodology.
Before we begin, this article has been co-authored with Adv. Bhagyashree Swami.
A Brief Introduction of Agile Methodology
Agile methodology (“agile”) was first introduced in the 1990s to reduce enormous time lag involved in software development. In 2000, 17 industry leaders finalized the Agile Manifesto. The manifesto had twelve principles- reflecting different sets of techniques and practices, rather than a single methodology. It promotes valuing people over the processes or tools- because ultimately it’s the people who respond to business needs and drive the software development process accordingly. So, there should be effective communication with stakeholders to understand the software specifications required to avoid unnecessary confusion and ultimately time.
For example, earlier, documenting the software product used to consume a lot of time. To save time, agile streamlines documentation in a form. This allows the development team to start their work without any time lag. Further, the Agile Manifesto promotes customer engagement throughout the development process. The customer can describe his requirements during the development- at some defined intervals- using demos. The involvement of customers at the time of development allows the developers to respond to changes without extra costs. It saves the time of developers as they learn about the customer requirements while shaping the software.
Agile software development works in iterations, to simplify it further. It breaks long-term projects into multiple easily manageable tasks. Agile reduces the cost of development as compared to its competitors like Waterfall. The iterative cycles have specified steps which include requirements and user input, planning, development sprint, user review, retrospect, and finish. Then it starts again with fresh requirements of the user for another feature. In each sprint, developers work on a set of features. In the planning phase, all stakeholders including the client, designer, coder, and management staff sit together to decide on new features. As per the requirements of the consumer, the sprint starts and finishes.
Agile Software Procurement Contracts
However, there’s one small problem with this model of development. Because of how agile is modelled, and how it can be developed in iterations, the goal could be shifted very often- costing money and time, with no guaranteed delivery. But, lawyers can fix this small problem.
For smooth processing and timely delivery of the software, it is crucial to put the terms and conditions under an agreement. A well-drafted contract will bind both the parties to perform their duties in a timely manner and avoid the scope of any dispute and unnecessary delay. In this article, we will assess what are the key considerations for tailoring agile software procurement contracts.
Scope of the Services
This part of the agreement details the overall service relationship between the customer and the service provider (developer). In this part, the nature of services, way of development, and delivery are decided. The scope of the services should cover the subtasks and number of cycles of the development. This can also work as a flowchart for the development process. This helps the customer to avoid unnecessary delays against the promised deadlines. It also safeguards the interests of the developers by binding customers in limits against the modifications allowed in agile methodology. It means that the consumer should choose the basic features before starting the development but the minute details can be agreed upon later.
Process
There are multiple agile methodologies, as mentioned before. The parties should ideally decide the responsibility of the Agile team and the project cycles, including the duration of each sprint, how the testing process for each iteration of software would pan out, and the method of returning the incomplete features to the product backlog. This all lays down the expectations of the clients and further guides them as to the process of development.
Term
A specified term is very necessary to mention in the agreement. A term can be defined by either providing a specific date or on completion of some event. There should be a clear deadline for the delivery of the software, and its iterations, to ensure the timely delivery of the software. Also, parties should define what action will they take, if the desired outcome is not reached in the specified time frame. They may agree to extend the timeline according to the common consensus. In case of endless delay in development, there should be a clause to terminate the contract after serving notice.
Termination
The agreement should contain a well-defined process for the termination or exit from the contract. The termination can be desired by the parties due to several reasons. Such as non-requirement of the product, unsatisfactory development, material breach, etc. While drafting the contract, all these things should be considered. The rights of both parties should be taken into consideration while drafting the clause of termination.
Ceasing the development and settling the accounts take time and therefore, a requirement of notice some considerable time before the termination is necessary.
Assignment of Intellectual property
This clause is one of the most crucial parts of agile software procurement contracts. It decides who will hold the proprietary and intellectual property rights in the developed software. Whether whole or some part of the software will be owned by the developer, customer, or third party? The answer to this question relies on how the software was developed. If the software was developed from scratch in accordance with consumer requirements (bespoke), property rights should be held by the customer. The developer should not disclose or use the code for any third party. If the developer has used some open-source-code, then the IP rights will remain with the developer of the open-source-code. There is a necessary requirement under copyright/ open source licensing to give credits for open-source-code to its developer (third-party).
If the developer is providing similar services to multiple consumers and the software is not targeted for one consumer, then the developer should keep the IP rights for such code. So that the code can be used in the future without any dispute. In addition to this, the consumer should ensure that the developer does not use the code of a third party without permission. It can give rise to legal issues and can adversely impact the use of the software by the consumer. To avoid such a situation, the liability for the use of any third-party-code without prior permission should be of the developer.
Price and payment terms
It is another critical issue of agile software procurement contracts. Agile methodology provides the customer opportunity to tell the specifications of the features during the development. Consumers often exploit this opportunity. To make it pragmatic for both the parties, parties should decide the price involved in the development process in a transparent manner. Factors to consider while determining the price are :
- the number of hours spent by the development team,
- cost of third party software (such as cloud platform, hosting, third-party code, etc.),
- scope of improvisation/modification of the features, and
- in case of further modifications, whether extra charges will incur or not.
In addition to this, the manner of payment should be clearly defined. As we discussed above, agile works in iterative sprints. Therefore, it is a good practice to pay in accordance with the progress of the development. This means the whole consideration need not be paid before starting software development. Rather, some amount can be paid before starting and the remaining amount can be paid after some sprints in installments. This will help maintain the trust between both parties. Also, it will reduce the risk of non-payment for the developer. And Consumers can ensure that the developer is developing the software in accordance with its requirements, without staking all the amount at once.
Acceptance Testing of Software
A predefined process or parameters for testing, inspecting, and evaluating the software before acceptance are useful. Transparent predefined parameters will help the consumer and developer to stick to the agreed standards. In software procurement, disputes on the standard or the quality of the software are very common. At times, the developer does not provide what it may have promised. In other situations, the consumer demands more for the price paid and the features agreed for the decided price. In absence of such a clause, the customer may feel frustrated as he will need to wait for a long time to use the software for business purposes. This may hamper the plans of implementation. To avoid any such disagreements at the later stage of development, a predefined process can be of great use/convenience.
Acceptable Use
The developer may insert a clause defining the use of the software. If the developer holds IP rights of the developed software, it may direct the consumer to strictly use the software for the purposes agreed and not to reverse engineer or modify the code.
Developer Warranties
The developer should warrant the client that the developer has the skills and experience to provide the promised services. While developing the software, the developer will not copy the code/features/ intellectual property of any third party without lawful authorization. The warranty clause should make sure that the developed software does not violate any law in any manner. In addition, the developer should ensure that in case of any malfunctioning of the software at the time of delivery, it will improve and provide the software in good condition in accordance with the features and quality agreed by the consumer.
Indemnity
The developer should agree to indemnify in the agreement that it will bear all the legal costs arising out of the developer’s infringement of the intellectual rights of any third party or any other legal action.
Confidential Information
Any confidential information relating to the businesses of the parties shall not be disclosed to any third party except to the extent it is necessary for the performance of the contract. This clause does not include any information that is available in the public domain. This obligation of confidentiality can be applicable for definite as well as indefinite time
Maintenance and support
As we know that the state-of-the-art of information and communication technology, information security and the methods to hack the systems are always evolving. Therefore, certain software depending upon its user base and functionality would need maintenance. Either an in-house team or the developing organization can maintain and support the software. If the developer maintains the software, a maintenance clause can be inserted in the procurement agreement as well as a separate agreement can be drafted.
Applicable law and jurisdiction
It is a good practice to define the applicable law and jurisdiction in contracts. Especially, where the consumer and the developer are residing in two different countries or legal jurisdictions. The parties should agree in advance; in case of any dispute which countries’ law will apply.
Dispute Resolution
Civil proceedings in courts are usually very lengthy and time-consuming. Businesses always look for the processes that can resolve the disputes amicably with less consumption of time. Arbitration is one such alternative dispute resolution method. In arbitration proceedings, arbitrators appointed by the consensus of both parties can resolve the dispute. A clause directing both the parties to opt for arbitration as the first recourse for dispute will keep things simple for them.
This list of clauses for agile software procurement contracts are not exhaustive and we have focused at must have clauses for such a contract. We hope that we made your decision to undertake agile easier.
Did you like this article, please let us know in the comments below! Also, would you be interested in reading about Cheque Truncation System of India?
Do subscribe to our Telegram channel for more resources and discussions on tech-law. To receive weekly updates, and a massive monthly roundup, don’t forget to subscribe to our Newsletter.
You can also follow us on Instagram, Facebook, LinkedIn, and Twitter for frequent updates and news flashes about #technologylaw.