14
2.3 Reingeniería del Software La ingeniería se produce en dos niveles distintos de abstracción. En el nivel de negocios, la reingeniería se concentra en el proceso de negocios con la intención de efectuar cambios que mejoren la competitividad en algún aspecto de los negocios. En el nivel del software, la reingeniería examina los sistemas y aplicaciones de información con la intención de reestructurarlos o reconstruirlos de tal modo que muestren una mayor calidad. ¿Qué es la Reingeniería? Tenga en consideración cualquier producto de tecnología que haya adquirido. Lo ve con regularidad, pero está envejeciendo. Se rompe con frecuencia, tarda en repararse y ya no representa la última tecnología. ¿Qué se puede hacer? Si el producto es de hardware, probablemente lo tirará y se comprará uno nuevo. Pero si es un software personalizado, no dispondrá la opción de tirarlo. Necesitará reconstruirlo. Creará un producto con una funcionalidad nueva, un mejor rendimiento y fiabilidad, y un mantenimiento mejorado. Eso es lo que llamamos reingeniería. ¿Quién lo hace? A nivel de negocio, la reingeniería es ejercida por especialistas de negocio (frecuentemente empresas de consultoría). A nivel de software, la reingeniería es ejecutada por ingenieros del software. ¿Por qué es importante?

2.3 Reingeniería Del Software

Embed Size (px)

DESCRIPTION

2.3 Reingeniería Del Software

Citation preview

2.3 Reingeniera del Software

La ingeniera se produce en dos niveles distintos de abstraccin. En elnivel de negocios, la reingeniera se concentra en el proceso de negocios con la intencin de efectuar cambios que mejoren la competitividad en algn aspecto de los negocios. En elnivel del software, la reingeniera examina los sistemas y aplicaciones de informacin con la intencin de reestructurarlos o reconstruirlos de tal modo que muestren una mayor calidad.

Qu es la Reingeniera?Tenga en consideracin cualquier producto de tecnologa que haya adquirido. Lo ve con regularidad, pero est envejeciendo. Se rompe con frecuencia, tarda enrepararse y ya no representa la ltima tecnologa.

Qu se puede hacer?Si el producto es de hardware, probablemente lo tirar y se comprar uno nuevo. Pero si es un software personalizado, no dispondr la opcin de tirarlo. Necesitar reconstruirlo. Crear un producto con una funcionalidad nueva, un mejor rendimiento y fiabilidad, y un mantenimiento mejorado. Eso es lo que llamamos reingeniera.

Quin lo hace?

Anivel de negocio, la reingeniera es ejercida por especialistas de negocio (frecuentemente empresas de consultora). A nivel de software, la reingeniera es ejecutada por ingenieros del software.

Por quesimportante?

Vivimos en un mundo en constante cambio.Lasdemandas de funciones de negocios y de tecnologa de informacin que las soportan estn cambiando a un ritmo que impone mucha presin competitiva en todas las organizaciones comerciales. Tanto los negocios como el software que soportan (o es) el negocio debern disearse una vez ms para mantener el ritmo

Cules son los Pasos?

1.Define las Metas comerciales.2.Identifica y evala los procesos de negocios existentes.3.Crea Procesos Comerciales revisados que mejoren las metas comerciales.

El Proceso de la Reingeniera del Software

Acompaa el anlisis de inventarios.La reestructuracin de documentos.La ingeniera Inversa.La estructuracin de Programas y datos.La ingeniera directa.

Cmo puedo estarsegurode que lo he hecho correctamente?

Utilizando las mismas prcticas que se aplican en todos los procesos de ingeniera del software: Revisiones tcnicas formales. Revisiones especializadas. La comprobacin.

Cul es el producto obtenido?

El resultado final es un proceso de reingeniera de negocios y/o el softwarede reingeniera que lo soporta.

REINGENIERIA DE PROCESOS DE NEGOCIOS.

