Skip to main content

Although there are many aspects to consider when drafting a software development agreement, I have prepared the following ‘Top 5 Tips‘ that software development companies must be aware of before negotiating or signing such agreements.

Scope of Works

Defining the scope of work in the schedule of the software development agreement is critical.  Without a detailed scope of work, there will be a significant risk of project creep.

To avoid this, use precise language to describe what the software will and will not include, including features, functionalities, and deliverables.  Additionally, ensure enough flexibility in the delivery timeline to allow for third-party integration, software testing and bug fixes.

Further, establishing a change control process in the contract will help address potential scope changes, associated costs, and timelines.

Methodology

In circumstances where it is not practical to use a fixed scope of work, for example, software developers use Lean,  Scrum, Extreme Programming or Kanban methodology, the contract must align with the development methodology.

Suppose there is a disparity between the software development agreement and the software development methodology.  In that case, there will be a heightened risk that the software developers will breach the contract.

That is why ensuring the contract allows for the software development methodology used, whether Kanban, Extreme Programming, Scrum, etc is critical.

Intellectual Property

Software developers must pay close attention to the intellectual property they deliver under the contract, including source code, graphics, and help file documents (“Developed IP“).  Developers must also identify third-party IP being used in the project, such as source code libraries, open source code, databases, etc. (“Third-Party IP“).

Developed IP and third-party IP must be distinguished to avoid licensing conflicts.  For example, suppose software development companies license all IP under the software development agreement to their client. In that case, the developers may breach a warranty that they have the ‘right to license all IP”.  Such circumstances may also be problematic with indemnities under the development contract.

Instead, software developers should license the Developed IP to their client.  Further, any warranties and indemnities should be provided in relation to Developed IP rather than ‘all IP’ under the contract.

Finally, software developers must understand whether they are licensing or assigning the Developed IP.  I recommend against assigning the source code to the clients of software developers for the following reasons:

  1. There is no need to it’s industry standard;
  2. The assignment may not allow the software developers to use part of that source code in another project;
  3. Licensing can avoid copyright claims by the client down the track.

Naturally, some clients may push for the ownership of source code, which requires assignment.  If the software developers do not have a problem with that, they should understand the risk, and their pricing should allow for the client’s total ownership of the source code.

Indemnification

While software developers usually accept their obligation to indemnify their clients for breach of third-party IP rights, indemnity clauses such as data loss & security, project delays, integration faults, and scheduled maintenance are often the subject of negotiation.

Both parties to the contract must thoroughly review and negotiate indemnity clauses to ensure that the software development agreement provides fair and adequate protection.  These indemnities’ specific terms and conditions can vary widely based on the nature of the project, the parties involved, and the potential risks associated with the software development process.

Restraints

It is difficult for employers who want to restrain their employees from working for their clients or competitors, as being restrained from working on a particular type of software or within a specific industry is likely considered against public policy. 

However, restraints can prevent clients from poaching coveted coders from the developer’s team. 

Therefore, it is essential to put restraints on software development contracts so the hardworking developers don’t get seduced by offers of a cushy job in the client’s head office.  It makes for an awkward situation that you must avoid.

You should also be able to limit client contact with the developers where possible.  All communications must go through the project lead – that’s a rule.