From: Software Development <agilemodeling@softwaredevelopment.email-publisher.com>
Date: Wed Sep 17, 2003  5:25:58  PM America/Chicago
To: dmumaugh@corecomm.net
Subject: The Agile Modeling Newsletter: Leading Edge Agile Books

The Agile Modeling Newsletter
September 2003
By Scott W. Ambler

Leading-Edge Agile Books
By Scott W. Ambler

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 Development 
and 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.  

Hot Links

The Agile Alliance home page is the best starting point for anyone 
interested in learning more about agile software development.  
http://click.sd.email-publisher.com/maabszFaa0AHIa9GYQSb/

Find the Agile Modeling Mailing List at 
http://click.sd.email-publisher.com/maabszFaa0AHJa9GYQSb/ 

Agile Modeling training resources are overviewed at 
http://click.sd.email-publisher.com/maabszFaa0AHKa9GYQSb/

The Agile Models Distilled page leads to summary pages describing a 
wide range of model types, including all 13 of the UML artifacts. 
http://click.sd.email-publisher.com/maabszFaa0AHLa9GYQSb/

Find Craig Larman's Agile & Iterative Development: A Manager's 
Guide (Addison-Wesley 2003) at 
http://click.sd.email-publisher.com/maabszFaa0AHMa9GYQSb/ 

Check out Barry Boehm and Richard Turner's Balancing Agility and
Discipline: A Guide for the Perplexed (Addison-Wesley, 2003) at 
http://click.sd.email-publisher.com/maabszFaa0AHNa9GYQSb/ 

Check out Eric Raymond's Hacking and Refactoring blog entry at
http://click.sd.email-publisher.com/maabszFaa0AI3a9GYQSb/

Find Mary and Tom Poppendieck's Lean Software Development: An Agile 
Toolkit (Addison-Wesley, 2003) at 
http://click.sd.email-publisher.com/maabszFaa0AHPa9GYQSb/ 

The Object Management Group's UML Certification Beta Test can be found 
at http://click.sd.email-publisher.com/maabszFaa0AHQa9GYQSb/ 

Check out Robert Martin's UML for Java Programmers (Addison-Wesley, 2003) 
at http://click.sd.email-publisher.com/maabszFaa0AHRa9GYQSb/ 

**********************************************************************

FREE SOFTWARE DEVELOPMENT SUBSCRIPTION 
(U.S. Residents Only)
If you don't already receive the print version of Software
Development magazine, subscribe now. It's free for qualified 
individuals.
http://click.sd.email-publisher.com/maabszFaa0AHSa9GYQSb/

ADVERTISING INFORMATION
For more information on advertising in Software 
Development newsletters, contact our Web Sales Managers:
East: Andrew Mintz, (978) 897-3035, amintz@cmp.com
West: Kristy Mittelholtz, (415) 947-6189, kmittelh@cmp.com 

FEEDBACK AND PROBLEMS
Send letters to the editor to aweber@cmp.com.
Send technical questions or problems to 
webmaster@sdmagazine.com.

THE AGILE MODELING NEWSLETTER is a monthly newsletter brought to 
you by CMP Media LLC, publisher of Software Development 
magazine.

Copyright 2003 CMP Media LLC