The term reverse engineering means to take something apart to see how it works. It is a very broad term. The military routinely takes apart captured weapon systems to see how they work. Companies routinely take apart their competitor's products to see how they work. Curious, or unscrupulous, programmers often reverse engineer (de-compile) complied programs to learn how they work.
In the database context, reverse engineering means to automatically generate the blueprint (i.e., ER Diagram) for an existing database. It is frequently easier to understand how an existing database works by looking at its diagram instead of its individual tables, relationships, queries, ...
In the database context, forward engineering (or code generation) means to convert an ER Diagram into the actual SQL DDL statements that can be used to physically construct the new database.
The Professional Edition of Visio can reverse engineer all of the major database products: Oracle, SQL Server, DB2, Access, etc. The much more expensive Enterprise Edition can also do forward engineering. Microsoft's Visual Studio Enterprise Architect can also do forward engineering.