Saturday, June 17, 2006

Concave Hexaflexagonal Architecture

How many sides does a Rhombus have? Four? Think again. What if you're viewing it from the side? Then perhaps it only has one side. If you're viewing it from within and it's very large, let's say it's the size of a playing field, then the number of sides might seem impossible to gauge. That's software, isn't it? Hard to work out? Lots of sides. Can be viewed from different angles.

Now, consider the Hexaflexagon. It has six sides and also six faces. Yet only two of the faces can be seen at once. If you wanted to explore the hexaflexagon, you'd have to do so interactively. This would take some time and it would not be automatable by computer... at least not in a way which fits the arbitrary definition of unit tests, regression tests and legacy code which we're imposing for the sake of argument, but also for the sake of all of our core assumptions that we're using to drive a stake through the heart of your process.

So, how do you see all the faces of a hexaflexagon simultaneously? You build it in one long strip which can be assembled into the hexaflexagon, but which can also be unravelled for piecemeal inspection by dumb testers - by which I mean xUnit, rather than some sort of unintelligent testing person. The ideal is to replace all testing people (who can prove that unit testing and automatic regression is only about 30% of the deal) with machines before anything can say "Quality's in the toilet and flushing".

Let's forget the fact that it's much harder to build a generic machine that can be used both in a test rig and in the real world simultaneously. Let's even forget that a fair amount of mock code, a lot of which is what the unit tests are actually testing (rather than the real code) has to be generated and may in fact not behave the same as the actual code. Let's forget all of that because it serves our purpose to do so. By making our machine in such a way that it can be hammered flat and played with in pieces, we can tick all the boxes and even get a computer to suggest that everything's working great all the time. Regardless of whether it is. By our definition, we've avoided legacy (bad) and improved quality (good).

Ignore the fact that all of this takes longer and proves nothing. This approach may be "ecchi", but it's not icky!


Anonymous nadin said...

is a concave 12 sides

9:26 PM  

Post a Comment

<< Home