The navigator is part of the browser that controls what you are browsing. Many times it includes lists to select the category, class, protocol, and selector. It is separated from the code tools so that many different code tools can use the same navigator. This picture shows a navigator that is in a separate window.
Code tools are the part of the browser that is at the bottom of the screen. The refactoring browser separates code tools from the navigational part of the browser so that different code tools can be used with each navigator. For example, this is a code tool that is in a separate window from the navigator and is viewing the class hierarchy graphically:
Here's another code tool that is viewing the ClassNavigator's windowSpec method:
Object-oriented languages are touted as promoting software reuse. However, object-oriented software is usually not reusable when it is first written. Reusable software is the result of several design iterations involving different applications that reuse a common body of code. As the code is incorporated in the different applications, reusability problems become apparent and the body of code must be altered. Each iteration becomes easier and easier as the common code becomes more and more reusable.
Since these iterations involve not only new code but also existing code, care must be taken when altering the common body of code. The changes that are made must be behavior-preserving as not to break the existing applications. These behavior-preserving manipulations that change the design of the resuable code are known as refactorings. Refactorings are typically design-level changes that facilitate the reuse of the software without altering the behavior.