RE:Como funciona ingenieria inversa,con que lengua
Lo habitual es hacer un diseño y luego el programa. Muchas veces se hace al revés, primero se programa y luego hay que hacer un diseño (para entregar al cliente, por ejemplo).
La ingeniería inversa consiste en partir del código fuente y sacar un diseño (diagramas de uml, etc).
Se puede hacer en cualquier lenguaje si lo haces a mano, aunque no te lo recomiendo.
Si quieres hacerlo con alguna herramienta automática. el código fuente tiene que ser en algún lenguaje que la herramienta entienda.
Ejemplos:
en C++ o java se puede usar "Together"
En C++ se puede usar "Rational Rose"
En Ada se puede usar "Teamwork"
etc, etc.
Se bueno