Software development agreement: what to consider?

Which type of contract should you use for the software development deal? We will talk about three typical types of contract with software developers:

  1. Agile contract with time/material principle, when you pay for the developed user stories (some progress indicators which you always agree);
  2. Waterfall (fixed price) contract is a contract where you state the agreed work statement as an internal part of the agreement and you expect that the result shall meet all requirements that are stated herein;
  3. Out staff (dedicated team) contract is a contract when you pay for the time of some specific specialist and the result here does not take into account, unless, the level of work of the respective specialist is not ok, of course.

Or you may even combine these three types of agreements in Master Service Agreement. So, which one is best for you?

Waterfall software development contract with milestones

When you have a strict and complex vision of the future software, you can sign the development contract based on waterfall principle. What does it mean? 

If you are a developer, the waterfall agreement gives you the exact instructions of what and to what deadline you should do. You just have the technical order and create software according to it. Usually, parties determine the deliverables to be produced in a Statement of Work (SoW) which defines every aspect of your software development agreement. 

So, what are the main features that are often used in this type of software development agreements?

  1. The subject of the contract. What do we develop?

Usually, it includes design, development, delivery, testing, maintenance and support of all deliverables set forth in agreed Statement of Work. The most convenient way to write down the subject matter of the contract is to include the following provision:

“Services include but not limited to development, testing of software and adaptation of software packages, according to the tasks of the customer, as well as software technical documentation development on terms and conditions stipulated by this Agreement and Statement of Work.”

Obligations of the parties. Here it is stated, what materials are provided by the customer and when. The obligations of the developer are formed in the way, which makes the developer liable for development of the software in straight accordance to the work statement.

The following obligations may rest with Customer:

  1. to provide the Contractor with all the information and access to all the resources required for the provision of the Services prior to the commencement of Services;
  2. to accept the Services that have been provided duly and in the agreed time.

The following obligations may rest with Contractor:

a) to provide the Services specified herein in a due manner and in the agreed time;

b) to pay all taxes, other fees on payments made to the Contractor under this Agreement in the amount, according to the procedures and under conditions prescribed by the effective legislation.

  1. Warrants of the Parties. Here, both developer and customer guarantees, that they have best intentions and are eligible to enter the contract. For example, you might include the following provisions:
    1. it has the necessary corporate power to enter into this Agreement and to carry out its obligations hereunder;
    2. the execution, delivery and performance of this Agreement have been duly authorized by all necessary corporate action; and
    3. no consent of any person or entity not a party to this Agreement is required or necessary for it to carry out its obligations under this Agreement.
  1. Intellectual property. Usually, the Customer takes it all. Parties state, that the legal relationship under the contract shall be deemed as the work made for hire and all the copyright goes straight to the Customer. Usually, the following wording is included into the waterfall software development agreement:

“Parties agree that the Customer is the rightful and exclusive owner of all Deliverables and all other works of authorship made by the Contractor in performance of this Agreement, including all source code of all the foregoing, whether or not eligible for patent, copyright, trademark, trade secret or other legal protection, and any and all related patents, patent applications, trademarks, copyrights, trade secrets, and other proprietary rights.”

  1. Liability and confidentiality. Parties used to include different provisions on liability:
    1.  towards breach of intellectual property rights,  
    2. breach of obligations with the respect to the termination of agreement,
    3. breach of contractor’s indemnification obligations etc. 

However, the most important part relates to confidentiality issue. The purpose of confidentiality provisions is to that limit the possibility of telling other parties about the relationship under contract and its results and, of course, penalties for the party, who fails own obligations. 

“Each Party acknowledges and agrees that, in the event of a breach or threatened breach of obligations with respect to the Confidential Information, the breaching party shall pay the other Party a fine of [number in words] ([number]) EUR/USD for each case of such disclosure or violation and be liable for the loss and damage suffered by the non-breaching Party as a result of such breach.”

  1. Certificate of completion. 

This is very important document for Contractor. Quite often parties agree that Contractor will provide the Customer with the Certificate of Completion by no later than the applicable date specified in a Statement of Work (if any) or other date mutually agreed upon by Parties after deliverables have been uploaded to a storage location. When Customer accepts all Deliverables indicated in the Statement of Work, the Customer shall sign the Certificate of Completion and provide a copy of this document with the Contractor. The Certificate of Completion may include the following clauses:

  1. Description of deliverables;
  2. Storage of location;
  3. Contractor’s remuneration;
  4. Limitation;
  5. Entirety etc. 

