Sei sulla pagina 1di 48

INSTITUTO TECNOLGICO DE HUEJUTLA

INGENIERA EN SISTEMAS COMPUTACIONALES

INGENIERA DE SOFTWARE
PRESENTAMOS:

ENRIQUE BAUTISTA AZUARA * ELMER HERNNDEZ BAUTISTA * JOS LUIS VITE PREZ * RENE GUERRERO SANTIAGO * PEDRO HERNNDEZ NAVARRO

REINGENIERA DEL SOFTWARE

OBJETIVOS DE LA EXPOSICIN

Comprender los trminos bsicos de reingeniera de software

Aplicar tcnicas de Reingeniera para el mejoramiento de software existente as mismo utilizar mejores prcticas para el desarrollo de software

Si tu software fuera un edificio, se parecera mas a uno de la izquierda o de la derecha?

Qu malas prcticas de codificacin tendra un edificio como el de la izquierda?


Cdigo mutante. Diseo roto. El cdigo es antiguo y muy grande. Falta de planeacin y documentacin.

REDUCIR

REUSAR

RECICLAR

80 %

Del desarrollo de software es para mantenimiento. Por lo tanto se necesita de un cdigo simple, legible y bien diseado para que en un futuro pueda ser extensible.

MITO: Los programadores de ahora ya no programan como antes. ------------------------------Herramientas mas fciles y productivas.

El software es cada da mas complejo.

En el pasado las prioridades eran tener un cdigo rpido, pequeo (ocupa poca memoria),optimizado, utilizando los algoritmos mas eficaces etc Hoy en da el software es mas complejo pero a la vez hay herramientas mas poderosas, por lo que actualmente el enfoque es que este cdigo tiene que ser simple.

BENEFICIOS DEL CDIGO SIMPLE El cdigo es mas fcil de cambiar, evolucionar o arreglar (mas del 60 % de desarrollo de software es darle mantenimiento a software existente). Es mas fcil desarrollar de un modo iterativo e incremental. El cdigo es mas fcil de leer (entender).

Veamos en que consiste y quienes la aplican

Los principios en que se basa la reingeniera, lejos de responder ahora a una moda ms, revolucionan radicalmente la forma en que se ha diseado el trabajo en el siglo XX, y constituyen una alternativa permanente de efectividad organizacional para los ejecutivos. Todo esto provoco que para que las empresas se adaptaran y modificaran su entorno competitivo y dinmico aplicaran mecanismos de reingeniera para imponer un nuevo producto, proceso productivo o paradigma organizacional, constituyendo esto una nueva tendencia en el desarrollo de las organizaciones y que ha sido el resultado de los cambios cada vez ms rpidos en su entorno.

La aplicacin de la reingeniera en el software tambin estuvo sujeta a la evolucin por la que la organizacin ha pasado, la cual se enmarca en varias etapas donde cada una ha experimentado caractersticas o tendencias que la distinguen de las otras, por ejemplo, la llamada crisis del software, en cuyo escenario el hardware deja de ser un impedimento para el desarrollo de la informtica, al reducirse los costos y mejorarse la calidad y eficiencia en el software producido. La crisis se caracterizo por los siguientes problemas: Imprecisin en la planificacin del proyecto y estimacin de los costos. Baja calidad del software. Dificultad de mantenimiento de programas con un diseo poco estructurado, etctera.

A raz de esta crisis se vio la necesidad de crear estndares de desarrollo de software. Esto dio lugar a lo que hoy llamamos "Ingeniera de software", la cual es el establecimiento y uso de principios de la ingeniera a fin de obtener econmicamente software que sea confiable y que funcione eficientemente. A pesar de la creacin de estos estndares, muchos de los sistemas que actualmente se realizan siguen siendo desarrollados y mantenidos sin aplicar ninguna practica de ingeniera de software, por lo que en la actualidad, muchas organizaciones se ven obligadas a seguir viviendo en esta crisis dado que sus sistemas son vitales para el funcionamiento de dichas organizaciones y estos no tienen la arquitectura orientada a objetos y muchas veces ni se logra concebir su documentacin.

