“INGENIERÍA INVERSA DE SOFTWARE”

“El objetivo de la ingeniería inversa es obtener información o un diseño a partir de un producto accesible al público, con el fin de determinar de qué está hecho, qué lo hace funcionar y cómo fue fabricado.

Hoy en día (principios del siglo XXI), los productos más comúnmente sometidos a ingeniería inversa son los programas de computadoras y los componentes electrónicos, pero, en realidad, cualquier producto puede ser objeto de un análisis de Ingeniería Inversa.

La ingeniería inversa es un método de resolución. Aplicar ingeniería inversa a algo supone profundizar en el estudio de su funcionamiento, hasta el punto de que podamos llegar a entender, modificar y mejorar dicho modo de funcionamiento.

La ingeniería inversa no es un método de solución sino más bien de aprendizaje, como implica analizar un objeto hasta el punto de comprender cada uno de sus componentes y sus funciones entonces la cantidad de conocimientos obtenida será bastante, pero solo hemos aprendido, para solucionar el problema deberemos aplicar lo aprendido y comenzar de cero nuevamente.”

 

En este reto se va a poner a prueba, con los conocimientos que ya tenéis, vuestra capacidad para analizar e interpretar código creado por otros programadores.

Creo que con esta práctica os vais a dar cuenta de cuánto os queda por aprender, pero también de que con lo que hemos aprendido hasta ahora, ya os podéis manejar un poquito y leer códigos más complejos que los de las prácticas sin echaros las manos a la cabeza y pensar “Dios mío por dónde cojo ésto…”.

También lo hago para que veáis lo importante que es abordar un código bien estructurado, bien ordenado, bien comentado y optimizado.

Uno de los mejores recursos que tenemos (y que a veces desaprovechamos) para aprender es observar (ver y escuchar) y eso es lo que os quiero transmitir con este reto….el que perdáis el miedo a destripar el código de los demás…lo destripéis, lo mejoréis, lo modifiquéis para dar solución a vuestro proyecto. Recordad……tanto en ingeniería como en cualquier faceta de la vida….”no reinventéis la rueda”. No destinéis esfuerzos innecesarios y hacer algo que ya está hecho. Vivís en una sociedad en la que la información es de fácil acceso gracias a Internet. Pero ojo!! Aún habiendo muchas fuentes, muchas de ellas son falsas, otras poco rigurosas y tantas otras son copias unas de otras. Por ello, debéis ser críticos y saber distinguir entre tanta información para quedaros con la que realmente va a formar parte de vuestro aprendizaje.

Tras esta reflexión….vamos manos a la obra con el reto:

Debéis entrar en la web de la comunidad de Processing “OpenProcessing” y explorar entre los casi 3000 sketchs que hay.

Si pincháis sobre cualquiera de ellos, accederéis a él. Por ejemplo, el siguiente:

Una vez dentro del sketch, podemos simular su funcionamiento, pulsando sobre el botón de “play”

Viendo el resultado en el siguiente vídeo.

O bien pulsar en el icono de “código”

Viendo el código fuente del sketch:

Ahora lo voy a modificar en las líneas de código correspondientes para que:

  • el fondo pase a ser blanco.
  • los círculos generados serán de colores aleatorios

Es muy cómodo ya que podéis simular los cambios en tiempo real y ver los resultados de cada modificación.

Lo explico en el siguiente vídeo.

Y el resultado se puede apreciar en el siguiente vídeo.

Ahora elegid cualquier sketch de los ejemplos, analizar su funcionamiento, examinar su código e incorporarle modificaciones de color, fondo, velocidades, etc….