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.
   188   189   190   191   192   193   194   195   196   197   198