In This Issue:
-- Leading-Edge Agile Books
-- News and Views from the AM Mailing List
-- Hot Links
We interrupt this regularly scheduled newsletter to bring you breaking news from the agile front -- Addison-Wesley's recent release of three new agile tomes: Barry Boehm and Richard Turner's Balancing Agility and Discipline, Mary and Tom Poppendieck's Lean Software Developmentand Robert Martin's UML for Java Programmers.
--Balancing Agility and Discipline
All methodologies aren't appropriate for all projects, and Barry Boehm and Richard Turner's book takes a good look at when you should choose an agile approach, and when you shouldn't. While Boehm and Turner provide a good comparison of agile and traditional approaches -- which they refer to as "plan-driven" -- one of the book's most important lessons comes from two case studies in Chapter 4. Here, the authors examine both an agile project that used traditional approaches to scale the methodology and a traditional project that employed agile approaches to streamline the effort, demonstrating that agile and traditional approaches are not mutually exclusive. They can, in fact, be combined and tailored to meet your exact situation. But Chapter 5 is worth the cost of the book alone. Boehm and Turner present a risk-based methodology selection process that lets you evaluate your project's risk profile and tailor your approach based on various factors -- such as the certainty of your requirements and the complexity of your environment.
Finally, the book ends with six important conclusions:
1. There is no agile or plan-driven silver bullet.
2. Agile and plan-driven methods each have their own home grounds.
3. Future projects will need both agility and discipline.
4. Balanced agility-discipline methods are emerging.
5. Build your method up; don't tailor it down.
6. Focus less on methods and more on people, values, communication
and expectations management.
--Lean Software Development
Mary and Tom Poppendieck's Lean Software Development describes seven fundamental principles adapted from lean manufacturing for effective software development. According to the Poppendiecks, you should first seek to "eliminate waste": Anything that does not add value for the customer.
Second, "amplify learning." In software development, quality should be based on perceived integrity; the system should continue to solve the problem in an effective manner, even in the face of changing needs or a changing environment. Therefore, you must learn what those needs are and fulfill them effectively. Seeking feedback and taking an incremental approach are useful techniques, as is employing a set-based approach that explores several alternative solutions, merging the best possible features from each for a final solution.
Third, "decide as late as possible." According to Lean Software Development, the most costly mistakes are made when an important issue has been forgotten or ignored in the early days of a project, and the easiest way to make that mistake is to drill down into detail too soon. Instead, it's best to survey the landscape and delay detailed decisions as long as possible.
Their fourth principle is to "deliver as fast as possible." Showing your customers interim, working deliverables is desirable because they can see what they're getting and provide you with essential feedback that will steer you to success. At times, this principle may conflict with the third one, and that's okay -- you need to find the appropriate balance for each individual situation.
Fifth, you should "empower the team," so that it is accountable for its success.
The sixth principle instructs you to "build in integrity." The Poppendiecks discuss two forms of this vital quality: Perceived integrity means that the product's totality achieves a balance of function, usability, reliability and economy that delights customers; conceptual integrity means that the system's central concepts work together as a smooth, cohesive whole. Without such integrity, you may be able to deliver your system on time and on budget, but you'll fail because it will be rejected by its user base.
Finally, the Poppendiecks believe you should "see the whole." A system is not just the sum of its parts; it is the product of their interactions.
I really enjoyed this well-written book; its solid, real-world advice makes it a must-read for anyone interested in agile software development.
--UML for Java Programmers
In UML for Java Programmers, Bob Martin lays out the fundamentals of the Unified Modeling Language (UML) in terms that Java developers can understand. Martin focuses on UML class diagrams, sequence diagrams and use cases; although he also touches on other artifacts such as collaboration diagrams (now called communication diagrams in UML 2) and state diagrams (now called state-machine diagrams). UML for Java Programmers also contains an overview of several design principles, including the open-closed principle and the interface- segregation principle (familiar ground for anyone who's perused the author's other books). In many ways, the book's modeling portions represent the level of maturity that we should see (but rarely do) in other Java programming books. It's refreshing to see a book that connects modeling and coding together as well as this one does.
One of the book's most useful segments, Chapter 7, explores dX, a collection of practices for effective development, including pair programming, working in iterations, developing spike solutions to explore technologies, unit testing, refactoring, estimating and tracking your team's velocity. A meld of Extreme Programming (XP) and the Rational Unified Process (RUP), dX may be a viable option for teams that seek more structure than XP provides, but don't want the overhead typically found in many RUP instantiations.
The book's two case studies are a welcome bonus: Both the coffee maker and the remote service wrapping Martin's SMC compiler (download it at http://www.objectmentor.com) show models and code, valuable resources from which all developers can learn.
Read, Read, Read
I can't say this enough -- successful software professionals read. A lot.
>>News and Views from the AM Mailing List
Hacking and Refactoring
Eric Raymond, best known for his writings about open source, recently posted some thoughts about agile software development techniques in an essay entitled "Hacking and Refactoring." Members on this list discussed Raymond's thought-provoking essay, generally agreeing with his views.
UML Certification Program
In mid-August, the OMG released a beta version of a new UML certification program, in order to run a group of people through the test before it's finalized later this autumn. Thoughts regarding UML certification were mixed on the mailing list, ranging from "it isn't going to prove anything" to "it's about time we started certifying people." A couple of people who took the test reported that most of the questions focused on the differences between UML 1.4 and 2.0.
Planning Agile Projects
A new poster was struggling with following an agile development approach in an organization that required a start-to-finish project plan. List members advised him to follow Extreme Programming (XP)'s planning game, or something similar, and to first write "fuzzy requirements" that focus on system capabilities instead of exact features to allow for changing requirements. An example of a fuzzy requirement is "support wild-card search of customers" versus the defined requirement of "search for customers based on first name, last name, telephone number and address."
The Agile Alliance home page is the best starting point for anyone
interested in learning more about agile software development.
Find the Agile Modeling Mailing List at
Agile Modeling training resources are overviewed at
The Agile Models Distilled page leads to summary pages describing a
wide range of model types, including all 13 of the UML artifacts.
Find Craig Larman's Agile & Iterative Development: A Manager's
Guide (Addison-Wesley 2003) at
Check out Barry Boehm and Richard Turner's Balancing Agility and
Discipline: A Guide for the Perplexed (Addison-Wesley, 2003) at
Check out Eric Raymond's Hacking and Refactoring blog entry at
Find Mary and Tom Poppendieck's Lean Software Development: An Agile
Toolkit (Addison-Wesley, 2003) at
The Object Management Group's UML Certification Beta Test can be found
Check out Robert Martin's UML for Java Programmers (Addison-Wesley, 2003)