Scripting languages to build static reports and for filtering diagnostic output Ongoing documentation in HTML pages or Wikis Synoptic signature analysis, statistical analysis, and software visualization tools Reverse-engineering tools Operating-system-level tracing via truss or strace Search engines and tools to search for keywords in source files IDE file browsing Unit testing frameworks such as JUnit and CppUnit API documentation generation using tools such as Javadoc and doxygen Debuggers