What Is A Software Development Agreement?
A software development agreement is a contract where one party (the Developer) agrees to develop a software application for another party (the Client). Whilst design and development processes can vary, depending on the complexity of your project and the team you employ, there are a number of key questions that are universally valid and should be considered when agreeing the contract.
View a written development agreement as a roadmap. If properly drafted, it will prevent disputes. If problems arise, it will suggest ways to solve them. If the parties end up in dispute, it will establish their legal duties to each other. To draft a software development contract, you just need common sense and an awareness of the possible nuances that could come up. Here, we’ve summarised the most important points of a software development agreement.
For a customer, there’s nothing worse than paying a developer to create custom software and then to hear nothing more about it until the product is delivered. Without regular communication, there’s a good chance the software you end up with might not be the software you had in mind. The best way to avoid this is to agree regular milestones, which breaks down the project into discrete deliverables. At the end of each milestone, the developer should have reached an agreed stage of the work. Assuming this is done, the work is signed off and a specified amount of funding is released to the developer to progress to the next milestone. This makes it easier for both sides to monitor the progress of the project and resolve problems early on – or even agree to terminate the project.
Working to milestones gives the developer an opportunity to deal with the customer’s changing needs before commencing with the next deliverable.
The software design and development process can vary considerably from project to project, depending on the nature and complexity of the software. However, there are many common provisions that should be considered when preparing the agreement.
- How will the specification for the software be agreed or elaborated?
- How will changes to the software specification affect charges and other contract terms?
- What will be the client’s involvement in the design and development process?
- What is the timetable for the development of the software?
Testing new software is fundamental to the work of a developer and forms part of modern development techniques. However, details of any testing requirement the software must pass to be accepted by the client should be included in the agreement. In particular, will the testing form part of a formal software acceptance procedure?
Intellectual property ownership determines who owns copyright in the software source code and any other materials provided to the client. By its very nature software often needs to be copied, which means the developer either grants a license to the customer, or assigns the intellectual rights over to the customer. Therefore, the software development agreement must clearly stipulate the intellectual property rights and licensing. In particular:
- Who owns the intellectual property rights for the software that is to be developed?
- Are any different licences required for different software modules or elements?
- Will any part of the software be open source? If so, which open source licences will be used?
- Are any other third-party licences required?
- If licensing, what charging model will be used?
- Will anything be specifically included / excluded from the licence?
- Will the client have any rights to modify the software or the software source code?
Clarify in the development agreement the extent of the developer’s obligations for installing your new software, or integrating the software with existing systems. In addition, will the developer’s services in this area be subject to separate charges?
Warranties and indemnities are used to allocate risk in the case of things going wrong, for example to compensate the client for any loss or damage which results from the software in defined circumstances. For example:
- Guarantees that the software will not infringe any third party intellectual property.
- Indemnities for the developer to conduct any IP dispute and any settlement with the third party.
- Specific warranties regarding the performance, stability and security of the software.
A software development agreement may include some support provisions, although it is more usual for support services beyond the installation and testing phase to be subject to a separate fee, or a separate quotation if purchased as an Annual Support Agreement.
If you plan to include support provisions in your agreement, then clarify:
- How the support will be provided (email, telephone, or in person).
- The type of problems that will be covered by the support services.
- Response times, particularly in relation to an Annual Support Agreement.
- Any limits to support services, or services that may incur additional charges.
Software changes very rapidly as new technology emerges. This means if the software you commissioned must integrate with other programs, it may need to be updated or upgraded to continue to use it. To get around this problem, the software development agreement should include clarity on:
- What upgrades are likely to be necessary to deal with technological changes?
- If additional functionality is needed by the client, will this be addressed through a maintenance contract or existing support services obligations?
- Who will apply any updates and upgrades?
Note also that most developers will reserve the right to discontinue the support and maintenance for any prior version of the software if a superseding version has been made available to the client.
In addition to delivering core services, the software development agreement may also include provision for training and consultancy; however, this will need to be explicitly itemised in the specification along with any other ancillary services that are likely to be required. Be aware, however, that the developer will usually need to be remunerated for these additional services.
Your custom software may become critical to the success of your business, which is why it’s important to know who will own it at the end of the project. Having ownership of the source code means your business can keep going no matter what happens to the developer in the future.
Furthermore, all code should be placed into a central source code control system, which is backed up off-site by the developer, otherwise there is always a risk that it might be lost.
Either party should be entitled to terminate the software development agreement within agreed clauses – for example for breach of any of the terms of the agreement. The clauses should be drafted carefully, including what happens following termination to the materials and information exchanged with the other party, as well as any charges or refunds that would be expected.
Whilst the aim of a software development agreement is to avoid disputes, if a dispute does arise, it can be very useful to have some procedures in place to ensure its handled effectively, as well as what happens if the dispute remains unresolved.
Ultimately, if the dispute remains unresolved, the dispute can be referred to the High Court of Justice in England for resolution.
Since its formation in 1997, Blueberry has been fortunate enough to work on many interesting projects, with clients both large and small. If you’d like more information on how we work with our clients, the following links on our website should be useful.