From: "Ravi Mohan" <magesmail.at.yahoo.com@...>
To: "extremeprogramming@yahoogroups.com"
<extremeprogramming.at.yahoogroups.com@...>
Sent: Sunday, October 02, 2005 9:25 PM
Subject: Re: [XP] Behaviour Driven Development
>
> Joe,
>
>> The essence of BDD is to take TDD and change the testing terms to
>> specification terms. The goal is to see how we as programmers behave
>> differently thinking about specifications than tests.
>
>
> No argument there. I was asking about any experiential evidence that
> such a change causes a real difference.
>
>> The section on the Sapir-Whorf hypothesis is -- not just in my opinion,
>> but from what I can tell from Dave -- the whole point. The rest is just
>> syntax.
>
> And which version of the Sapir-Whorf hypothesis do you think is being
> used here? The strong version? the weak version? As the wikipedia
> entry (that DAve quotes in his paper -
> http://en.wikipedia.org/wiki/Sapir-Whorf_Hypothesis) illustrates,
> there is quite a bit of dispute amongst linguists on its validity.
Remainder snipped.
You're quite right. The reason that the Sapir-Whorf hypothesis is
strongly disputed among linguisists is not that it's totally wrong, it's
that it's a drastic oversimplification (and consequently very
dangerous distortion) of what many modern linguists
think the actual situation is all about. It would be long dead and
forgotten if it wasn't being used as a justification for a number of
things by several political groups.
The modern viewpoint is that of a mindset, viewpoint or mental
framework; a completely different way of looking at the same
things. In one of his books, George Lakoff does an exposition
of the difference between "conflict" and "cooperation" as mindsets.
It's highly recommended to get the basic idea (and I may read
it myself one of these days [grin]).
So when we say that using the word "test" brings up a complete
mental framework that includes a completed artifact before
testing, and all the rest of the stuff in Dave Astell's article, it's
actually something that many mainline linguists would agree
with.
Where they would disagree is that just changing "test" to
"should" will make a difference. Sapir-Whorf would say that
it would. Many modern linguists would say that it would
_if_ and that needs to be emphasized _if_ the person already
has an alternative mental framework to be invoked.
If he doesn't, then it's just going to cause confusion and,
in some cases, frustration. Take the radical part of the women's
movement of a couple of decades ago: they tried to "fix" the
sexual bias in English, and failed utterly. What they managed
to do was pitiful in comparison to what they wanted: the
abbreviation Ms., elimination of the -ess ending in most
(but not all) cases, and shifting a lot of words from the
Germanic -boy, -girl, -man, and -woman endings to
equivalent words with the French -er ending. Most people
didn't know what they were talking about, and still don't.
So the critical point here is the alternative framework, not
the words that one uses, although different words will be
helpful.
On a more experiential note, I tried using "should", and
I'm going to continue. It's very easy in the Python version
of xUnit: unittest. You get to specify the prefix that means
"test case method" on a class by class basis. It kind of
works, but there are still difficulties.
For example:
def shouldDeleteMailIfSpam(mail):
mail.mustDeleteIfSpam(True)
For people who don't know Python, "mail" is
actually the instance. It's usually spelled "self".
This implies that the class initializer has to
perform the same function as the setUp() method,
which eliminates the need for a setUp() method.
The TearDown() method is still needed, since
Python's destructor is woefully insufficient.
And that in turn means that specification classes
probably subclass.
John Roth
> regards,
> Ravi