viernes, 1 de noviembre de 2013

INFORMACIÓN DE INGENIRÍA INVERSA





Beneficios de la ingeniería inversa

·         Reducir la complejidad del sistema: al intentar comprender el software se facilita su mantenimiento y la complejidad existente disminuye
·         Generar diferente alternativas: del punto de partida del proceso, principalmente código fuente, se generan representaciones graficas lo que facilita su comprensión
·         Recuperar o actualizar la información perdida (cambios que no se documentaron en sus momentos): en la evolución del sistema se realizan cambios que no se suele actualizar en las representaciones de nivel de abstracción más alto, para lo cual se utiliza la recuperación de diseño.
·         Detectar efectos laterales: los cambios que se puedan realizar en un sistema puede conducirnos a que surjan efectos no deseados, esta serie de anomalías pueden ser detectados por la ingeniería inversa.
·         Facilitar la reutilización: por medio de la ingeniería inversa se puede detectar componentes de posible reutilización de sistemas existente, pudiendo aumentar la productividad, reducir los costes y los riesgos de mantenimiento.

Tipos de ingeniería inversa

1.       Ingeniería inversa de interfaces de usuarios: Se aplica con objeto de mantener la lógica interna del programa para obtener los modelos y especificaciones que sirvieron de base para la construcción de la misma, con objeto de tomarlas como punto de partida en procesos de ingeniería directa que permitan modificar dicha interfaz

2.       Ingeniería inversa de datos: se aplica sobre algún código de base de datos (aplicación, código SQL, etc.) para obtener los modelos o sobre el modelo relacional para obtener el diagrama entidad- relación.

3.       Ingeniería inversa de lógica o de proceso: cuando la ingeniería inversa se aplica sobre códigos de un programa para averiguar su lógica o sobre cualquier documento de diseño para obtener documentos de análisis o de requisitos.

Herramientas para la ingeniería inversa:

1.       Los depuradores: Un depurador es un programa que se utiliza para controlar otros programas. Permite avanzar paso a paso por el código, rastrear fallos, establecer puntos de control y observar las variables y el estado de la memoria en un momento dado del programa que se esté depurando. Los depuradores son muy valiosos a la hora de determinar el flujo lógico del programa.

2.       Herramientas de inyección de fallos: las herramientas de inyección de fallos puede determinar entradas malformadas con formato inadecuado a proceso de software objetivo para provocar errores son una de clase de herramientas de inserción de fallos. los errores del programa puedes ser analizados para determinar si los errores existen en el  software objetico. Algunos fallos tienen implicaciones en la seguridad, como los fallos que permiten un acceso directo del asaltante al ordenador principal.

3.       Los desensambladores: se trata de una herramienta que convierte código máquina en lenguaje ensamblador. El lenguaje ensamblador es una forma legible para los humanos del código máquina. Los desensambladores revelan que instrucciones máquinas son usadas en el código.
El código máquina normalmente es específico para la arquitectura dada el hardware. De forma que los desensambladores son escritor expresamente para la arquitectura del hardware del software a desensamblar.

4.       Los descompiladores: un descompilador es una herramienta que transforma código en ensamblador o máquina en código fuente en lenguaje de alto nivel. También existen descompiladores que transforman lenguaje intermedio en código fuente en lenguaje de alto nivel. Estas herramientas son sumamente útiles para determinar la lógica a nivel superior como bucles o declaraciones if – then de los programas que son descompilados.

5.       Herramienta  CASE: Las herramientas de la ingeniería de sistemas asistidas por ordenador ( Computer – Aided Systems Engineering – CASE) aplican la tecnología informática a las actividades, las técnicas y las metodologías propias de desarrollo para automatizar o apoyar una o más fases del ciclo de vida del desarrollo de sistemas.


Reingeniería de Software.

se puede definir como el proceso completo de convertir el código de programa al diseño CASE, modificar el diseño y volver a generar el nuevo código . el termino se usa en distintas áreas de la ingeniería, programación, negocios.
En lo que respecta a los negocios, es una forma de darle una nueva orientación a los proceso claves de una organización, de esta manera el rol de los analistas de sistemas radica en el uso de tecnologías de información novedosas, como consecuencia a los cambios recurridos.

1 comentario:

  1. Un tema muy interesate , espero sigas informandonos con cosas asi , adelante .

    ResponderBorrar