Вы находитесь на странице: 1из 12

Reingeniera e Ingeniera de reverso.

Reingeniera del software se puede definir como: modificacin de un producto software, o de ciertos componentes, usando para el anlisis del sistema existente tcnicas de Ingeniera Inversa y, para la etapa de reconstruccin, herramientas de Ingeniera Directa, de tal manera que se oriente este cambio hacia mayores niveles de facilidad en cuanto a mantenimiento, reutilizacin, comprensin o evaluacin. La Ingeniera de Reverso es lo opuesto a la generacin de cdigo: el cdigo fuente del sistema es examinado, analizado y convertido en entidades en el repositorio. Entre las tcnicas de Reingeniera tenemos: Reestructuracin de Datos: Esto es reversar el modelo fsico al modelo lgico para obtener el modelo de E-R de la base de datos, recuperando el diccionario de datos, atributos, entidades, dominios, cardinalidad entre otros, la mayora de las herramientas CASE del mercado cumplen con esta funcin. Reestructuracin de Cdigo: Llevar a cabo esta actividad requiere analizar el cdigo fuente empleando una herramienta de reestructuracin, de no tener el cdigo fuente disponible puede aplicarse ingeniera inversa sobre el compilado para obtener el cdigo fuente original siempre y cuando la licencia del software lo permita, inmediatamente se indican las violaciones de las estructuras de programacin estructurada u orientada a objetos, y entonces se reestructura el cdigo (esto se puede hacer automticamente). El cdigo reestructurado resultante se revisa y se comprueba para asegurar que no se hayan introducido anomalas. Se actualiza la documentacin interna del cdigo. Reingeniera del software se puede definir como: modificacin de un producto software, o de ciertos componentes, usando para el anlisis del sistema existente tcnicas de Ingeniera Inversa y, para la etapa de reconstruccin, herramientas de Ingeniera Directa, de tal manera que se oriente este cambio hacia mayores niveles de facilidad en cuanto a mantenimiento, reutilizacin, comprensin o evaluacin. Cuando una aplicacin lleva siendo usada aos, es fcil que esta aplicacin se vuelva inestable como fruto de las mltiples correcciones, adaptaciones o mejoras que han podido surgir a lo largo del tiempo. Esto deriva en que cada vez que se pretende realizar un cambio se producen efectos colaterales inesperados y hasta de gravedad, por lo que se hace necesario, si se prev que la aplicacin seguir siendo de utilidad, aplicar reingeniera a la misma. Entre los beneficios de aplicar reingeniera a un producto existente se puede incluir: Pueden reducir los riegos evolutivos de una organizacin. Puede ayudar a las organizaciones a recuperar sus inversiones en software. Puede hacer el software ms fcilmente modificable Ampla las capacidades de las herramientas CASE Es un catalizador para la automatizacin del mantenimiento del software Puede actuar como catalizador para la aplicacin de tcnicas de inteligencia artificial para resolver problemas de reingeniera La reingeniera del software involucra diferentes actividades como son:

anlisis de inventarios

reestructuracin de documentos ingeniera inversa reestructuracin de programas y datos ingeniera directa con la finalidad de crear versiones de programas ya existentes que sean de mejor calidad y los mismos tengan una mayor facilidad de mantenimiento.

Figure 1 Figura 1. Pasos de la Reingeniera del Software Anlisis de Inventarios Todas las organizaciones de software deberan tener un inventario de todas sus aplicaciones. El inventario tal vez no sea ms que un modelo en una hoja de clculo que contenga informacin que proporcione una descripcin detallada (tamao, edad, importancia para el negocio) de las aplicaciones activas. Los candidatos a la reingeniera aparecen cuando se ordena esta informacin en funcin de su importancia para el negocio, longevidad, mantenibilidad actual y otros criterios localmente importantes. Es entonces cuando es posible asignar recursos a las aplicaciones candidatas para el trabajo de reingeniera. Es importante sealar que el inventario deber visitarse con regularidad, el estado de las aplicaciones puede cambiar en funcin del tiempo y, como resultado, cambiarn las prioridades para la reingeniera. Reestructuracin de documentos La documentacin dbil es la marca de muchos sistemas heredados. Pero que se hace acerca de ellos? Cules son las opciones? Crear documentacin consume mucho tiempo, si el sistema funciona vivir con lo que tenga. La documentacin debe actualizarse pero se tiene recursos limitados. Se utiliza un enfoque de documentar cuando se toque. El sistema es crucial para el negocio y debe volver a documentarse por completo incluso en este caso un enfoque inteligente es recortar la documentacin a un mnimo esencial. Cada una de estas opciones es viable. Una organizacin de software debe elegir la ms apropiada para cada caso. Ingeniera Inversa Este trmino tiene sus orgenes en el mundo del hardware. Una cierta compaa

