Page 94 -
P. 94
Chapter 3 Key points 77
tools (e.g., requirements management tools) and the use of these tools is mandated
for all projects.
3. Agile methods seem to work best when team members have a relatively high
skill level. However, within large organizations, there are likely to be a wide
range of skills and abilities, and people with lower skill levels may not be effec-
tive team members in agile processes.
4. There may be cultural resistance to agile methods, especially in those organizations
that have a long history of using conventional systems engineering processes.
Change management and testing procedures are examples of company proce-
dures that may not be compatible with agile methods. Change management is the
process of controlling changes to a system, so that the impact of changes is pre-
dictable and costs are controlled. All changes have to be approved in advance before
they are made and this conflicts with the notion of refactoring. In XP, any developer
can improve any code without getting external approval. For large systems, there are
also testing standards where a system build is handed over to an external testing
team. This may conflict with the test-first and test-often approaches used in XP.
Introducing and sustaining the use of agile methods across a large organization is
a process of cultural change. Cultural change takes a long time to implement and
often requires a change of management before it can be accomplished. Companies
wishing to use agile methods need evangelists to promote change. They must devote
significant resources to the change process. At the time of writing, few large compa-
nies have made a successful transition to agile development across the organization.
KEY POINTS
Agile methods are incremental development methods that focus on rapid development, frequent
releases of the software, reducing process overheads, and producing high-quality code. They
involve the customer directly in the development process.
The decision on whether to use an agile or a plan-driven approach to development should
depend on the type of software being developed, the capabilities of the development team, and
the culture of the company developing the system.
Extreme programming is a well-known agile method that integrates a range of good
programming practices such as frequent releases of the software, continuous software
improvement, and customer participation in the development team.
A particular strength of extreme programming is the development of automated tests before a
program feature is created. All tests must successfully execute when an increment is integrated
into a system.