Las organizaciones usualmente tienen un problema relacionado con el software, que es la existencia de un software que constituye su columna vertebral, pues ayuda a determinar los objetivos estratgicos y apoya la toma de decisiones. Estas aplicaciones en su gran mayora se realizaron en sistemas obsoletos, con funcionalidades que ya no son suficientes para modelar la nueva infraestructura de negocio que los rodea. Adems, cuando una aplicacin ha servido para necesidades del negocio durante varios aos, se vuelve inestable debido a las correcciones, adaptaciones y mejoras que se realizaron. Esto provoca cada vez que se intenta efectuar un cambio se produzcan efectos colaterales graves e inesperados.

Estas aplicaciones son llamadas Sistemas de informacin heredados

Qu es un Sistema Heredado?
Los sistemas heredados son sistemas informticos sociotcnicos que han sido desarrollados en el pasado, a menudo usando una tecnologa antigua y obsoleta. Estos sistemas no incluyen hardware y software sino tambin procesos y procedimientos heredados (antiguas formas de hacer cosas que son difciles de cambiar por que dependen de software heredado). Cambios en una parte del sistema inevitablemente implica cambios en otros componentes.

Una solucin para estos sistemas heredados es aplicar la Reingeniera del Software.

Jean Marc Von Der Weid propone las siguientes categoras de solucin al respecto:
MANTENIMIENTO: Es un proceso paulatino e iterativo en el

cual se hacen pequeas modificaciones al sistema.

MODERNIZACIN: Implica cambios mas extensos que el

mantenimiento pero conserva partes considerables del sistema existente.

REMPLAZARLO: Consiste en reconstruir el sistema desde los

inicios. esta solucin consiste en aplicarle al sistema actividades de reingeniera de software.

La decisin estara entonces determinada por una relacin de costo-beneficio, en cuyo caso cada organizacin tomara la decisin que le proporcione mayores beneficios en relacin con el costo que estn dispuestos a pagar para lograrlo.

UN CAMINO O EL CAMINO?

RESUMEN

La reingeniera es uno de los fenmenos gerenciales de mayor impacto en las ultimas dcadas, debido a que su rpida y abrumadora expansin ha provocado y continua ocasionando cambios de grandes dimensiones en muchas organizaciones. En especial, la aplicacin de la reingeniera en el software ha estado sujeta a la evolucin por la que han pasado los sistemas, lo cual se enmarca en varias etapas en las cuales cada una ha experimentado caractersticas o tendencias que la distinguen de las otras. Una de ellas es la llamada crisis del software. Seria poco productivo sostener con sistemas rgidos organizaciones que son dinmicas y mucho menos cuando en su mayora lo constituyen sistemas legados que han sido desarrollados por especialistas que ya no forman parte de la empresa, muchos, con tcnicas propias de programacin que no estn documentadas. Esta situacin va incidiendo de manera negativa en el buen desempeo de la organizacin, entonces, Qu decisin tomar para resolver el problema que tenemos?, Aplicamos reingeniera o seguimos desarrollando arreglos (parches) a estos sistemas ?

Definiciones de Reingeniera de Software

DEFINICIONES Y OBJETIVOS DE LA REINGENIERA DE SOFTWARE Reingeniera de Software es una forma de modernizacin para mejorar las capacidades y/o mantenibilidad de los sistemas de informacin heredados mediante la aplicacin de tecnologas y prcticas modernas. La Reingeniera de Software ofrece una disciplina de preparacin para migrar un sistema de informacin heredado hacia un sistema evolucionable. El proceso aplica principios de ingeniera para un sistema existente para encontrar nuevos requerimientos.
El instituto de Ingeniera de Software (SEI) desarrollo una definicin de Reingeniera como:
La reingeniera es la transformacin sistemtica de un sistema existente dentro de una nueva forma de realizar mejoramientos de calidad en una operacin, capacidad del sistema, funcionalidad, rendimiento o evolucionabilidad a bajo costo, agendas o riesgos para el cliente.

Para Roger Pressman una definicin completa de reingeniera implica: La reingeniera del software abarca una serie de actividades entre las que se incluye el anlisis de inventario, la reestructuracin de documentos, la ingeniera inversa, la reestructuracin de documentos, la ingeniera inversa, la reestructuracin de programas y datos, y la ingeniera directa. El objetivo de esas actividades consiste en crear versiones de los programas existentes que muestren una mayor calidad, y una mejor mantenibilidad.

NUESTRO CONCEPTO FINAL


