2.3 Reingeniería Del Software

  • Published on
    26-Sep-2015

  • View
    29

  • Download
    2

Embed Size (px)

DESCRIPTION

2.3 Reingeniera Del Software

Transcript

<p>2.3 Reingeniera del Software</p> <p>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.</p> <p>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.</p> <p>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.</p> <p>Quin lo hace?</p> <p>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.</p> <p>Por quesimportante?</p> <p>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</p> <p>Cules son los Pasos?</p> <p>1.Define las Metas comerciales.2.Identifica y evala los procesos de negocios existentes.3.Crea Procesos Comerciales revisados que mejoren las metas comerciales.</p> <p>El Proceso de la Reingeniera del Software</p> <p>Acompaa el anlisis de inventarios.La reestructuracin de documentos.La ingeniera Inversa.La estructuracin de Programas y datos.La ingeniera directa.</p> <p>Cmo puedo estarsegurode que lo he hecho correctamente?</p> <p>Utilizando las mismas prcticas que se aplican en todos los procesos de ingeniera del software: Revisiones tcnicas formales. Revisiones especializadas. La comprobacin.</p> <p>Cul es el producto obtenido?</p> <p>El resultado final es un proceso de reingeniera de negocios y/o el softwarede reingeniera que lo soporta.</p> <p>REINGENIERIA DE PROCESOS DE NEGOCIOS.</p> <p>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.</p> <p>Procesos de Negocios</p> <p>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.</p> <p>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.</p> <p>Todo sistema es en realidad una jerarqua de subsistemas:</p> <p>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.</p> <p>Principios de reingeniera de procesos.</p> <p>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):</p> <p>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.</p> <p>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.</p> <p>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.</p> <p>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.</p> <p>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.</p> <p>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.</p> <p>Un modelo de RPN</p> <p>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.</p> <p>Reingeniera del Software:</p> <p>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.</p> <p>Qu se puede hacer?</p> <p>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.</p> <p>Mantenimiento del software:</p> <p>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.</p> <p>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 .</p> <p>Un modelo de procesos de reingeniera delsoftware:</p> <p>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.</p> <p>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.</p> <p>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.</p> <p>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.</p> <p>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.</p> <p>Reestructuracin de documentos.Una documentacin escasa es la marca de muchos sistemas heredados.</p> <p>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.</p> <p>Ventajas de la Ingeniera Inversa:</p> <p>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).</p> <p>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.</p> <p>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.</p> <p>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.</p> <p>TIPOS DE INGENIERIA INVERSA.</p> <p>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.</p> <p>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.</p> <p>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.</p> <p>HERRAMIENTAS PARA LA INGENIERIA INVERSA.</p> <p>Los Depuradores:Un depurador es un programa que se utiliza para controlar otros programas. Permite avanzar paso a paso por el cdigo, rastrear fallos, estable...</p>