desensambla un producto de hardware competitivo en un esfuerzo por comprender los secretos del diseo y fabricacin de su competidor. Estos secretos se podrn comprender ms fcilmente si se obtuvieran las especificaciones de diseo y fabricacin del mismo. Pero estos documentos son privados, y no estn disponibles para la compaa que efecta la ingeniera inversa. En esencia, una ingeniera inversa con xito precede de una o ms especificaciones de diseo y fabricacin para el producto, mediante el examen de ejemplos reales de ese producto. La ingeniera inversa del software es algo similar. En la mayora de los casos, el programa del cual hay que hacer una ingeniera inversa no es el de un rival, sino, ms bien, el propio trabajo de la compaa. Los secretos que hay que comprender resultan incomprensibles porque nunca se lleg a desarrollar una especificacin. Consiguientemente, la ingeniera inversa del software es el proceso de anlisis de un programa con el fin de crear una representacin de programa con un nivel de abstraccin ms elevado que el cdigo fuente. La Ingeniera inversa es un proceso de recuperacin de diseo. Con las herramientas de la ingeniera inversa se extraer del programa existente informacin del diseo arquitectnico y de proceso, e informacin de los datos. Reestructuracin de cdigo El tipo ms comn de reingeniera es la reestructuracin de cdigo, se puede hacer con mdulos individuales que se codifican de una manera que dificultan comprenderlos, probarlos y mantenerlos. Llevar a cabo esta actividad requiere analizar el cdigo fuente empleando una herramienta de reestructuracin, se indican las violaciones de las estructuras de programacin estructurada, y entonces se reestructura el cdigo (esto se puede hacer automticamente). El cdigo reestructurado resultante se revisa y se comprueba para asegurar que no se hayan introducido anomalas. Se actualiza la documentacin interna del cdigo. Reestructuracin de datos La reestructuracin de datos es una actividad de reingeniera a gran escala. En la mayora de los casos, la reestructuracin de datos comienza con una actividad de ingeniera inversa. La arquitectura de datos actual se analiza con minuciosidad y se define los modelos de datos necesarios, se identifican los objetivos de datos y los atributos, y despus se revisa la calidad de las estructuras de datos existentes. Cuando la estructura de datos es dbil (por ejemplo, actualmente se implementan archivos planos, cuando un enfoque relacional simplificara muchsimo el procesamiento), se aplica una reingeniera a los datos. Dado que la arquitectura de datos tiene una gran influencia sobre la arquitectura del programa, y tambin sobre los algoritmos que lo pueblan, los cambios en datos darn lugar invariablemente a cambios o bien de arquitectura o bien de cdigo. Ingeniera directa En un mundo ideal, las aplicaciones se reconstruyen utilizando un motor de reingeniera automatizado. En el motor se insertara el programa viejo, que lo analizara, reestructurara y despus regenerara la forma de exhibir los mejores aspectos de la calidad del software. Despus de un espacio de tiempo corto, es probable que llegue a aparecer este motor, pero los fabricantes de CASE han presentado herramientas que proporcionan un subconjunto limitado de estas capacidades y que se enfrentan con dominios de aplicaciones especficos. Lo que es ms importante, estas herramientas de reingeniera cada vez son ms