La reingeniera de software ha tenido varios nombres como: modernizacin, transformacin, restructuracin, rediseo, aunque todos tienen metas comunes: Aumentar la capacidad para competir en el mercado mediante la reduccin de costos, el incremento en calidad y una mayor velocidad de respuesta. La reingeniera de software pretende cancelar dialcticamente los sistemas existentes; toma lo bueno que tienen y lo perfecciona, imposibles de mantener, y crea uno nuevo confiable, eficiente, eficaz y de fcil mantenimiento. .

Los genios copian, los grandes roban. Steve Jobs

Objetivos de la Reingeniera de Software

La reingeniera cuenta entre sus objetivos con: Proporcionar asistencia automatizada para el mantenimiento. Reducir los errores y costos del mantenimiento Incrementar la intercambialidad del grupo de mantenimiento. Hacer sistemas fciles de entender, cambiar y probar. Habilitar la conversin y migracin de sistemas. Reforzar el apego a estndares. Mejorar la respuesta a peticiones de mantenimiento. Mejorar el estado de animo del grupo de mantenimiento. Proteger y extender la vida del sistema. Usar CASE para apoyar sistemas existentes. Re-usar componentes de sistema existentes.

Cuando es necesaria la Reingeniera?

Los candidatos a la reingeniera aparecen usualmente si cumplen estas condiciones: Frecuentes fallas de produccin (fiabilidad cuestionable). Problemas de rendimiento. Tecnologa obsoleta. Problemas de integracin del sistema. Cdigo de calidad pobre. Dificultad (peligroso) al cambio. Dificultad para probar. Mantenimiento caro. Incremento de problemas del sistema

Co$tes y riesgos: Analizando Opciones

Los costes de la reingeniera obviamente dependen de la magnitud del trabajo que tiene que llevarse a cado, tal y como muestra la figura (Sommerville), los costes se incrementan desde la izquierda hacia la derecha para que la traduccin de cdigo fuente sea la opcin mas econmica.

Los principales factores que afectan a los costes de Reingeniera son (De acuerdo a sommerville):
1. La calidad del software sobre el que se va a hacer reingeniera. Cuanto mas baja sea la calidad del software y su documentacin asociada(si la hay), mas altos sern los costes de reingeniera. 2. Las herramientas de soporte disponibles para la reingeniera. Normalmente no es rentable hacer reingeniera sobre un sistema de software a menos que puedan utilizarse herramientas CASE para automatizar la mayor parte de los cambios en los programas. 3. La amplitud de la conversin de datos requerida. Si el sistema sobre el que se va a hacer reingeniera requiere que se conviertan grandes volmenes de datos. El coste del proceso se incrementa de forma significativa. 4. La disponibilidad del personal experto. Si el personal responsable de mantener el sistema no puede implicarse en el proceso de reingeniera, los costes se incrementaran debido a que los ingenieros encargados de la reingeniera tienen que invertir una gran cantidad de tiempo en comprender el sistema.

Ventajas y desventajas

Hacer Reingeniera de un sistema de software, segn Ian Sommerville, tiene dos ventajas clave sobre aproximaciones ms radicales a la evolucin del sistema: 1. Riego reducido. Existe un alto riesgo en volver a desarrollar software critico para los negocios. Pueden cometerse errores en la especificacin, o puede haber problemas en el desarrollo. Los retrasos en la introduccin del nuevo software pueden significar perdidas en el negocio e incurrir en costes adicionales. Por ejemplo, en 1999 una gran compaa de comida de EU tuvo retrasos en la introduccin de un nuevo sistema de pedidos, lo que condujo a retrasos en las entregas de productos valoradas en 100 millones de dlares en una estacin de mxima venta. 2. Coste reducido. El coste de hacer reingeniera es significativamente menor que el coste de desarrollar nuevo software. Ulrich cita un ejemplo de un sistema comercial en el que los costes de reimplementacin se estimaron en 50 millones de dlares. Al sistema se le aplico reingeniera con xito por 12 millones de dlares. Se presume que, con la tecnologa moderna del software, el coste relativo de la reimplementacion probablemente sea menor. Pero aun as supera de forma considerable los costes de la reingeniera.

DESVENTAJA