Of course, these are just draft statements and possible options, that may be considered before entering into a waterfall contract.

Agile contracts. What’s it all about?

As so many IT companies use agile methodology within developing the product for some client, the principles and ideas of it should be defined in the contract.

Here we use the system of time / material, many different words like sprints, backlog, user story and so on.

When we work on waterfall basis and make waterfall contracts, we state result of the development in the very beginning. Thus, just after signing the contract and the work statement, the Customer and the Contractor know exact results. In agile contracts, it’s clearly not the same.

Here we will concentrate on its main specifications. For sure, you may include in Agile contract some of the provisions of the Waterfall agreement stated above. 

  • Generality. In the beginning of the development process, the customer and product owner have backlog – the general ideas and plan, of how the result should look like. Then, the project is divided on sprints with user stories.
  • Payment. Depending on complexity and time for specific user story, it is evaluated and the sums of all user stories from the price of the specific sprint. You can think of sprints as some stages with the price of work, which is formed on the basis of the user stories within the specific period. 

It is good to include provision which allows to change price per hour spent. You may sign an additional agreement to the general agreement or just add an annex with prices stipulated to avoid making permanent amendments.  

  • Warranty. Of course, in the agile contract, the developer shall warrant, that software, that is developed is free from the claims of the third parties. Also parties shall state, that this agreement is an agreement of a work made for hire, thus, the Customer will get all possible copyright.

In this type of relationship, the developer will not be able to guarantee what will be the exact result from the very beginning, but within the working process, each user story shall be accepted, so Parties will understand the progress and the way they are moving.

More and more software development contracts are made on agile basis and it’s very important to state fair terms there.

Dedicated team (outstaff) agreement

The principle of out staff is that under the project of the customer is allocated a whole team of developers who work solely on the product of the customer. The main difference from Agile is that the customer is personally responsible not only for each developer’s workload, but also for their downtime.

The main part of this agreement includes provisions regarding specifics of business relationship with developers. Usually, the following wordings are part of the contract:

  • Continuity of Developers. 

“Provider will use its best efforts to ensure the continuity of Developers assigned to perform the Services hereunder from Monday to Friday from __:__ to __:__ EET inclusively.”

  • Tasks.

“The Customer is responsible for the setting of the tasks to the Developers as well as for the management of workflow of the Developers assigned to perform the Services.”

  •  Assignment of Developers.

“If any Developers performing Services hereunder is, in Party’s reasonable discretion, determined to be unacceptable to Party for any reason, Provider agrees to expeditiously remove such individual from the project and assign an acceptable substitute person, in a reasonably expeditious manner, to fulfill the obligations of the individual so removed.”

There are two main advantages of such model:

  • Control. Customer receives complete management control of the team, that is, the customer sets priorities for current tasks and controls the process of their execution. Accordingly, all risks arising from the work are borne solely by the customer, which should be noted in the contract. The contractor in this case performs customer support and guarantees the professional level of each team member.
  • Flexibility. A dedicated Team contract provides high flexibility for quick changes of the scope of work in your business process. Also, it allows making amendments to said fixed price in case of changes are requested without additional time.

Master service agreement

In case you do not really know what type of contract suits you best, you can easily draft a Master Service Agreement with Agile, Fixed price and Outstaff annexes so that you can sign up the right annex with contractor in the right situation.

You already have an imagination what agile, waterfall and dedicated team business relationships cover. But what does the Master Service Agreement govern?

Master Service Agreement (or MSA) is a contract reached between parties with open-ended relationships which offers a flexible system to choose the business process in the future.  Its features usually are specified in annexes to the Master Service Agreement.

In fact, MSA governs only general terms of the agreement. General clauses include the following terms:

  1. Term and Termination;
  2. Transfer and Acceptance of the Services;
  3. Intellectual Property Rights;
  4. Confidentiality;
  5. Warranties;
  6. Non-solicitation;
  7. Liability;
  8. Dispute Resolution etc.

If you still do not know the specifics of your future business processes, we recommend you to choose the Master Service Agreement in order to receive the full flexibility in your contractual relationship. 

Your contract on software development gives you the power

You can choose any type of contract to regulate the relationship with the other party. One thing to remember – your own contract gives you confidence in the terms of relationship and control over the legal part of the process.


updated by Vitaliia Stelmashchuk

    Your question to IT lawyers