392 Appendix B Agile Methodologies
because of errors and none were issued because of implementing the wrong
functionalities. Working together, the users and developers were able to clarify
system requirements and create a user interface that was easy to learn and use.
In conclusion, Agile development offers managers and programmers more
choice in their efforts to produce good systems that come in on time and at or
under budget. Agile methods are here to stay, and over time, we will come to
understand them better, as well as how best to use them for the benefit of
developers and users.
Key Points Review
1. Define Agile Methodologies.
The Agile Methodologies, a collection of related
methodologies for systems development, rely on
object-orientation and the need for speed. This
approach sacrifices the milestones and multiple
phases of the engineering approach currently com-
mon in systems development, favoring instead
close cooperation between developers and clients,
combining many life cycle phases into few phases,
and having multiple rapid releases of software.
Although many individual methods reflect the new
approach, collectively they are called the Agile
Methodologies. These individual methods have in
common a focus on adaptive methodologies,
people instead of roles, and an overall self-adaptive
development process.
2. Explain when to use Agile Methodologies and
when to use engineering-based approaches to
systems development.
First, Agile methods fit much better with
smaller projects than with larger ones. Tradi-
tional methods are preferred for large projects
and for those dealing with safety-critical systems.
Second, Agile methods work well when the target
system is to operate in a volatile and fluid envi-
ronment, where business conditions are turbu-
lent and frequently changing. Because of the large
amount of planning that is part of them, tradi-
tional approaches work best where the system
being developed operates in a stable environ-
ment. Third, because Agile Methodologies stress
the importance of individuals rather than roles,
an Agile approach may not work as well unless a
critical mass of people is trained to use Agile
methods. Finally, Agile methods will work best in
an organization culture that thrives on uncer-
tainty, rapid change, and chaos. Traditional meth-
ods work where organizational roles are clearly
defined and change little.
3. Define eXtreme Programming.
eXtreme Programming was developed by Kent
Beck in the late 1990s. eXtreme Programming is
distinguished by its short development cycles, its
incremental planning approach, its focus on auto-
mated tests written by programmers and customers
to monitor the process of development, and its
reliance on an evolutionary approach to develop-
ment that lasts throughout the lifetime of the system.
One of the key emphases of eXtreme Programming is
its use of two-person programming teams. A second
emphasis is having a customer on-site during the
development process. The techniques used for re-
quirements determination in eXtreme Programming
are captured in the Planning Game, a stylized ap-
proach to development that seeks to maximize
fruitful interaction between those who need a new
system and those who build it. Other important as-
pects of eXtreme Programming are simple design
and refactoring.
4. Discuss the Agile Methodologies approach to
systems requirements determination, design
specifications, and the combination of coding
and testing.
Three methods for requirements determination
from an Agile Methodologies perspective were
presented in this appendix: (1) continual user
involvement in the development process, a tech-
nique that works especially well with small and
dedicated development teams; (2) Agile Usage-
Centered Design, a JAD-like approach; and
(3) the Planning Game, developed as part of
eXtreme Programming. Agile Methodologies pro-
mote rapid iterative movement between design
and coding, so design specifications are captured
as part of the design process itself. Specifications
evolve with each iteration, through the cycle of
analysis-design-code-test, leaving little room in
the process for documenting the design with
paper or diagrams or in any way other than the
code itself. For Agile Methodologies, coding and
testing are intimately related parts of the same
process, and the programmers who write the
code also write the tests. The general idea is that
code is tested soon after it is written.