La principal desventaja de la reingeniera del software es que existen limites prcticos a la extensin del sistema que puede ser mejorada mediante reingeniera. No es posible. Por ejemplo, convertir un sistema diseado utilizando una aproximacin funcional en un sistema orientado a objetos. Los cambios arquitectnicos mayores o la reorganizacin radical de la gestin de datos del sistema no pueden realizarse de forma automtica, por lo que se incurrir en costes adicionales elevados. Aunque la reingeniera puede mejorar la mantenibilidad, el sistema al que se va a aplicar reingeniera probablemente no ser tan mantenible como un nuevo sistema desarrollado utilizando mtodos modernos de ingeniera de software.

Mtodos y herramientas

El mtodo Anlisis de Opciones para Reingeniera. (Options Analysis For Reingeneering (OAR))

El Anlisis de Opciones para Reingeniera [Clements] (OAR por sus siglas en ingles de Options Analysis for Rengineering) es un mtodo sistemtico, de arquitectura central y de toma de decisiones para la identificacin y extraccin de componentes dentro de grandes y complejos sistemas de software. La extraccin envuelve rehabilitacin de partes de un sistema viejo para su re-uso. OAR identifica componentes de arquitectura potencialmente relevantes y analiza los cambios requeridos para usarlos en una lnea de produccin de software o nuevas arquitecturas de software. En esencia, OAR proporciona un conjunto de opciones de extraccin junto con estimacin de costos, esfuerzo y riesgos asociados con estas opciones. El mtodo OAR consiste de cinco actividades principales con tareas escalables. Esas tareas son representadas en la siguiente figura.

El modelo Cclico

Este modelo define (De acuerdo a Pressman) 6 actividades las cuales se muestran a continuacin. En algunas ocasiones, estas actividades se producen de manera secuencial y lineal, pero esto no es siempre as.

Reingeniera segn IAN SOMMERVILLE

La reingeniera comienza con un sistema existente y el proceso de desarrollo para su reemplazo se basa en comprender y transformar el sistema original. La siguiente figura ilustra el proceso de reingeniera. La entrada del proceso es un programa heredado y la salida es una versin modularizada y estructurada del mismo programa.

Durante la reingeniera del programa, los datos del sistema tambin sufren reingeniera. Las actividades de este proceso de reingeniera son: 1. Traduccin del cdigo fuente. El programa es convenido desde un lenguaje de programacin antiguo a una versin ms moderna del mismo lenguaje o a un lenguaje diferente. 2. Ingeniera Inversa. El programa se analiza y se extrae informacin a partir de l. Esto ayuda a documentar su organizacin y funcionalidad. 3. Mejora de la estructura de los programas. La estructura de control del programa se analiza y modifica para hacerla ms fcil de leer y comprender. 4. Popularizacin de los programas. Se agrupan las panes relacionadas del programa y se elimina la redundancia en donde resulta adecuado. En algunos casos. esta etapa puede implicar una transformacin arquitectnica en la que un sistema centralizado pensado para una nica computadora se modifica para ejecutarse sobre una plataforma distribuida. 5. Reingeniera de datos. Los datos procesados por el programa se cambian para reflejar los cambios en l.

Conclusin General

Aunque la reingeniera se usa principalmente durante el mantenimiento del software, va mas all de una simple ayuda de mantenimiento. La reingeniera es el puente desde las viejas hacia las nuevas tecnologas que las organizaciones deben usar en la actualidad para responder al cambio de requerimientos del negocio. Los viejos programas representan la tecnologa de ayer, Ahora sabemos que los aos tienen cuatro dgitos y no dos, que los datos pueden ser manejados mejor en bases de datos y que tenemos nuevos diseos de construccin y lenguajes de programacin que permiten disear programas notablemente factibles. cuando el costo de mantener viejos edificios es excesivo, estos son reemplazados por otros nuevos. Nosotros deberamos hacer lo mismo con los programas. Los programas se hacen obsoletos al paso del tiempo ya que fueron escritos para hardware y sistemas operativos que ya no existen, donde muchos estn llenos de caractersticas y parches no documentados.

Referencias
Roger S. Pressman, Ingeniera de software un enfoque prctico. Ed. McGraw Hill. INGENIERA DEL SOFTWARE. Sptima edicin, lan Sommerville. PEARSON EDUCACIN, S.A., Madrid, 2005.

Potrebbero piacerti anche