sofisticadas. La ingeniera directa no solo recupera la informacin de diseo a partir del software existente, tambin utiliza esta informacin para alterar o reconstruir el sistema existente con la finalidad de mejorar su calidad global. En la mayora de los casos el software sometido a reingeniera vuelve a implementar la funcin del sistema existente y tambin aade nuevas funciones o mejoras. La ingeniera inversa se ha definido como el proceso de construir especificaciones de un mayor nivel de abstraccin partiendo del cdigo fuente de un sistema software o cualquier otro producto (se puede utilizar como punto de partida cualquier otro elemento de diseo, etc.). Estas especificaciones pueden volver ser utilizadas para construir una nueva implementacin del sistema utilizando, por ejemplo, tcnicas de ingeniera directa. Beneficios de Ingeniera Inversa La aplicacin de ingeniera inversa nunca cambia la funcionalidad del software sino que permite obtener productos que indican cmo se ha construido el mismo. Se realiza permite obtener los siguientes beneficios: Reducir la complejidad del sistema: al intentar comprender el software se facilita su mantenimiento y la complejidad existente disminuye. Generar diferentes alternativas: del punto de partida del proceso, principalmente cdigo fuente, se generan representaciones grficas lo que facilita su comprensin. Recuperar y/o actualizar la informacin perdida (cambios que no se documentaron en su momento): en la evolucin del sistema se realizan cambios que no se suele actualizar en las representaciones de nivel de abstraccin ms alto, para lo cual se utiliza la recuperacin de diseo. Detectar efectos laterales: los cambios que se puedan realizar en un sistema puede conducirnos a que surjan efectos no deseados, esta serie de anomalas puede ser detectados por la ingeniera inversa. Facilitar la reutilizacin: por medio de la ingeniera inversa se pueden detectar componentes de posible reutilizacin de sistemas existentes, pudiendo aumentar la productividad, reducir los costes y los riesgos de mantenimiento. La finalidad de la ingeniera inversa es la de desentraar los misterios y secretos de los sistemas en uso a partir del cdigo. Para ello, se emplean una serie de herramientas que extraen informacin de los datos, procedimientos y arquitectura del sistema existente. Tipos de Ingeniera Inversa La ingeniera inversa puede ser de varios tipos: Ingeniera inversa de datos: Se aplica sobre algn cdigo de bases datos (aplicacin, cdigo SQL, etc) para obtener los modelos relacionales o sobre el modelo relacional para obtener el diagrama entidad-relacin Ingeniera inversa de lgica o de proceso: Cuando la ingeniera inversa se aplica sobre cdigo de un programa para averiguar su lgica o sobre cualquier documento de diseo para obtener documentos de anlisis o de requisitos. Ingeniera inversa de interfaces de usuario: Se aplica con objeto de mantener la lgica interna del programa para obtener los modelos y especificaciones que sirvieron de base para la construccin de la misma, con objeto de tomarlas como punto de partida en procesos de ingeniera directa que permitan modificar dicha interfaz.

