The agreement should also contain assurances that the developer will provide all the resources necessary to complete the tasks in a given iteration, thereby removing the potential excuse that an iteration could not be finished due to lack of resources. Finally, the contract should specify that knowledge transfer activities among developer personnel are not chargeable.
CIO.com: In traditional application development outsourcing, the provider warranties that the product meets specifications and that it will remediate any failure to perform in accordance with those specifications for a period of time. Can you do that with agile-developed software?
Schaffner: Offering a warranty like this is a bit problematic, but the developer could warrant that the working code produced during each iteration meets the specifications for that iteration. As more working code is built in subsequent iterations, the client should seek a warranty from the developer that the integrated pieces will work together, and that the final product will perform in accordance with the summation of the specifications from each iteration. The client should also evaluate whether or not there is some seasonality associated with the product and ensure that the warranty sufficiently covers periods of high demand or use.
CIO.com: How should IP rights be handled in what is a more collaborative process between client and provider?
Shaffner: An agile software development agreement should clarify which party owns the intellectual property rights in the developed product and whether the other party has a license to use and/or create derivative works of the developed product. If the [provider] insists on owning the intellectual property rights, the client should have an unrestricted license to the developed product and potentially seek restrictions on the developer's use of the product within the client's line of business. The situation is further complicated if either party brings pre-existing code to the project, which may require case-by-case negotiations.
CIO.com: If a client is struggling too much trying to write a satisfacotry agile development agreement, might it be a sign that outsourced agile isn't right for them?
Schaffner: Contracting for agile software development requires a client to give up a certain amount of control and contractual remedies to enforce if the project goes astray. The challenge involves contracting for trust, which many organizations - and lawyers - struggle with. Until clients are more comfortable with the lack of control and price variability, the traditional approach be better for the development of mission-critical applications.
Source: CIO New Zealand
Sign up for CIO Asia eNewsletters.