Model-driven reverse engineering and program comprehension: An example
Ingeniería reversa y comprensión de programas dirigida por modelos: Un ejemplo
En este artículo se presenta un ejemplo que describe cómo la Ingeniería Dirigida por Modelos (IDM) puede ser aplicada al desarrollo de herramientas para la ingeniería reversa y comprensión de programas. Se seleccionó como caso de estudio la herramienta CodeCrawler, específicamente la funcionalidad denominada polymetric view, desarrollada mediante tecnologías y técnicas de la IDM. Para ello, se emplearon dos metamodelos (entrada y salida) y transformaciones a nivel de los metamodelos que permiten generar la información de un polymetric view asociado a un proyecto de software, utilizando la información extraída del código fuente. Las tecnologías utilizadas para el desarrollo del ejemplo, las relacionadas con el Eclipse Modeling Project, específicamente el lenguaje de transformación ATL y el lenguaje KM3. El enfoque seguido para obtener la implementación resultante puede ser utilizado para desarrollar una herramienta de ingeniería reversa y comprensión de software mediante técnicas de la IDM, incorporando el vocabulario del dominio en la implementación.
INTRODUCCIÓN
La evolución del software es uno de los problemas más importantes y recurrentes de la ingeniería del software. Esto es consecuencia de los rápidos cambios que se han producido en las últimas décadas, tanto a nivel tecnológico como en los métodos y técnicas de desarrollo de software; en consecuencia, las técnicas que soportan la evolución del software son una necesidad, especialmente para el software de gran tamaño (millones de líneas de código).
Hoy en día, como los cambios tecnológicos son tan rápidos, algunas tecnologías se quedan obsoletas rápidamente, incluso antes de alcanzar un nivel de madurez adecuado. El paradigma orientado a objetos (OO) se consideraba una solución para varios problemas de evolución y mantenimiento del software, pero la evidencia empírica está demostrando que el OO está creando nuevos problemas de evolución y debe utilizarse con cuidado para que la complejidad del mantenimiento no sea mayor que la de los sistemas tradicionales.
Además, el concepto de software heredado ha cambiado con el tiempo. En los sistemas de producción del mundo industrial, donde están los sistemas en producción, el término legado se ha convertido en algo habitual. En los últimos años, se ha convertido en normal utilizar el término "legado" para calificar el software Java o C++, y por ello puede decirse que la evolución del software OO y el software tradicional (código no estructurado en COBOL o similar) tienen el mismo nivel de importancia. En el pasado, el software heredado eran sistemas monolíticos, mientras que hoy en día casi todo el software es una combinación de componentes distribuidos, que utilizan tecnologías de middleware estándar y marcos empresariales, lo que provoca problemas en el proceso de evolución y mantenimiento.
Recursos
-
Formatopdf
-
Idioma:inglés
-
Tamaño:145 kb