Tools, in any form, are used by human beings to increase their productivity. For instance, a software developer can write his code on a plain text editor. When he has to compile or debug his code, he will have to run the code against the compiler. His productivity can be increased if the text editor integrates with the compiler as he will now have a single interface to work with instead of two interfaces on two separate applications. If he is provided with a smart debugging facility that can provide detailed information about why and where his code is failing, he can quickly ˆx his code. ¡is will save a lot of time in debugging and thus increase his productivity (Figure 22.2).