What’s in a software development agreement?
An important factor to consider before starting a software project, whether software as a service (SaaS), or any other software, is the mechanics of putting together a software development agreement. The purpose of the agreement is to ensure that the developer and the client have a shared understanding of the project. The agreement can go a long way toward ensuring that the project is a success from the standpoint of both the developer and the client. Developers and clients should bear in mind that this agreement will govern their relationship in terms of the following: the scope of the work; pricing; the payment plan; payment milestones (e.g. , coding, testing, etc.); deliverables; deadlines; warranty issues; ownership of the code; maintenance of the software; sources of support; and termination issues. A good software development agreement will address all these issues, thus eliminating or at least limiting disputes, which can cost the parties valuable time and money.

Key Clauses in a Software Development Agreement
One of the key sections in any software development agreement is the scope of work. The scope of work sets out the specific tasks to be carried out by the developer, the specific deliverables to be delivered and milestones to be completed. There are many factors that can affect the duration of the project or the costs to deliver it. The question therefore is how does this affect the scope of work and the terms contained therein.
The second most critical clause is that of ownership. Generally speaking, there are two types of ownership of software: joint and common ownership. Joint ownership means that both the client and the developer own the software resulting from the project, while common ownership means that only one party owns it. The default position is that, absent any express provision to the contrary, the software created belongs to the developer. Many clients mistakenly believe that they are the author of software created under a contract for services; however, the courts have consistently held that this is not the case.
It’s very important to put a structure of ownership in place that protects the client. Typically, the clauses to achieve this are an outright assignment of work done, looming assignment and cross assignment. An outright assignment means that the client is the legal owner and the developer sells all its rights, title and interest in the software upon completion. A looming assignment means that the client is the owner and upon completion, both parties must do what is necessary to assign ownership. A cross assignment simply means that the client and the developer must enter into a cross assignment of ownership. Finally, if the software is to be jointly owned, then there should be a license agreement to each of the parties relating to the software.
Other essential clauses deal with intellectual property rights, confidentiality, non-disclosure agreements, the protection of proprietary information and the protection of confidential information. These sections are all important as they protect the client from the disruption of trade, and also ensure that the developer does not use pre-existing intellectual property belonging to the client without the client’s consent.
The Different Forms of a Software Development Agreement
All software development agreements have almost always one of four formats, although some agreements are hybrids or variations of the four types of formats. The agreements with a fixed price payment schedule are usually tailored around well-defined projects with clearly defined inputs from the companies or parties involved in the agreement and deliverables that are identified so the independent software developer can give firm estimates of costs. These types of agreements are usually intended for projects that are short to medium term because the inputs and deliverables are limited in scope, usually involved in being a project, and limited in time. The independent software developer builds out the project without client direct engineering oversight with high level goals from the client.
Another type of software development agreement is a time and materials agreement where an hourly or daily rate is used as the basis of payment to the developer. The time and materials agreement gives the developer more flexibility with regards to the inputs and the deliverables are usually not as well defined and may change over development. The developer will perform work depending on the time and materials available which will determine the cost to the client. The benefits of a time and materials agreement over a fixed price agreement is that innovations and improvements can make their way during the process to improve the project, new ideas can be implemented as the development proceeds, and the developer will be able to focus on the most important parts of the project at any given time instead of quality being sacrificed because of a firm budget with fixed price. If the project is not well-defined, then the time and materials format can be a great option for companies looking to outsource development and have cost and quality not suffer.
The third type of software development agreement is a partial employment model where the developer will provide their own staff to work on site at the company’s location or remotely. The development company can offer these services because they commodity developer and engineering man power when the company will be able to provide the operations and other support required for the project. The model can be scale quickly and if the company needs to change course in the project, it can do so quickly at little cost because there are no frills or fixed pricing weekends and overtime costs charged by the developer. There is also no full-time salary paid, just an hourly or daily rate that is not charged when no work is performed. The model allows a company that does not know a lot about technology to get more guidance from the developer and give much more insight to how the project should be organized and developed. The model allows the company to build out its own team with best practices from experienced engineering developers working for the client.
The last type of software development agreement is the dedicated team model which is a hybrid of the time and material model and partial employment model. The dedicated team model finds its roots in the earlier outsourcing models of IT outsourcing and outsourced software development where the developer would build a team of highly trained staff for the project long term. With this model, the company will usually work with the developer to select the members of the team or engineers and managers to be part of the team. The company will also work with the developer to create a critical path plan for the development so the requirements of the project can be met with the staff selected. The dedicated team is usually set to work for long terms, several years, so the relationship between the client and the developer is of critical importance. The benefits with this model are the cost savings are significant, good quality control can be ensured. The management of the team can transfer over time to members of the project that the client identifies as meeting its needs. With this model, the client is not buying 100% of the developer’s staff rather paying only for the DEDICATED staff on the project that the client manages.
The structure of software development agreements can be varied depending on the methods and scope and deliverables of the project or products being developed. The four structures of fixed price, time and materials, partial employment and dedicated team can meet a company’s needs from a project basis to a long term joint development agreement.
How to Draft a Software Development Agreement
The software development agreement is often a complex document that may require significant negotiation, but it may result in less conflict, frustration, and potentially significant liability if it is well-tailored to the project. When constructing an agreement for a custom software development project, consider the specific requirements for the particular project and include any unique concerns and condition. Some issues that may affect the project include the qualifications of the team members, the level at which the project is intended to function, and any particular needs specific to the industry . Moreover, although the parties may have initially been in agreement concerning the necessary aspects of the project, the terms of a software development agreement should allow for the possibility that one or both parties may want to make changes to the details of the project. To the extent that a standard agreement does not address changes that may be made unilaterally by one of the parties, it should include consideration of starting negotiations for new terms should a party request a significant change.
Potential Legal Risks when Drafting a Software Development Agreement
Though well-drafted, high-quality software development agreements can help mitigate legal risk, if not eliminate it, the truth is that software development projects can lead to a variety legal issues, even when the development agreement is a sophisticated and carefully-crafted document. In fact, depending on how the agreement is written, a developer may create obligations or expose the client to legal risk that could later stifle creativity or innovation, or limit the freedom of the client to incorporate new technologies, either developed in-house or by a third party.
Intellectual Property – The most important thing to remember with intellectual property is that you want to make sure you are very clear on the ownership of all the intellectual property created for the project, but you also want to leave room for future improvements and innovations needed by the client. If the agreement is too constricting, it could become in effect a cage around the ownership of intellectual property, making it difficult or impossible for the client to keep the software modern and up-to-date. There are various ways to avoid these problems with creative contract drafting, but do not leave any ambiguity.
More commonly, legal risk can arise in a software development agreement when the scope of the project is not sufficiently defined, and the two sides of the deal have different expectations. Although some security measures should be automated (like data backups), there are many other aspects of security that should not be left to software. There is no reason why the development and deployment of a product to the public should not include a formal risk analysis. If the risks in a security analysis are properly dealt with, the security risks should be low or manageable.
One huge risk that can come into play with undetermined scopes of work is a cost overrun or an inability to deliver on time. The latter can be very serious, as it gives rise to breach of contract liability. If a software developer has not specifically promised that a product will be delivered on a specific date, its failure to deliver on time would only be a breach if the developer was negligent or intentionally failed to deliver on time. In the extreme, the failure to deliver on time could also be a criminal act (such as theft).
Software development contracts should provide a framework for resolving disputes before they escalate. One way to employ a framework is to employ and dispute resolution clause, which provides for informal mediation, then formal mediation, and, finally, arbitration if the previous attempts to resolve the matter have failed. An alternative to a standard arbitration clause is a clause calling for non-binding mediation, followed by a mini-trial or JAMS-style settlement conference. The key to any dispute resolution clause is to make potential co-development partners aware of all the steps that will be taken, and to document the steps in order to create a referable record of the events leading to the eventual litigation.
Conclusion: Success in Software Development Agreements
In this article, we have walked through the various types of software development agreements, and discussed some of the essential clauses to include in these agreements to protect both developers and buyers, and to ensure that the project proceeds smoothly and successfully. As you can see, whether you are going to be developing software or if you are buying a software solution, it is imperative that you have a well thought out and comprehensive software development agreement in place before you begin to take your first steps. If you will be carrying out software development , you should work closely with your legal counsel to craft an agreement that protects your rights, whilst also providing sufficient clarity as to your project so as to avoid any future disputes and costly litigation. If you are hiring a party to develop a software solution for you, you should strongly consider seeking legal advice when drafting a software development agreement, as the terms of the contract could dramatically impact your company’s liability and its long-term success.