RichKucera, on the
XpMailingList:
Sometimes a Great Notation
- - - - - -
The little tugboat of Test-first Discipline, cardboard fist with middle
digit extended, duct-taped to the mast, visible from the river banks.
On one bank stands the various industry "container-lets": JSPs, servlets,
orblets, EJBs, Droplets, JHTML, ASP, ActiveX Bean Bridges, session
expiration call-back listeners, proprietary runtime services, various GUI
models, etc.
On the other shore there are the Data Sources, Connections and Persistence
Concerns--RDBMSs, ODBMSs, XML, ORDBMSs, Behemoth Financials Packages,
LDAP servers, whatever--the Data Model and Information Sources.
Many fancy, large complicated tugs with flow analysis simulators and
automated-log-tying are secured to Proprietary Docks at either side of the
river. Uniformed operators on board, drooling in dishes of pizza-flavored
cheese snacks.
Your little tug, with its two buttons, COMPILE and TEST, is towing
thousands of Objects, all linked together in large collections. In radio
contact, you have your highly agile, small auxiliary aluminum Exploratory
Test-first Programming craft whizzing around, quite independent of any
"project" or "release cycle", tweaking the large tow in various places,
prying apart little jams before they're big jams. The tow is about a mile
long.
The object model is independent of both shores. Discipline keeps the code
testable, out of container-lets, and persistence concerns shoved far down
into subclasses or mediated on an as needed basis, by a COTS mapping
package, Toplink for example.
That is, to get your money's worth out of a package like Toplink, you
develop your object model independent of persistence concerns, everything
testable in the object layer, and separate persistence concerns to deal
with later--map an attribute here and there, as needed. Everything goes
much faster because the problem to be solved is clearer, that's where you
get your money's worth.
Also, doing Persistence Mapping Later buys you the ability to *have*
attributes at all, not to mention methods, if you can still remember how
to write them. The notion of developing object model separate from data
model has been "endorsed" by Giga, but the practicality of it is kind of
lost with their articles. You'd lump in other information sources, such
as LDAP, with the data model.
Fooey, you think, if only I had time to do this, now I'm going to have
to
rename my stupid JDBCUserInfoSource class...
tests still broke from the last refactoring...put on Levee Breaks and see if
you can get a Green Bar before the phase shifting kicks in...nope, going
down, going down down
CategoryExtremeProgramming, See
AgilityTest