Debugging Components, Component-based Systems, and Support Tools

TESTING can be described as a technique primarily used to discover that software fails, but finding a failure is only a first step toward improvement. To eliminate a software failure once it has been uncovered is called ‘debugging.’ Debugging, like most software terms involving ‘bug,’ is often misleading, because it suggests a minor correction to the code source. In reality the cause of failure is frequently an omission—the code fails because its author failed to provide for some circumstances, under which it failed. To search through source code looking for something that is not there is a good way to find nothing. It would be better to look at those places in the code where action should be, with an eye out to discover it is missing. Unfortunately, the code correction for an omission is not unique, seldom localized, and seldom small. This is another way of saying that many ‘bugs’ have no real existence: the failure is real and real work must be done to eliminate it, but the only localized cause is in human incompetence, impossible to ‘squash.’ One thing people are really good at is fastening a simple, misleading name on something complex, and ‘debugging’ is one of the best.