When embarking on a software or application development project, a key consideration should be the development methodology to be used. Generally, the commissioning party (“the customer”) will have the choice of an “Agile” or “Waterfall” style of development. The methodology selected by the customer will often depend upon whether the customer wishes to have flexibility during the development cycle, or whether it wishes to agree a detailed set of business specifications and technical requirements before the developer begins work. The choice made will of course inevitably have legal and commercial implications. These implications should be identified and addressed in a software development agreement between the customer and the developer. Some of the factors to consider in making the decision are set out below.
Agile software development methodology allows the customer to develop its requirements during the project phase in short, frequent development cycles. Agile development is flexible and scalable; it enables the scope of a project to be changed based on feedback received during these short development cycles. In short, the specifications can be changed post contract signature, without the need to follow a strict and potentially time consuming change control process. However, this does not mean that the parties should abandon recording any agreed changes to the high level specifications agreed at the very beginning of the project.
Therefore, if you are a customer thinking about using Agile you should ask yourself:
- Do I have a suitably skilled, experienced and qualified IT project manager to be the product owner (this is key)?
- Do I want to be able to change requirements, mid development (NB: from the developers perspective, this should not include a change to the effort estimation)?
- Is the development of working software more important than a comprehensive and pre- agreed set of design and technical specification documents?
- Do I want to work in a collaborative manner with the developer?
If you answer “yes” to all of the above then an “Agile” style of development could be appropriate for your organisation.
Waterfall software development methodology is focused on agreeing a detailed set of business requirements and technical specifications prior to the commencement of work. Detailed documentation is required for each project phase, including technical specifications, which set out measurable deliverables and performance criteria.
If you are a customer thinking about using Waterfall you should ask yourself:
- Do I want to ensure that all results are delivered by agreed time periods?
- Do I want to agree a fixed price and fixed project schedule, with milestone payments?
- Do I want a fixed scope that can only be changed or amended through a strict change control process?
- Do I want user acceptance testing to occur only at the end of the final build phase for the project?
- Do I want the development cycle to be sequential so that the development team cannot proceed to the next phase until all deliverables for that current phase have been accepted?
- Do I want a clear distinction between roles, responsibilities and liabilities of the parties?
If you answer “yes” to all of the above then a “Waterfall” style of development could be appropriate for your organisation.
It is also possible to use a mixture of Agile and Waterfall during the development. For example, the early scope and analyse phase of the project could be completed using Waterfall, whilst Agile development principles are applied to later or selected phases of the build. In these circumstances care must be taken to ensure that the correct contracting principles are agreed and applied at the appropriate stages of the development. For example, the point at which testing and acceptance should occur may differ depending on which methodology is used.
Although, Agile is flexible and collaborative, it does not equal “zero paperwork”. It is still advisable (for both parties) to agree: a contract, project plans, interface designs and technical specification documents. After all, you would not embark on a software development project based on the Waterfall methodology without addressing issues concerning project governance, deliverables, testing and acceptance, warranties, cost and IP ownership – to name just a few. Agile is not a “free for all” in terms of scope and scope change, so organisations should still consider all of the above even when using the Agile methodology.