Agile development methodologies throw a "spanner in the works" in most traditional software development contracts. So much so that if your project is agile, and your contract isn't, you may be signing up for a major dispute.
For many years the standard software development contract has been prepared on the basis of a waterfall development methodology. However, many development projects are now delivered under an agile methodology, which is fundamentally different in a number of respects. This article focuses on one of the key differences: the extent to which the customer's requirements are fixed or flexible. The difference in this area alone can call for quite different approaches in the contract.
Waterfall projects: fixed requirements
When preparing contracts for waterfall projects lawyers tend to focus on locking down the "iron triangle" of scope, price and timetable. In this respect, the customer's requirements play a critical role in determining the scope and key features of the contract. For example, the obligation to meet the agreed requirements forms the baseline for the acceptance tests and feeds into the warranties, timetable and payment milestones. Given the integral role of the requirements, they are usually fixed at the start of the project and are not permitted to change other than through a formal change control process.
Agile projects: flexible requirements
Contrast this with the treatment of requirements in an agile project, where the software is developed in short iterations. Rather than locking down the requirements at the start, the requirements are expected to evolve as the customer reviews the software after each iteration. The customer can learn from what has been delivered, make mid-course corrections and prioritise on its most important requirements. The agile approach also enables the customer to focus on what can be achieved in collaboration with the supplier, within the context of any agreed constraints (which can include a high level vision, timeframes and dollars).
However, not everything in an agile project is flexible. The requirements are often locked down for each iteration and sometimes the flexibility is more around how a requirement is delivered as opposed to what the requirement is. Also, as the measure of progress in an agile project is tested working software, the supplier can be required to ensure that each software release meets agreed quality requirements and other criteria. This provides some certainty around the quality of the software and what will happen on an iteration by iteration basis.
Agile contractsA waterfall based contract will rarely be a good fit for the evolving requirements in an agile project, and may instead provide fertile ground for disputes. An agile contract needs to clearly cater for what is flexible and what is not, and the implications for areas such as testing, warranties, change management, fault resolution and pricing. Also, as the benefits of the methodology are closely tied to following the methodology, it is worth considering the extent to which the contract should capture key process requirements, roles, events and documents along with the general rules for making decisions.
Sign up for Computerworld eNewsletters.