Wednesday, February 13, 2008

Logic in Life and Software

Logic is a great thing. Arguably, the anchor of our mental health. Think about it: the logic, and mathematics as its subsection, describe the world the one and only way it can be. 2+2 is always 4; we cannot imagine a world in which 2+2 is 3, 5 or !@#$%.

Many things, though, are not bound by logic. One of them is the content of our speech. Recently one of the presidential candidates (guess who?) suggested that the government much track illegal immigrants. This statement triggered a loud applause of his excited audience, so this remarkable man continued his line of wisdom with the following: if the government cannot track illegal immigrants, this task should be outsourced to FedEx or UPS. After all, they track millions of packages every day... Even if we leave aside the moral aspects of this comparison, after a second or two of applying our innate capacity for logical thinking to this comparison we would see that the suggestion for the government to track illegal immigrants is akin to a statement that UPS and FedEx should track packages that have never been delivered through them.

Unfortunately, software requirements are as free from logical constraints as speech is. Throughout my career in software Quality Assurance and Testing I was confronted with requirements that contradict each other and even themselves.

The point of QA is not only to catch defects when they make it into a code. If we wish to be called Analysts and not Testers, we should conduct Requirements Reviews, apply our logic and try to find contradictions before they make it into the code. It’s usually quite simple: after all, there is a difference between QA Analyst and a cheering crowd :).




Technorati tags: , ;, , ,