UML Domine el lenguaje de modelado más utilizado en la actualidad
Ingeniería Inversa Nociones básicas La Ingeniería Inversa, también conocida como Ingeniería Reversa o simplemente Reingeniería, realiza las tareas opuestas a la Ingeniería Tradicional, ya que su obje tivo es obtener modelos de software a partir de código fuente. En realidad, tanto su entrada como su salida se defmen en términos más generales. La Ingeniería Inversa es el proceso de construir especificaciones de mayor nivel de abstracción partiendo de especificaciones con menor nivel. Una forma posible es obtener mode los a partir de código, pero también podemos conseguir, a partir de modelos bási cos, otros modelos que reflejen lo mismo pero desde un punto de abstracción mayor. El objetivo final de este tipo de ingeniería no es únicamente arribar con modelos semánticos, sino entender con más precisión y detalles sobre el comporta miento interno de un programa o entidad. Quizás el concepto parece novedoso, pero probablemente hemos utilizado algunas herramientas que se han nutrido de éste. Entre ellas, podemos mencionar Open Office. Estas aplicaciones podrían haber realizado Ingeniería Inversa sobre los forma tos de Microsoft Office, para así desarrollar aplicaciones y drivers que cumplieran con esas especificaciones. Otros proyectos que han llevado a cabo tareas similares son Samba, destinado a compartir archivos, o WINE, enfocado en las API de Windows. (11^ C X ,iJ Sup:;i’e5.op«noíhce.B9Í OpenOfflceog Home N9WS Donnioaa Suiipon ' Proi9cls : MyPages ACout « OpenOfficec F igu ra 10. Navegando por el sitio de las herram ientas Open Office. Existen contextos y situaciones dentro del proceso de desarrollo que son ideales para aplicar las técnicas de Ingeniería Inversa. Una de estas situaciones es cuando nos encargan realizar una modificación sobre un código que no hemos desarrollado pre viamente. A partir del código, es extremadamente difícil poder deducir relaciones entre clases e intentar adivinar la manera en que los datos se producen y modifican. 243
RkJQdWJsaXNoZXIy MjI4NDcx