Software & Technology
Agile Software Development came to the fore as a concept in 2001 with the bringing together of seventeen software developers in Snowbird, Utah. All with a shared vision of how software development could be improved for supplier and customer alike. They distilled their views in The Manifesto for Agile Software Development. Among other values it called for “customer collaboration over contract negotiations”. While a potentially wince inducing statement for the conventional lawyer, Agile Software Development has nonetheless proved popular (it is not to be forgotten, however, that such alternative management styles had been experimented with since the 1950s – most notably in Project Mercury, the first human spaceflight programme).
Software development is often a creative and exciting moment for any business. However someone – usually that’s the legal adviser – needs to join the party thinking about risk – how it should be apportioned and how it should be minimised.
In order to understand the conceptual basis for Agile Software Development, it is useful to know what it opposes. The first formal description of the waterfall model is often cited as the 1970’s article, Managing the Development of Large Software Systems by Winston W. Royce, although the term ‘waterfall’ was not explicitly used. The waterfall model was presented as a flawed, non-working model. It is the waterfall model to which Agile Software Development is opposed.
Here is how the waterfall method usually pans out:
Specification requirements – Design – Coding – Testing and Error Detection – Integration – Deployment – Maintenance.
This is how a product is usually made for a customer i.e. the customer specifies what it would like, the supplier creates the product, the product is tested. Once the product passes the tests it is then integrated in the customer’s system, tested again then goes live. Having gone live the supplier usually then provides support and maintenance services to fix any defects in the software.
Agile Software Development – Flexibility
Potential disadvantages of the waterfall method include the difficulty for customers to define their requirements clearly at the outset and that in many cases it does not easily accommodate changes to these requirements made throughout the project. By contrast to the waterfall method, an Agile Software Development project does not have detailed demands for the end product at the outset, although overall project scope and goals are agreed. Flexibility is the core to agile projects as they acknowledge that a customer’s demands and priorates may change from time to time during the course of the project.
Agile Software Development -Method
Typical features of the agile method include:
- The goal is to deliver functionality and business value to the customer. This means that the solution to business goals and needs cannot necessarily be defined from the outset. It is only the goals and needs that are themselves initially important.
- The project is divided into a number of sprints, each has its own set of priorities and goals. At the end of each sprint is an approval process assessed by the customer.
- Planning and review meetings occur at the start and end of each sprint meaning close communication is maintained between the two parties.
- The customer will reprioritise its needs from time to time, based on its ongoing assessment, and communicate this to the supplier. This may mean that some of the original requirements may become redundant over time.
Although Agile Software Development projects can run on their own terms, there is generally a set of positions and relevant terminology used:
- Product owner – customer’s representative who acts as the first point of communication with the supplier. Key functions include understanding the business needs and organising the development tasks. They must be present at sprint planning and review meetings.
- Development team – typically supplier personnel. They are responsible for enacting the development sprints.
- ScrumMaster – focuses on the development team, its progress, removal of obstacles and quality assurance. Typically a member of the supplier’s personnel.
- Stakeholders – representatives of the customer’s management.
- Product vision – an explanation of what needs to be developed, focusing on business goals and targeted benefits, rather than technical solutions.
- Product backlog – a prioritised list of the customer’s business requirements that are to be developed during the project term. These can be reset at any time with new ones added and old ones deleted.
Importance of the product backlog
Maintenance of the product backlog (described above) is a key part of the agile process. The business requirements contained in it and the priorities accorded to them steer the development of the software and testing/approval procedures. These needs are generally described in the form of user stories. Customers should therefore ensure that any mandatory data protection law principles or cybersecurity obligations are contained within the product backlog.
Agile Software Development Scrum
The software development term ‘scrum’ was first used in a 1986 paper titled The New New Product Development Game. The term is borrowed from rugby, where a scrum is a formation of players and is illustrative of teamwork. Scrum is an agile framework used for complex projects (sometimes called extreme programming). Here are its key components:
- Sprint – a timeboxed effort in which development takes place.
- Sprint planning – establishes sprint goals.
- Daily scrum – each day during a sprint, the team holds a daily scrum, preferably at the same place and time, and not longer than fifteen minutes. The scrum is concerned with what each player is contributing to a present/future sprint and has contributed to previous ones.
- Sprint review and retrospective – demonstrates the work from the current sprint and improve processes respectively.
- As another sprint begins, the product owner and development team select further items from the product backlog and begin work again.
Legal remedies for a dissatisfied customer
In a waterfall-type agreement the customer can rely upon damages, termination or remedial work in the case of defects or delays. In the case of Agile Software Development it can be difficult to determine whether there is actually any delay or defect because the flexibility of the system means that either can be easily buried behind prioritisation or vague notions of acceptability. Meaning that a delay could be deemed unprioritised by a product backlog and therefore not really a delay or the lack of an accepted definition of acceptance could allow a supplier to argue that no defect exists. The informality of decision-making can also make it difficult to gather the relevant evidence in case of a perceived breach of contract.
Time, whilst fluid under an Agile Software Development process, is also bound to sprints and usually given a deadline. In a standard arrangement the customer would estimate the project duration and the number of sprints. It is, however, the discretion of the supplier/customer as to whether or not to formally agree to such estimates. This will need to be negotiated before an agreement is reached. Whilst setting time limits may be tempting, it may also be the undoing of the whole purpose of an agile agreement, in that flexibility will seem undervalued. On the other hand, having some framework in place to ensure contractual remedies is by no means discouraged.
Here are a some risk areas to be aware of:
- Not meeting specific requirements within the original timeframe may not necessarily be seen as a breach of the agreement (as they may be re-arranged in the backlog).
- Acceptance criteria of a sprint – if the agile software development contract is unclear around acceptance criteria the parties can be left arguing over whether an element of the build is completed or not. Acceptance criteria should be described in detail in any agreement so that there is no reliance on less formal descriptions that may be contained in user stories.
- It is common for agile software development projects to go over budget. Leaving aside delays or quality issues that ramp up costs, if a customer walks into a project not really sure about what they want then it can often happen that their eyes will light up when the developer says “hey, do you want the product to do this cool thing”.
- Everyone needs to be involved. Developing software using agile methodology is quite an intense process, depending on the project. As it is a collaborative process the parties need each other to be on focused on the project and communicating with each other the whole time. If a key member of the team suddenly goes AWOL then the project may grind to a halt.
Agile Software Development in practice
Agile Software Development as a methodology has the potential to produce creativity and customer/supplier satisfaction on paper and in practice. It is important, however, to be aware of the potential legal pitfalls from the outset so that each party feels satisfied with the contents of an agreement before moving forward. It is also significant to note that agile methods require both parties to commit to a significant level of time and resources. If either party is remotely located or overburdened with other responsibilities (and so unable to focus on the agile project) the chances of success will be limited.