Herramientas para la Ingeniera Inversa Los Depuradores Un depurador es un programa que se utiliza para controlar otros programas. Permite avanzar paso a paso por el cdigo, 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 lgico del programa. Un punto de ruptura (breakpoint) es una instruccin al depurador que permite parar la ejecucin del programa cuando cierta condicin se cumpla. Por ejemplo, cuando un programa accede a cierta variable, o llama a cierta funcin de la API, el depurador puede parar la ejecucin del programa. Algunos depuradores de Windows son: OllyDbg es un potente depurador con un motor de ensamblado y desensamblado integrado. Tiene numerosas otras caractersticas incluyendo un precio de 0 $. Muy til para parcheado, desensamblado y depuracin. WinDBG es una pieza de software gratuita de Microsoft que puede ser usada para depuracin local en modo usuario, o incluso depuracin remota en modo kernel. Las Herramientas de Inyeccin de Fallos Las herramientas que pueden proporcionar entradas malformadas con formato inadecuado a procesos del software objetivo para provocar errores son una clase de herramientas de insercin de fallos. Los errores del programa pueden ser analizados para determinar si los errores existen en el software objetivo. Algunos fallos tienen implicaciones en la seguridad, como los fallos que permiten un acceso directo del asaltante al ordenador principal o red. Hay herramientas de inyeccin de fallos basados en el anfitrin que funcionan como depuradores y pueden alterar las condiciones del programa para observar los resultados y tambin estn los inyectores basados en redes que manipulan el trfico de la red para determinar el efecto en el aparato receptor. Los Desensambladores Se trata de una herramienta que convierte cdigo mquina en lenguaje ensamblador. El lenguaje ensamblador es una forma legible para los humanos del cdigo mquina. Los desensambladotes revelan que instrucciones mquinas son usadas en el cdigo. El cdigo mquina normalmente es especfico para una arquitectura dada del hardware. De forma que los desensambladotes son escritor expresamente para la arquitectura del hardware del software a desensamblar. Algunos ejemplos de desensambladores son: IDA Pro es un desensamblador profesional extremadamente potente. La parte mala es su elevado precio. PE Explorer es un desensamblador que se centra en facilidad de uso, claridad y navegacin. No es tan completo como IDA Pro, pero tiene un precio ms bajo. IDA Pro Freeware 4.1 se comporta casi como IDA Pro, pero solo desensambla cdigo para procesadores Intel x86 y solo funciona en Windows. Bastard Disassembler es un potente y programable desensamblador para Linux y FreeBSD. Ciasdis esta herramienta basada en Forth permite construir conocimiento sobre un cuerpo de cdigo de manera interactiva e incremental. Es nico en que todo el cdigo

desensamblado puede ser re-ensamblado exactamente al mismo cdigo. Los compiladores Inversos o Decompiladores Un decompilador es una herramienta que transforma cdigo en ensamblador o cdigo mquina en cdigo fuente en lenguaje de alto nivel. Tambin existen decompiladores que transforman lenguae intermedio en cdigo fuente en lenguaje de alto nivel. Estas herramientas son sumamente tiles para determinar la lgica a nivel superior como bucles o declaraciones if-then de los programas que son decompilados. Los decompiladores son parecidos a los desensambladotes pero llevan el proceso un importante paso ms all. Algunos decompiladores pueden ser: DCC Decompiler es una exacelente perspectiva terica a la descompilacin, pero el descompilador slo soporta programas MSDOS. Boomerang Decompiler Project es un intento de construir un potente descompilador para varias mquinas y lenguajes. Reverse Engineering Compiler (REC) es un potente descompilador que descompila cdigo ensamblador a una representacin del cdigo semejante a C. El cdigo est a medio camino entre ensamblador y C, pero es mucho ms legible que el ensamblador puro. Las Herramientas CASE Las herramientas de ingeniera de sistemas asistida por ordenador (Computer-Aided Systems Engineering CASE) aplican la tecnologa informtica a las actividades, las tcnicas y las metodologas propias de desarrollo de sistemas para automatizar o apoyar una o ms fases del ciclo de vida del desarrollo de sistemas. En el caso de la ingeniera inversa generalmente este tipo de herramientas suelen englobar una o ms de las anteriores junto con otras que mejoran el rendimiento y la eficiencia. Reingeniera de Software Se puede definir como el proceso completo de convertir elcdigo de programa al diseo CASE, modificar el diseo yvolver a generar el nuevo cdigo. El termino se usa endistintas reas de la ingeniera, programacin y negocios. 15. Reingeniera de software Con respecto a los negocios, es una forma de darle una nuevaorientacin a los procesos claves de una organizacin, de estamanera el rol de los analistas de sistemas radica en el uso detecnologas de informacin novedosas, como consecuencia alos cambios requeridos. 16. Beneficios de la Reingeniera de Software Entre los beneficios de aplicar reingeniera a un producto existente se puede incluir: Pueden reducir los riegos evolutivos de una organizacin. Puede ayudar a las organizaciones a recuperar sus inversiones en software. Puede hacer el software ms fcilmente modificable. 17. Beneficios de la Reingeniera de Software Ampla las capacidades de las herramientas CASE. Es un catalizador para la automatizacin del mantenimiento del software. Puede actuar

