A software development agreement is a contract for the development, licensing and maintenance of software. Broadly speaking, there are two types of software development agreement, “waterfall” and “agile” but of course, individual agreements can vary widely depending on factors such as:
- A customer’s particular business requirements;
- the type of software being developed; and
- what the software will be used for.
In this article, we’ll take a closer look at waterfall and agile software development agreements, whether there is a benefit of using one over the other, along with the broader legal points for businesses to consider when negotiating and entering into a software development agreement.
Waterfall agreements adopt a more traditional approach to software development. In short, where software is developed using waterfall methodology, development tends to take place in linear and distinct stages, with one stage generally completing before the next one can begin. The advantage to customers and developers of adopting this approach, is that both parties can agree at an early stage of the overall process, precisely what each development phase will require and measure progress accordingly. The developer can then proceed to develop the software in accordance with the agreed development phases and without the customer’s strict involvement, except for where the customer is required to review and approve each stage of the development. In turn, this can result in an overall better software design, as each phase will have been substantially if not fully completed, reducing the need for additional pieces of coding to be written as the project goes on.
By comparison, agile software development is a more modern and pragmatic approach that factors in the need for flexibility in the delivery of the software. Adopting an agile approach involves the delivery of individual software components, rather than the entire application as well as a collaborative effort of cross-functional teams and their customers. Through adaptive planning, early delivery and continual improvement, agile development promotes a more rapid and flexible response to software development.
A distinct advantage of implementing an agile based development methodology, is that the customer is regularly updated and has more opportunity to see how the software development is progressing. Through the customer’s involvement on a more collaborative as opposed to contractual basis, they are also able to gain a stronger sense of ownership which in turn, tends to lead to a better customer experience and reduce the likelihood of customer dissatisfaction.
Waterfall or Agile, which should you use?
Whilst there is no right or wrong answer as to which development methodology overall is best to follow, deciding whether to adopt a waterfall or agile approach will very much depend on the nature of the individual customer’s requirements, along with what and how the software will need to be developed in order to satisfy those requirements. That said, some of the key areas the parties should closely consider and discuss at the outset before deciding on what approach to take, will include the following: -
- Will the project require flexibility or certainty around what is being delivered? – As mentioned above, an agile process will tend to favour a more flexible approach whereas a waterfall approach will be better suited for those that require certainty as to what will be delivered at each phase of the project.
- Are the customer’s requirements clear and easy to define or somewhat uncertain and fluid? – Where the customer’s requirements are fluid, more collaboration is likely be required whereas if the requirements are clear at the outset, the parties are likely to be better off following a waterfall process, with the developer reporting into the customer at key stages.
- What are the timeframes for delivery of elements of a project and the project as a whole? - Generally speaking agile methodology is able to cater for the more rapid delivery of elements of a project within a matter of weeks, whereas waterfall methodology is more commonly associated with longer project timeframes.
- What payment terms should be used? – If payment is due upon the achievement of a key milestone or at the end of the project after acceptance testing has been carried out, the parties will likely adopt a waterfall methodology. Where payment is due on a time and materials type basis, this tends to favour adopting agile methodology.
Key practical and legal points to consider in a software development agreement
The development and modification of software can be a cause of disputes between developers and customers, so it is important when entering into a software development agreement to ensure that certain key practical and legal points are addressed.
For instance, it would be sensible for the parties to determine at the outset, what the position will be in terms of the ownership of intellectual property rights to the software. In addition to this, the parties should consider what licences are necessary for the project to proceed. From the developer’s perspective, they should seek to establish what is needed to provide the development services, particularly in terms of licences from the customer, third-party licences and licencing of its own software. As the software will need to be copied and reproduced, the developer should also carefully consider whether to grant a licence to the customer to use the software, or assign the intellectual property in the software over. Likewise, the customer needs to understand at the outset whether they are commissioning the developer to create software that will result in the customer owning some or all of the intellectual property in it, or whether the expectation is for them to be granted a licence to use the software created by the developer.
In addition to setting out who owns what intellectual property rights in the software, it is sensible for the software development agreement to include an implementation plan setting out the timetable for delivery of the project. This will usually be provided by the developer but at the outset, the customer should carefully scrutinise its viability as an achievable project and in the context of its overall business strategy.
A software development agreement should also factor in what is required from each party in order to ensure the timely delivery of the project and what happens in the event of delay. From the developer’s perspective, it will be important to ensure the customer co-operates and grants access to its systems, whereas the customer will, for instance, want to impose obligations on the developer around delivery of the development services, along with provisions dealing with delay in performance.
In terms of payment provisions, customers will naturally want as much predictability in the development cost of the software as possible whereas a developer might only wish give a fixed-price for simple software, or where very little customisation of an existing program is required. In the absence of a fixed pricing mechanism, a system of charging should be negotiated which provides some sharing of the risk of cost increases between the parties.