Beruflich Dokumente
Kultur Dokumente
Curso: Algoritmo y Estructura de Datos 1 Alumnos: Manuel Puntillo, Miguel Paz, Narciso Mori, Simn Mori, Jos Saravia, David Bravo.
La ingeniera inversa puede extraer informacin de diseo del cdigo fuente, pero el nivel de abstraccin, la completitud de la documentacin, el grado con el cual trabajan al mismo tiempo las herramientas y el analista humano, y de direccionalidad del proceso son sumamente variables [Cass, 1988].
Nivel de Abstraccin
El nivel de abstraccin de un proceso de ingeniera inversa y las herramientas que se utilizan para realizarlo aluden a la sofisticacin de la informacin de diseo que se puede extraer del cdigo fuente. El nivel de abstraccin ideal deber ser lo ms alto posible, es decir, el proceso de ingeniera inversa debe ser capaz de derivar: Sus representaciones de diseo de procedimiento (con un bajo nivel de abstraccin). La informacin de las estructuras de datos y de programas (un nivel de abstraccin ligeramente ms elevado). Modelos de flujo de datos y de control (un nivel de abstraccin relativamente alto). Modelos de entidades y de relaciones (un elevado nivel de abstraccin). Pgina 1 de 10
Completitud
Es un proceso de ingeniera inversa alude al nivel de detalle que se proporciona en un determinado nivel de abstraccin. En la mayora de los casos, la completitud decrece a medida que aumenta el nivel de abstraccin. Por ejemplo, dado un listado del cdigo fuente, es relativamente sencillo desarrollar una representacin de diseo de procedimientos completa. Tambin se pueden derivar representaciones sencillas de flujo de datos, pero es mucho ms difcil desarrollar un conjunto completo de diagramas de flujo de datos o un diagrama de transicin de datos. La completitud mejora en proporcin directa a la cantidad de anlisis efectuado por la persona que est efectuando la ingeniera inversa [Pressman, 2003].
Interactividad
La interactividad alude el grado con el cual el ser humano se integra con las herramientas automatizadas para crear un proceso de ingeniera inversa efectivo. En la mayora de los casos, a medida que crece el nivel de abstraccin, la interactividad deber incrementarse, o si no la completitud se ver reducida [Pressman, 2003].
Direccionalidad
Si la direccionalidad del proceso de ingeniera inversa es monodireccional, toda la informacin extrada del cdigo fuente se proporcionara a la ingeniera del software que podr entonces utilizarla durante la actividad de mantenimiento. Si la direccionalidad es bidireccional, entonces la informacin se suministrara a una herramienta de reingeniera que intentara reestructurar o regenerar el viejo programa [Pressman, 2003].
Pgina 2 de 10
Figura 1.1 El proceso de ingeniera inversa El ncleo de la ingeniera inversa es una actividad denominada extraccin de abstracciones. El ingeniero tiene que evaluar el viejo programa y a partir del cdigo fuente (que no suele estar documentado) tiene que extraer una especificacin significativa del procesamiento que se realizar, la interfaz de usuario que se aplica y las estructuras de datos de programa o de base de datos que se utiliza [Pressman, 2003]. Para el caso especfico de esta tesis, se analiz y se llevo a cabo la abstraccin para comprender el procesamiento, por lo tanto, solo trataremos esa parte del proceso de ingeniera inversa del software.
La funcionalidad general de todo el sistema de aplicaciones deber ser algo perfectamente comprendido antes de que tenga lugar un trabajo de ingeniera inversa ms detallado. Esto es lo que establece un contexto para un anlisis posterior, y se proporciona ideas generales acerca de los problemas de interoperabilidad entre aplicaciones dentro del sistema. Cada uno de los programas de que consta el sistema de aplicaciones Pgina 3 de 10
Reestructuracin
La transformacin desde una forma de representacin a otra en el mismo nivel de abstraccin, preservando las caractersticas externas del sistema (funcionalidad y semntica). *Chifofsky, 1990+ La reestructuracin del software modifica el cdigo fuente y/o los datos en un intento de adecuarlo a futuros cambios. En general, la reestructuracin no modifica la arquitectura global del programa. Tiene a centrarse en los detalles de diseo de mdulos individuales y en estructuras de datos locales definidas dentro de los mdulos. Si el esfuerzo de la reestructuracin se extiende ms all de los lmites de los mdulos y abarca la arquitectura del software, la reestructuracin pasa a ser ingeniera directa (forward engineering) [Pressman, 2003]. Arnold [Arnold, 1989] define un cierto nmero de beneficios que se pueden lograr cuando se reestructura el software: Programas de mayor calidad con mejor documentacin y menos complejidad, y ajustados a las prcticas y estndares de la ingeniera del software moderna. Reduce la frustracin entre ingenieros del software que deban trabajar con el programa, mejorando por tanto la productividad y haciendo ms sencillo el aprendizaje. Reduce el esfuerzo requerido para llevar a cabo las actividades de mantenimiento. Hace que el software sea ms sencillo de comprobar y de depurar.
Pgina 4 de 10
Redocumentacin
La redocumentacin es tambin una forma de ingeniera inversa. Es el proceso mediante el que se produce documentacin retroactivamente desde un sistema existente. Si la redocumentacin toma la forma de modificacin de comentarios en el cdigo fuente, puede ser considerada una forma suave de reestructuracin. Sin embargo, puede ser considerada como una sub-rea de la ingeniera inversa porque la documentacin reconstruida es usada para ayudar al conocimiento del programa. Se piensa en ella como una transformacin desde el cdigo fuente a pseudocdigo y/o prosa, esta ltima considerada como ms alto nivel de abstraccin que la primera. Aunque la aparicin de multitud de herramientas facilita las labores de la ingeniera inversa, es la labor humana (humanware) la decisiva a la hora de completar el estudio del sistema [Tilley, 1995].
Metodologa
Debido a que no hay un documento que especifique como es exactamente un proceso de ingeniera inversa, cada ingeniero de software que desea realizar un proceso de este tipo propone su propia metodologa. El Pgina 5 de 10
1. Definicin y delimitacin
Esta es la primera etapa del proceso de ingeniera inversa y es la que comprende la seleccin y evaluacin del o de los componentes a los que se les aplicar el proceso de ingeniera inversa. Geoserver fue escogido primeramente por ser una implementacin pblica que cumple con los requisitos que se necesitan para nuestra solucin. Algunos de estos requisitos es que est hecho en Java, es OpenSource, cumple con la especificacin que rige las implementaciones WFS, maneja peticiones por HTTP GET y HTTP POST.
2. Casos de Uso
Para el proceso de recoleccin de funcionalidades existentes se desarrollaron los casos de uso de las tres operaciones que soporta el WFS. La figura 1.3 muestra el diagrama de caso de uso que incluye a estas tres operaciones y despus estn los casos de uso de cada operacin. Pgina 6 de 10
Figura 1.3 Diagrama de caso de uso de las tres operaciones soportadas por el WFS
Pgina 7 de 10
Figura
Pgina 8 de 10
Pgina 10 de 10