La reingeniera constituye una recreacin y reconfiguracin de las actividades y procesos de la empresa, lo cual implica volver a crear y configurar de manera radical l o los sistemas de la compaa a los efectos de lograr incrementos significativos, y en un corto perodo de tiempo, en materia de rentabilidad, productividad, tiempo de respuesta, y calidad, lo cual implica la obtencin de ventajas competitivas.Reingeniera es el rediseo rpido y radical de los procesos estratgicos de valor agregado y de los sistemas, las polticas y las estructuras organizacionales que los sustentan para optimizar los flujos de trabajo y la productividad de una organizacin.

Procesos de Negocios

Entre los ejemplos de negocio se incluyen el diseo de un nuevo producto, la adquisicin de servicios y suministros, la contratacin de nuevos empleados o el pago a proveedores. Cada una requiere un conjunto de tareas y se basa en diversos recursos dentro del negocio.

Cada proceso de negocio posee un cliente bien definido -una persona o grupo que recibe el resultado (por ejemplo: una idea, un informe, un diseo, un productoX . Adems, los procesos de negocio cruzan los lmites organizativos. Requieren que distintos grupos de la organizacin participen en las tareas lgicamente relacionadas que definen el proceso.

Todo sistema es en realidad una jerarqua de subsistemas:

Cada uno de los sistemas de negocios (tambin llamados funcinde negocios)estn compuestos por uno o ms procesos de negocio, y cada proceso de negocio est definido por un conjunto de subprocesos.La RPN se puede aplicar a cualquier nivel de la jerarqua, pero a medida que se ampla el mbito de la RPN (esto es, a medida que se asciende dentro de la jerarqua) los riesgos asociados a la RPN crecen de forma dramtica. Por esta razn, la mayor parte de los esfuerzos de la RPN se centran en procesos o subprocesos individuales.

Principios de reingeniera de procesos.

En muchos aspectos, la RPN tiene un objetivoyun mbito idntico al proceso de la ingeniera de la informacin. Lo ideal sera que la RPN se produjera de forma descendente, comenzando por la identificacin de los objetivos principales del negocio,yculminando con una especificacin mucho ms detallada de las tareas que definen un proceso especfico de negocios.Hammersugiere una serie de principios que nos guiarn por las actividades de la RPN cuando se comienza en el nivel superior (de negocios):

Organizacin en torno a los resultados, no en torno a las tareas:Hay muchas compaas que poseen actividades de negocio compartimentadas, de tal modo que no existe una nica persona (u organizacin) que tenga la responsabilidad (o el control) de un cierto resultado de negocio. En tales casos, resulta difcil determinar el estado del trabajo e incluso ms difcil depurar los problemas de proceso cuando esto sucede. La RPN deber disear procesos que eviten este problema.Hay que hacer que quienes utilicen la salida del proceso lleven a cabo el proceso:El objetivo de esta recomendacin es permitir que quienes necesiten las salidas del negocio controlen todas las variables que les permitan obtener esa salida de forma temporalmente adecuada. Cuanto menor sea el nmero de personas distintas implicadas en el proceso, ms fcil ser el camino hacia un resultado rpido.Hay que incorporar el trabajo de procesamiento de informacin al trabajo real que produce la informacin pura. A medida que la TI se distribuye, es posible localizar la mayor parte del procesamiento de informacin en el seno de la organizacin que producelosdatos. Esto localiza el control, reduce el tiempo de comunicacin y la potencia de computacin se pone en manos de quienes tienen fuertes intereses en la informacin producida.

Hay que manipular recursos geogrficamente dispersos como si estuviesen centralizados. Las comunicaciones basadas en computadoras se han sofisticado tanto que es posible situar grupos geogrficamente dispersos en una misma oficina virtual. Por ejemplo, en lugar de emplear tres turnos de ingeniera en una nica localizacin, toda la compaa podr tener un turno en Europa, un segundo turno en Norteamrica y un tercer turno en Asia. En todos los casos, los ingenieros trabajarn durante el da y se comunicarn empleando redes de un elevado ancho de banda.

Hay que enlazar las actividades paralelas en lugar de integrar sus resultados. Cuando se utilizan diferentes grupos de empleados para realizar tareas en paralelo, es esencial disear un proceso que exija una continuacin en la comunicacin y coordinacin. En caso contrario, es seguro que se producirn problemas de integracin.

Hay que poner e1 punto de decisin en el lugar donde se efecta el trabajo, e incorporar el control al proceso. Dentro de la jerga del diseo del software, esto sugiere una estructura organizativa ms uniforme y con menos factorizacin.

Hay que capturar los datos una sola vez, en el lugar donde se producen. Los datos se debern almacenar en computadoras, de tal modo que una vez recopilados no sea necesario volver a introducirlos nunca.

Todos y cada uno de los principios anteriores representan una visin dotalmente general de la RPN. Una vez informados por estos principios, los planificadores denegocios y los diseadores de procesos debern empezar a procesar el nuevo diseo. En la seccin siguiente, se examinar el proceso de RPN ms detalladamente.

Un modelo de RPN

Al igual que la mayora de las actividades de ingeniera, la reingeniera de procesos de negocio es iterativa. Los objetivos de negocio,ylos procesos que los logran, debern adaptarse a un entorno de negocio cambiante. Por esta razn, no existe ni principio ni fin en la RPN -se trata de un proceso evolutivo.

Reingeniera del Software:

Este escenario resulta sumamente conocido: Una aplicacin ha dado servicio y ha cubierto las necesidades del negocio de una compaa durante diez o quince aos. A lo largo de este tiempo, ha sido corregida, adaptadaymejorada muchas veces. Las personas se dedicaban a esta tarea con la mejor de sus intenciones, pero las prcticas de ingeniera del software buenas siempre se echaban a un lado (por la urgencia de otros problemas). Ahora la aplicacin se ha vuelto inestable. Sigue funcionando, pero cada vez que intenta efectuar un cambio se producen efectos colaterales graves e inesperados.

Qu se puede hacer?

La imposibilidad de mantener el software no es unproblema nuevo. De hecho, el gran inters por la reingeniera del software ha sido generado por un iceberg de mantenimiento de software que lleva creciendo desde hace ms de treinta aos.

Mantenimiento del software:

Hace casi treinta aos, el mantenimiento del softwaresecaracterizabapor ser como un iceberg.Esperbamos que lo que era inmediatamente visible fuera de verdad lo que haba, pero sabamos que una enormemasa de posibles problemas y costes yaca pordebajo de la superficie.Aprincipios de los aos 70, el iceberg demantenimiento era lo suficientemente grande como para hundir un portaaviones. En la actualidad podra hundir toda la Armada.

El mantenimiento del software existente puede dar cuenta de ms del 60 por 100 de las inversiones efectuadas por una organizacin de desarrollo, y ese porcentaje sigue ascendiendo a medida que se produce ms software. Los lectores que tengan menos conocimientos en estos temas podran preguntarse por qu se necesita tanto mantenimiento, y por qu se inviertetanto esfuerzo.Gran parte del software del que dependemos en la actualidad tiene por trmino medio entre diez y quince aos de antigedad. Auncuando estos programas se crearon empleando las mejores tcnicas de diseo y codificacin conocidas en su poca (y la mayora no lo fueron), se crearon cuando el tamao de losprogramas y el espacio de almacenamiento eran las preocupaciones principales. Acontinuacin, se trasladaron a las nuevas plataformas, se ajustaron para adecuarlos a cambios de mquina y de sistemas operativos y se mejoraron para satisfacer nuevas necesidades del usuario; y todo esto se hizo sin tener en cuenta la arquitectura global.Elresultado sonunas estructuras muy mal diseadas, una mala codificacin, una lgica inadecuada, y una escasa documentacin de lossistemas de software que ahora nos piden que mantengamos en marcha .

Un modelo de procesos de reingeniera delsoftware:

La reingeniera requiere tiempo; conlleva un coste de dinero enorme y absorbe recursos que de otro modo podran emplearse en preocupaciones ms inmediatas. Por todas estas razones, la reingeniera no se lleva a cabo en unos pocos meses, ni siquiera en unos pocos aos. La reingeniera de sistemas de informacin es una actividad que absorber recursos de las tecnologas de la informacin durante muchos aos. Esta es la razn por la cual toda organizacin necesita una estrategia pragmtica para la reingeniera del software.

El paradigma de la reingeniera mostrado en la figura es un modelo cclico. Esto significa que cada una de las actividades presentadas como parte del paradigma puede repetirse en otras ocasiones. Para un ciclo en particular, el proceso puede terminar despus de cualquierade estas actividades.

Anlisis de inventario.Todas las organizaciones de software debern disponer de un inventario de todas sus aplicaciones. El inventario puede que no sea ms que una hoja de clculo con la informacin que proporciona una descripcin detallada (por ejemplo: tamao, edad, importancia para el negocio) de todas 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 destacar que el inventario deber revisarse con regularidad. El estado de las aplicaciones (por ejemplo, la importancia con respecto al negocio) puede cambiar en funcin del tiempo y, como resultado, cambiarn tambin las prioridades para la reingeniera.

Reestructuracin de documentos.Una documentacin escasa es la marca de muchos sistemas heredados.

Ingeniera inversa:Es 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.

Ventajas de la Ingeniera Inversa:

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).

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 INGENIERIA INVERSA.

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 INGENIERIA 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.

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 desensambladores 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 desensambladores son escritor expresamente para la arquitectura del hardware del software a desensamblar.

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 de compiladores que transforman lenguaje 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 descompilados. Los descompiladores son parecidos a los desensambladores pero llevan el proceso un importante paso ms all.

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.

