WRT
ExtremeNormalForm,
BradAppleton asked "How do I know which subset of the XP
practices are the necessary yet sufficient ones to do this?" More generally,
one might ask "
CanXnfComeOnlyFromFullXp?"
For my money, no. Xnf describes the state of the software not the process that
got it there. (OTOH, Xp is a damn good way to get it there!) Starting
with high-precision use cases, for example, shouldn't
prevent a group of
developers from reaching Xnf.
I would go further still: it is possible to reach Xnf following processes that
are
counter to Xp. For example, one might build for the future WRT some
part of the software and subsequently have predictions pan out sufficiently
well to get the code to Xnf.
Lest anyone think I've been "deprogrammed" out of the Xp cult (;->), I believe
that Xp is the best way to get to Xnf. Extra-Xp practices will tend to reduce
ones odds of getting there by diverting precious resources. Counter-Xp
practices make getting to Xnf a fluke. --
KielHodges (now wondering if
ExtraXpImpliesCounterXp)
Just so. The XNF idea is the conceptual state of software that works, is surrounded by tests to enable change, has nothing extra, assumes nothing, prohibits nothing. Posit a definition XNFD that allows a scientific metric to say how close code is to XNF. Now measure some code. It turns out to be exactly in XNF. How did it get there? Clearly, there's no way of knowing. Maybe some guy just got lucky.
If
we
are lucky, XP is
a
''way to get some benefits, including getting to XNF. --
RonJeffries'
'
Some small examples of code which are probably in Xnf are in books like Dijkstra's (
EwDijkstra)
DisciplineOfProgramming, they certainly didn't get there using XP.
But, most of us aren't Dijkstra, and we need to write programs longer than one page.
I've been reading qmail, which is an awesome system. It was written by one genius programmer,
and so certainly not using XP. It is low on tests, but otherwise fits
ExtremeNormalForm. --
RalphJohnson