como catalizador para la aplicacin de tcnicas de inteligencia artificial para resolver problemas de reingeniera. 18. Pasos para la Reingeniera de software 19. Pasos para la Reingeniera de Software Anlisis de inventario: Todas las organizaciones de software deberan tener un inventario de todas sus aplicaciones. Los candidatos a la reingeniera aparecen cuando se ordena esta informacin en funcin de su importancia para el negocio, longevidad, mantenibilidad actual y otros criterios localmente importantes. Es importante sealar que el inventario deber visitarse con regularidad, el estado de las aplicaciones puede cambiar en funcin del tiempo y, como resultado, cambiarn las prioridades para la reingeniera. 20. Pasos para la Reingeniera de Software Restauracin de documentos: La documentacin debe actualizarse pero se tiene recursos limitados. Se utiliza un enfoque de documentar cuando se toque. El sistema es crucial para el negocio y debe volver a documentarse por completo incluso en este caso un enfoque inteligente es recortar la documentacin a un mnimo esencial. Cada una de estas opciones es viable. Una organizacin de software debe elegir la ms apropiada para cada caso. 21. Pasos para la Reingeniera de Software Ingeniera Inversa: La Ingeniera inversa es un proceso de recuperacin de diseo. Con las herramientas de la ingeniera inversa se extraer del programa existente informacin del diseo arquitectnico y de proceso, e informacin de los datos. 22. Pasos para la Reingeniera de Software Restructuracin de cdigos: Llevar a cabo esta actividad requiere analizar el cdigo fuente empleando una herramienta de reestructuracin, se indican las violaciones de las estructuras de programacin estructurada, y entonces se reestructura el cdigo (esto se puede hacer

automticamente). El cdigo reestructurado resultante se revisa y se comprueba para asegurar que no se hayan introducido anomalas. 23. Pasos para la Reingeniera de Software La reestructuracin de datos: Es una actividad de reingeniera a gran escala. En la mayora de los casos, la reestructuracin de datos comienza con una actividad de ingeniera inversa. La arquitectura de datos actual se analiza con minuciosidad y se define los modelos de datos necesarios, se identifican los objetivos de datos y los atributos, y despus se revisa la calidad de las estructuras de datos existentes. 24. Pasos para la Reingeniera de Software Ingeniera directa: La ingeniera directa no solo recupera la informacin de diseo a partir del software existente, tambin utiliza esta informacin para alterar o reconstruir el sistema existente con la finalidad de mejorar su calidad global. En la mayora de los casos el software sometido a reingeniera vuelve a implementar la funcin del sistema existente y tambin aade nuevas funciones o mejoras.

Qu es un estndar? De acuerdo con la definicin de la Real Academia Espaola, estndar es aquello que sirve como tipo, modelo, norma, patrn o referencia. Qu es un estndar de calidad? Estndar de calidad es el que rene los requisitos mnimos en busca de la excelencia dentro de una organizacin institucional. Qu son los estndares bsicos de competencias? Son criterios claros y pblicos que permiten conocer lo que deben aprender nuestros jvenes, y establecen el punto de referencia en cada rea, ncleo de formacin o contenidos temticos, lo que estn en capacidad de saber y saber hacer en contexto situado. Qu es un estndar de calidad en la educacin? El estndar de calidad en la educacin se define como: Sealamiento de lo que la comunidad especializada considera que son las condiciones bsicas para que se merezca una investidura o ttulo universitario. A estas condiciones bsicas se les ha denominado estndares de calidad.1 La comunidad acadmica y los estndares de calidad El registro calificado es un proceso que est inscrito en el marco de la inspeccin y vigilancia
1

que debe realizar el estado para asegurar que los programas de la IES presten sus servicios. Slo si cumple con los estndares de calidad exigidos se otorgar este registro. Con este objetivo, los estndares de calidad han sido difundidos a toda la comunidad acadmica y trabajados siguiendo los parmetros establecidos en el Decreto 2566 de septiembre 10 de 2003, expedido por la Presidencia de la Repblica.

. Explique ejemplificando los estndares de calidad en el desarrollo de software.