REESTRUCTURACION DEL SOFTWARE.La reestructuracin del software modifica el cdigo fuente y/o los datos en un intento de adecuarlo a futuros cambios. Tiende a centrarse en los detalles de diseo de mdulos individuales y en estructuras de datos locales definidas dentro de los mdulos. Los beneficios dela reestructuracin son:

Programas de mayor calidad con mejor documentacin y menos complejidad, y ajustados a las prcticas y estndares de la ingeniera del software moderno.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 es ms sencillo de comprobar y depurar.La reestructuracin se produce cuando la arquitectura bsica de la aplicacin es slida, aun cuando sus interioridades tcnicas necesiten un retoque. Comienza cuando existen partes considerables del software que son tiles todava y solamente existe un subconjunto de todos los mdulos y datos querequieren una extensa modificacin.1.del cdigo.2.de datos.Reestructuracin del cdigo.La reestructuracin del cdigo se lleva a cabo para conseguir un diseo que produzca la misma funcin pero con mayor calidad que el programa original.Reestructuracin de datos.Primero se realiza el ANALISIS del cdigo.Se evalan las definiciones de los datos, archivos, O/I e Interfaces.Extraer elementos y objetos de datos para obtener informacin del flujo de datos y comprender la estructura.

Ingeniera directa(forward engineering):En un mundo ideal, las aplicaciones sereconstruyen utilizan utilizando un motor de reingeniera automatizado. En el motor se insertma el programa viejo, que lo analizara, reestructurma 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 (por ejemplo, aplicaciones que han sido implementadas empleando un sistema de bases de datos especfico). Lo que es ms importante, estas herramientas de reingeniera cada vez son ms sofisticadas.La ingeniera directa, que se denomina tambinrenovacinoreclamacin,no solamente recupera la informacin de diseo de un software ya existente, sino que, adems, utiliza esta informacin para alterar o reconstruir el sistema existente en un esfuerzo por mejorarsucalidad global. En la mayora deloscasos, el software procedente de una reingeniera vuelve a implementar la funcionalidad del sistema existente, y aade adems nuevas funciones y/o mejora el rendimiento global.