Page 77 -
P. 77
60 Chapter 3 Agile software development
Principle Description
Customer involvement Customers should be closely involved throughout the development process.
Their role is provide and prioritize new system requirements and to evaluate
the iterations of the system.
Incremental delivery The software is developed in increments with the customer specifying the
requirements to be included in each increment.
People not process The skills of the development team should be recognized and exploited. Team
members should be left to develop their own ways of working without
prescriptive processes.
Embrace change Expect the system requirements to change and so design the system to
accommodate these changes.
Maintain simplicity Focus on simplicity in both the software being developed and in the
development process. Wherever possible, actively work to eliminate complexity
from the system.
As I discuss in the final section of this chapter, the success of agile methods has
Figure 3.1 The
principles of agile meant that there is a lot of interest in using these methods for other types of software
methods development. However, because of their focus on small, tightly integrated teams,
there are problems in scaling them to large systems. There have also been experi-
ments in using agile approaches for critical systems engineering (Drobna et al.,
2004). However, because of the need for security, safety, and dependability analysis
in critical systems, agile methods require significant modification before they can be
routinely used for critical systems engineering.
In practice, the principles underlying agile methods are sometimes difficult to
realize:
1. Although the idea of customer involvement in the development process is an
attractive one, its success depends on having a customer who is willing and able
to spend time with the development team and who can represent all system
stakeholders. Frequently, the customer representatives are subject to other pres-
sures and cannot take full part in the software development.
2. Individual team members may not have suitable personalities for the intense
involvement that is typical of agile methods, and therefore not interact well with
other team members.
3. Prioritizing changes can be extremely difficult, especially in systems for which
there are many stakeholders. Typically, each stakeholder gives different priori-
ties to different changes.
4. Maintaining simplicity requires extra work. Under pressure from delivery
schedules, the team members may not have time to carry out desirable system
simplifications.