Cuando se habla de calidad del software se hace referencia la conjunto de cualidades que determinan su utilidad. Es el grado en que un software cumple con los requisitos especificados. (eficiencia, flexibilidad, correccin, mantenimiento, seguridad e integridad.) La Calidad del software es medible y varia segn el tipo de sistema y de programa, por ejemplo: no es lo mismo un software para control de viajes especiales el cual debe ser confiable a un nivel de cero errores, que un software elaborado para la implementacin de un sistema de calidad (investigacin). Esta calidad puede ser inspeccionada al finalizar el producto, pero normalmente es mas costoso que realizarlo durante las diferentes etapas del ciclo de vida de produccin del producto.

Explique ejemplificando las herramientas case.


Las herramientas CASE (Computer Aided Software Engineering, Ingeniera de Software Asistida por Computadora) son diversas aplicaciones informticas destinadas a aumentar la productividad en el desarrollo de software reduciendo el coste de las mismas en trminos de tiempo y de dinero. Estas herramientas nos pueden ayudar en todos los aspectos del ciclo de vida de desarrollo del software en tareas como el proceso de realizar un diseo del proyecto, clculo de costes, implementacin de parte del cdigo automticamente con el diseo dado, compilacin automtica, documentacin o deteccin de errores entre otras. Sistema de software que intenta proporcionar ayuda automatizada a las actividades del proceso de software. Los sistemas CASE a menudo se utilizan como apoyo al mtodo. Objetivos 1.Mejorar la productividad en el desarrollo y mantenimiento del software. 2.Aumentar la calidad del software. 3.Reducir el tiempo y coste de desarrollo y mantenimiento de los sistemas informticos. 4.Mejorar la planificacin de un proyecto 5.Aumentar la biblioteca de conocimiento informtico de una empresa ayudando a la bsqueda de soluciones para los requisitos. 6.Automatizar el desarrollo del software, la documentacin, la generacin de cdigo,

las pruebas de errores y la gestin del proyecto. 7.Ayuda a la reutilizacin del software, portabilidad y estandarizacin de la documentacin 8.Gestin global en todas las fases de desarrollo de software con una misma herramienta. 9.Facilitar el uso de las distintas metodologas propias de la ingeniera del software. Clasificacion Aunque no es fcil y no existe una forma nica de clasificarlas, las herramientas CASE se pueden clasificar teniendo en cuenta los siguientes parmetros: 1.Las plataformas que soportan. 2.Las fases del ciclo de vida del desarrollo de sistemas que cubren. 3.La arquitectura de las aplicaciones que producen. 4.Su funcionalidad. La siguiente clasificacin es la ms habitual basada en las fases del ciclo de desarrollo que cubren: Upper CASE (U-CASE), herramientas que ayudan en las fases de planificacin, anlisis de requisitos y estrategia del desarrollo, usando, entre otros diagramas UML. Middle CASE (M-CASE), herramientas para automatizar tareas en el anlisis y diseo de la aplicacin. Lower CASE (L-CASE), herramientas que semi-automatizan la generacin de cdigo, crean programas de deteccin de errores, soportan la depuracin de programas y pruebas. Adems automatizan la documentacin completa de la aplicacin. Aqu pueden incluirse las herramientas de Desarrollo rpido de aplicaciones. Existen otros nombres que se le dan a este tipo de herramientas, y que no es una clasificacin excluyente entre s, ni con la anterior:

Integrated CASE (I-CASE), herramientas que engloban todo el proceso de desarrollo software, desde anlisis hasta implementacin. MetaCASE, herramientas que permiten la definicin de nuestra propia tcnica de modelado, los elementos permitidos del metamodelo generado se guardan en un repositorio y pueden ser usados por otros analistas, es decir, es como si definiramos nuestro propio UML, con nuestros elementos, restricciones y relaciones posibles. CAST (Computer-Aided Software Testing), herramientas de soporte a la prueba de software. IPSE (Integrated Programming Support Environment), herramientas que soportan todo el ciclo de vida, incluyen componentes para la gestin de proyectos y gestin de la configuracin. Por funcionalidad podramos diferenciar algunas como: Herramientas de generacin semiautomtica de cdigo. Editores UML. Herramientas de Refactorizacin de cdigo. Herramientas de mantenimiento como los sistemas de control de versiones Ejemplos:

Вам также может понравиться