Re: inappropriate upfront?



Thank you all for your thoughts.

The way I see it the choice here is about development platform. It shouldn't cost me too much to do test-first combined with simple approach (basically some ifological procedural code) and see if rule based approach is really needed.

Let us assume that driven by tests, at some point I conclude that I need some way of specifying decision rules in a declarative manner and build the engine which applies the rules given the current state of the game. Obviously there is a number of ways to achieve this. I can develop my own minimalistic engine, I can use 3rd party library, I could consider some other language such as Lisp or Prolog or try the interpreter pattern with OO language (any other ideas?).

At this point I am faced with development platform decision - if only for a piece of functionality (computer player feature). I guess that it is not trivial to refactor from one such approach to another, so I want to be careful about which one will I choose.

I start considering all possible situations that come to mind. I don't write tests anymore, I list the cases in plain English on a piece of paper. Based on this I try to deduce requirements for the rules development platform. Then having other parameters in mind - how simple it is to use, to integrate, to deploy, how much does it costs, performance, prerequisites etc I choose the approach.

Now, once I chose the approach, I would continue to drive the rules with tests - write the test, then write the rules which cause the test to pass, and so on. However, I made a fairly big decision based on thinking. I also chose to consider all cases I can think of without actually writing the tests. How would this decision process be regarded in agile/tdd light?
.