In a recent webinar on test automation ROI, I mentioned that while quantitative evaluation of ROI in testing is indispensable, one should not neglect qualitative evaluation. In this blog I’d like to describe an unusual framework that considers qualitative evaluation in mathematical terms. It has direct applications to iterative reviews in test planning and project management – though today I’ll just describe the framework and its very interesting history.
If you’ve done any programming, you’ve used Boolean values: yes or no, 1 or 0, true or false – all are examples of Boolean values. Using two-valued logic, George Boole developed in the mid-19th century what is now called Boolean algebra as a way of evaluating discursive logic, which had until then been the province, in the West, of classical (Aristotelian) logic only. Seventy-five years later, Claude Shannon, an engineer at Bell Labs, realized that Boole’s logic provided the perfect syntax for electronic circuit design, and if you’re reading this on a computer screen you can say thanks to both Claude and George for the privilege.
Boolean algebra’s origins, however, are not so black and white. There’s an equation in Boolean algebra on which the whole is built:
x (1-x) = 0
It looks like something we’ve run into in high-school algebra, but Boole used a slightly different notation than what we’ve been taught. Boole meant to say something more like this: “x, and the difference between 1 and x, have nothing in common.” Or we might say, “the set of all elements in common between this, and everything but this, is the empty set”. The numeral 1 is the all, or universe; x is a particular entity in that universe; and (1-x) is everything else in that universe.
This “law of duality” and its explication were presented by Boole in 1854 in his Investigation into the Laws of Thought on Which Are Founded the Mathematical Theories of Logic and Probabilities, which Bertrand Russell described as “the work in which pure mathematics was discovered”. Surprisingly, the equation began as an encoding of spiritual understanding that he acquired in a vision at seventeen.
After several abortive attempts to share his insight with friends and clergymen, he recorded the meaning of that experience in the only language in which he believed it could never be misunderstood — mathematics. For him, the equation x(1-x)=0 did not encode a commandment, nor a revelation of truth, but a method of spiritual practice: one contemplates the nature of the All (represented by the numeral 1), and then oneself (represented by the variable x), while apprehending at once the difference between the two (represented by the expression 1-x). On recognizing that there is nothing in common between oneself, and the All minus oneself, one considers again the nature of the All, and so on. Through iterative practice one understands finally that Unity excludes nothing, including oneself.
In his book Boole wrote: “It appeared to me that, although Logic might be viewed with reference to the idea of quantity, it had also another and a deeper system of relations. If it was lawful to regard it from without, as connecting itself through the medium of Number with the intuitions of Space and Time, it was lawful to regard it from within, as based upon facts of another order which have their abode in the constitution of the Mind…”
Boole did not think of applying his algebra to circuit theory or computers. That had to wait for Bell Labs and Claude Shannon. But Boole’s friend Charles Babbage, the inventor of the analytical engine, which some claim was the first computer, would have loved to have seen how this all played out.