J
Jeff Higgins
I'm very tempted to a an item to that list: "Lew's Method", with a linkA complete list would have one entry per practitioner.
to your excellent exposition. Thanks for that, much appreciated.
I'm very tempted to a an item to that list: "Lew's Method", with a linkA complete list would have one entry per practitioner.
Someone may want to start with designing the UI and then add the data model.Now that you are sufficiently interested in data modelling and software
design methodologies: here is a good, fast, cheap jumping in point.
<http://www.vogella.de/articles/EclipseEMF/article.html>
It will even do Swing databinding with some extra work (I gather).
<http://en.wikipedia.org/wiki/List_of_software_development_philosophies>
"This list is incomplete; you can help by expanding it."
Yep, I did. I apologize for the misattribution.I didn't make the comment you attributed to me, Stefan did. And in fact
Stefan would be mis-quoted if you don't add his "where one writes the
calls before one write the callee".
Great!Stefan is right: it's quite common to use top-down coding in procedural
languages especially. But TDD is neutral when it comes to "top-down" and
"bottom-up"; one could just as easily be building bottom-up when using TDD.
As far as software development *methodologies* go, as opposed to
"philosophies", there aren't that many primary types, probably less than
a dozen. Nobody's doing anything new, except for coining labels.
Jeff Higgins said:Yep, I did. I apologize for the misattribution.
Righto. I'm off to begin a thread on JML.I do not see a misattribution. Let me explain:
|> On 01/09/2012 07:36 AM, Stefan Ram wrote:
|>> TDD is not the only methodology,
The number of greater-than signs at the left indicate that
»TDD is not the only methodology,« was written by me.
It was written by me. So, there is no misattribution.
But since I feel somewhat annoyed having to explain this,
feel all free to apologize for the mismisattribution!
(Just kinding, there is no need to apologize.)
Indeed. IIRC I first found the idea of Top-down Incremental DevelopmentTDD is not the only methodology, where one writes the calls before one
write the callee. In the 70s we already had something called »top-down
programming« where one writes the upper-level methods first and then
implements the operations they call.
example.html>Someone may want to start with designing the UI and then add the data
model.
<http://code.google.com/javadevtools/wbpro/features/swing/data_binding/
Once I was giving a C++ class for engine construction
students, and I gave them an assignment that requires to
write a client (caller) before the service (callee) is
written, but (my memory might distort this to some degree)
no one was able to understand what they were supposed to do.
And so, there was no correct solution to that assignment (or
only very few, I am not sure).
This is what the BDD (behaviour driven development) folks do, start withexample.html>
If the data model hasn't been specified that's often the best way to go
about it. Its like the way we used to design tape based systems before
those new-fangled design methodologies appeared: Start by designing the
output (typically printed reports) and then work back to design the
master file(s), adding keys etc as needed to get the file ordering right.
Following that, you could say what the inputs needed to be knowing that
you hadn't left any data items out or included any that weren't needed.
I find the same approach works equally well for interactive systems.
You're correct. Your annoyance is presumably misplaced, if you actuallyI do not see a misattribution. Let me explain:
|> On 01/09/2012 07:36 AM, Stefan Ram wrote:
|>> TDD is not the only methodology,
The number of greater-than signs at the left indicate that
»TDD is not the only methodology,« was written by me.
It was written by me. So, there is no misattribution.
But since I feel somewhat annoyed having to explain this,
feel all free to apologize for the mismisattribution!
(Just kinding, there is no need to apologize.)
Arved said:I will also point out, neutrally, that what has been advocated here for
unit tests in support of software component design is test driven
development (TDD), or *close to it*. Lew and Martin both describe a
process very close to it; I don't have enough information to say whether
they are _requiring_ that all of the first tests fail (which is
necessary in classic TDD), or simply assuming that many/most will.
In any case the OP could read up on TDD to get more background on what's
being described here. A salient point is that these are unit tests that
support software component design; they are not unit tests for defect
detection [1].
....
1. And how much of one's time one should devote to writing unit tests
for _testing_, as opposed to higher-level tests, is a different discussion.
Jeff said:I'm very tempted to a an item to that list: "Lew's Method", with a link to
your excellent exposition. Thanks for that, much appreciated.
I went on at, possibly excessive, length since I remembered a trulyLike I mentioned to Jeff H. in another reply in this thread, there
aren't that many software methodologies really. Although surely a lot of
people are busy churning out new labels for old stuff. The outside-in
aspect of BDD, that's me decades ago writing a new C tool during a
scientific programming contract and devising how I want to configure C
getopt this time. Or even further back doing the same basic things in
FORTRAN 66 [1] or 77.
+1I don't mind too much the new folks "discovering" "new" methodologies
insofar as it might help to sell old tried-and-true techniques. But I
sure wish they would occasionally acknowledge that they are
re-packaging.
When you write that up-front test and keep it simple, you don't have to
run the test to know it'll fail initially.
I, too, write implementation before the unit test. Or did. I've
learned that unit tests save effort and eliminate bugs, the more so
earlier you write them, up to concurrently with implementation.
Covering your code with unit tests, you are freed of doubt whether
you're free of unit-level bugs. (Ducking tomatoes. Hey, don't get mad
at me if you wrote insufficient unit tests. Fix them.)
I'm working on assimilating this lesson properly myself. New habits
displace ingrained patterns only by dint of diligence. My
transformation is helped by how little overhead a test-propelled
approach introduces, and how much faster and better development goes.
[ SNIP ]In any case the OP could read up on TDD to get more background on what's
being described here. A salient point is that these are unit tests that
support software component design; they are not unit tests for defect
detection [1].
...
1. And how much of one's time one should devote to writing unit tests
for _testing_, as opposed to higher-level tests, is a different
discussion.
Would you expound on this distinction, please? I've heard a lot of
distinctions drawn around tests and unit tests in particular, but never
this.
Want to reply to this thread or ask your own question?
You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.