Page 193 -
P. 193
160 part 2 • inforMation requireMents analysis
6. Promote face-to-face conversation.
7. Concentrate on getting software to work.
8. Encourage continuous, regular, and sustainable development.
9. Adopt agility with attention to mindful design.
10. Support self-organizing teams.
11. Provide rapid feedback.
12. Encourage quality.
13. Review and adjust behavior occasionally.
14. Adopt simplicity.
Often you will hear agile developers communicate their point through sayings like these
or even simpler phrases, such as “model with a purpose,” “software is your primary goal,”
and “travel light,” a way of saying a little documentation is good enough. Listen to these
carefully. These sayings (some call them proverbs) are further discussed in Chapter 16.
Catchy phrases are easy to understand, easy to memorize, and easy to repeat. They are very
effective.
Activities, Resources, and Practices of Agile Modeling
Agile modeling involves a number of activities that need to be completed sometime during the
agile development process. This section discusses these activities, the resources, and the prac-
tices that are unique to the agile approach.
FOUR BASIC ACTIVITIES OF AGILE DEVELOPMENT. Agile methods use four basic activities of
development: coding, testing, listening, and designing. An agile analyst needs to identify the
amount of effort that will go into each activity and balance that with the resources needed to
complete the project.
Coding is designated as the one activity that it is not possible to do without. One author
states that the most valuable thing that we receive from code is “learning.” The process is basi-
cally this: Have a thought, code it, test it, and see whether the thought was a logical one. Code
can also be used to communicate ideas that would otherwise remain fuzzy or unshaped. When I
see your code, I may get a new thought. Source code is the basis for a living system. It is essen-
tial for development.
Testing is the second basic activity of development. The agile approach views automated
tests as critical. The agile approach advocates writing tests to check coding, functionality, perfor-
mance, and conformance. Agile modeling relies on automated tests, and large libraries of tests
exist for most programming languages. These tests need to be updated as necessary during the
progress of the project.
There are both long-term and short-term reasons for testing. Testing in the short term
provides you with extreme confidence in what you are building. If tests run perfectly you can
continue on with renewed confidence. In the long term, testing keeps a system alive and allows
you to make changes longer than would be possible if no tests were written or run.
The third basic activity of development is listening. In Chapter 4, we learned about the
importance of listening during interviews. In the agile approach, listening is done in the extreme.
Developers use active listening to hear their programming partner. In agile modeling, there is
less reliance on formal, written communication, and so listening becomes a paramount skill.
A developer also uses active listening with the customer. Developers assume that they
know nothing about the business they are helping, and so they must listen carefully to busi-
nesspeople to get answers to their questions. A developer needs to come to an understanding of
what effective listening is. If you don’t listen, you will not know what you should code or what
you should test.
The fourth basic activity in development is designing, which is a way of creating a structure
to organize all the logic in the system. Designing is evolutionary, and so systems that are designed
using the agile approach are conceptualized as evolving, always being designed.
Good design is often simple. Design should allow flexibility as well. Designing well permits
you to make extensions to the system by making changes only in one place. Effective design
locates logic near the data on which it will be operating. Above all, design should be useful to
all those who will need it as the development effort proceeds, including customers as well as
programmers.