In the current trend of evolutionary software life cycles and the reuse of software components, great emphasis is put onto the reverse engineering and reengineering of existing software systems. This paper presents a classification of commercial tools that support reverse engineering and reengineering activities. The tools are classified according to the domains of their application: maintenance, reverse design, redocumentation, metrics analysis, restructuring, objectification, reusable component extraction, etc. Also presented is a general framework for the process of reverse engineering tool evaluation and selection by a potential user with emphasis on the criteria for their quantitative evaluation.