Ingenieria inversa
Nadie pone en duda la importancia de la ingeniería como disciplina del conocimiento humano. Pero pocas personas saben que esta disciplina posee una contraparte: la llamada ingeniería inversa.
El objetivo de la ingeniería, es desarrollar la solución a un problema a partir de la nada. En cambio, la ingeniería inversa propone solucionar ese mismo problema, pero a partir de algunatecnología existente, cuyo funcionamiento no se conoce (al menos no totalmente), pero que se sabe tiene el potencial de resolverlo total o parcialmente.
Si bien no existe una licenciatura en ingeniería inversa, es un hecho que muchos ingenieros dedican su vida profesional a esta disciplina. Pero, curiosamente, muy poco o nada se habla de ella en los currículos universitarios, y no se lesenseña a los nuevos ingenieros.
De hecho, en muchos círculos el hablar de ingeniería inversa todavía es un tabú, y si bien se sabe y se acepta que la mayor parte de las empresas la utilizan, nadie quiere reconocerlo abiertamente.
Hasta ahora, hemos utilizado el término ingeniería inversa sin una definición clara, ingeniería inversa es el proceso mediante el cual una tecnología o producto esdesarmado, con el fin de conocer los componentes que lo integran y la forma en que éstos interactúan, para lograr finalmente una comprensión cabal de su modo de funcionamiento, con el objetivo probable de construir una tecnología similar. La ingeniería inversa toma un producto cuyo formato presenta un bajo grado de abstracción, y obtiene una nueva presentación del mismo, con una abstracción mayor. Sinduda, cada rama del conocimiento ha desarrollado sus propias técnicas de ingeniería inversa.
Por ejemplo, en el caso de la química, el análisis espectro gráfico de los componentes que forman una sustancia (digamos, un fármaco) puede utilizarse para crear una sustancia similar. En la mecánica, el desensamblado de un mecanismo permite al ingeniero ver las partes que lo integran, sus medidas, losmateriales de que está hecho, etc. de modo que esté en condiciones de crear un clon del mismo. En las ingenierías aeronáutica y naval suceden cuestiones similares: tómese como ejemplo la película La caza al Octubre Rojo, donde el ejército norteamericano realiza todo tipo de esfuerzos para hacerse de un submarino ruso que instrumenta una nueva tecnología de navegación subacuática. Se conocen casos deaeronaves de cualquiera de las dos superpotencias, que han sido capturadas por la otra para analizar su funcionamiento.
La computación no es una excepción a todo lo anterior, y también ha desarrollado técnicas de ingeniería inversa, mismas que se pueden clasificar en dos categorías:
Ingeniería inversa de hardware, que tiene más que ver con la disciplina de la ingeniería electrónica, quepropiamente con las ciencias de la computación.
Ingeniería inversa de software, que es realmente la que nos interesa en el contexto de esta investigación.
La mayoría de los proyectos de software desarrollados por estudiantes de nivel licenciatura son construidos mediante una implementación directa, con poco nivel de análisis y diseño. Esta forma de desarrollo no demuestra un enfoque de ingeniería, yprincipalmente no incluye una documentación útil que facilite los tratamientos futuros. Bajo este enfoque de desarrollo, se corre el riesgo de generar costumbres inadecuadas en el estudiante sobre la organización y la calidad en el desarrollo de sistemas grandes.
El desarrollo de software con poco análisis y diseño, no es un mal hábito del estudiante sino una consecuencia de la estructuracurricular. La mayoría de los programas educativos, para los primeros semestres del plan de estudios, tienen una estructura curricular orientada a la enseñanza de la programación. Durante estos primeros semestres, la atención está orientada en generar la lógica de programación, y en conocer las características de un lenguaje. En los cursos de programación, aún cuando para aprobar el curso se les...
Regístrate para leer el documento completo.