At our May, 2005 meeting, Jim Elliott gave us a
one-hour condensed version of the Test-Driven
Development course he's teaching at the University of Colorado.
TDD is a software engineering process with roots in eXtreme Programming. The
core idea is that developers write a test first, then code to that test. You
may already know this approach as NCLB ("No Code Left Behind").
Jim bravely developed a class right in class, using the TDD traffic-light
model popularized by the movie "Starman": "Red light, stop. Green light, go.
Yellow light, go faster." Code that doesn't work lights the red light in the
IDE. Code that works lights the green. Code that doesn't even compile lights
At each stage, an agile programmer does the least work necessary to change the
color, in the order Yellow->Red->Green->Yellow->.... We saw that this can
lead to unexpected results, but the approach lets developers create and fix
one bug at a time, in contrast to the more traditional process of "Write code
for a few months, then test and debug until your girlfriend dumps you."
Jim's presentation was OO-Oriented (OOO), focussing on automated unit testing
of classes. Currently the best TDD support comes from Junit, using a Java
plugin to the Eclipse IDE; the presentation we saw would port seamlessly to
the Java User's Group. Nevertheless, Jim promises it's possible to do TDD in
C++ and maybe also other languages.
Folks who want supervised practice in TDD/NCLB can get it in a course Jim
gives for CU Continuing Ed. The taste of Jim we got says it is, without a
doubt, a first-rate class.
The only real problem I had was that everything was in Windows, with comments
like, "In Visio, you can put in arrowheads, but they disappear in PowerPoint
or Microsoft Word," and "Eclipse is sort of like an extensible version of the
IDE for Borland C." If you're a FRUUG participant and have a UNIX-oriented
presentation to give, please tell Steve Gaede or someone else on the FRUUG
board. FRMUG is too hard to pronounce.
Jim's slides are available as
a slide show.
Thanks to Jeff Haemer for this meeting writeup!