1 / 52

REINGENIERIA DEL SOFTWARE

REINGENIERIA DEL SOFTWARE. INSTITUTO TECNOLOGICO DE TUXTEPEC. INGENIERIA EN SISTEMAS COMPUTACIONALES. UNIDAD N° 1 INTRODUCCIÓN A LA REINGENIERIA DEL SOFTWARE. CATEDRÁTICO: L.I. MARIA ELENA AGUILAR ESPEJO TUXTEPEC, OAX. A 24 DE ENERO 2011. REINGENIERIA DEL SOFTWARE. DEFINICIÓN.

miles
Download Presentation

REINGENIERIA DEL SOFTWARE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. REINGENIERIA DEL SOFTWARE INSTITUTO TECNOLOGICO DE TUXTEPEC INGENIERIA EN SISTEMAS COMPUTACIONALES UNIDAD N° 1 INTRODUCCIÓN A LA REINGENIERIA DEL SOFTWARE CATEDRÁTICO: L.I. MARIA ELENA AGUILAR ESPEJO TUXTEPEC, OAX. A 24 DE ENERO 2011.

  2. REINGENIERIA DEL SOFTWARE DEFINICIÓN UNIDAD N° 1 INTRODUCCIÓN SISTEMAS DE INFORMACIÓN HEREDADOS COSTOS Y BENEFICIOS DE LA REINGENIERIA

  3. REINGENIERIA DEL SOFTWARE CONCEPTO DE REINGENIERÍA DEL SOFTWARE La Reingeniería consiste en la automatización del mantenimiento del software. Es el proceso de examinar sistemas de software existentes y/o modificarlos con ayuda de herramientas de forma automática o semi-automática. Analiza sistemas existentes para entender su diseño y desarrollar estrategias para extraer y reutilizar componentes. Implica la rehabilitación y modernización de los componentes. DEFINICIÓN

  4. Ventajas de Utilizar Reingeniería: • Proporcionar asistencia automatizada a las tareas de mantenimiento y evolución del software. • Reducir errores y costes. • Mejorar los procesos de conversión y migración. • Extender el ciclo de vida de las aplicaciones. • Facilitar el entendimiento de los programas. REINGENIERIA DEL SOFTWARE

  5. Formas de Reingeniería del Software: • Análisis: Proceso de examinar sistemas existentes para entender mejor el sistema y sus componentes. • Reestructuración: Cambios en la forma del software (ej: código, documentación, datos) pero no su funcionalidad. • Ingeniería Inversa: Analizar el software y reconstruir las relaciones entre sus partes. • Migración: Conversión de software o actualización de tecnología. REINGENIERIA DEL SOFTWARE

  6. CRISIS DEL SOFTWARE: El término Crisis del Software identifica la precaria situación en la que se encuentra el desarrollo de software a comparación de otras disciplinas ante la demanda de nuevos sistemas. Es decir la dificultad en escribir programas libres de defectos, fácilmente comprensibles, y que sean verificables. REINGENIERIA DEL SOFTWARE

  7. Calendarización y Costos Difieren: REINGENIERIA DEL SOFTWARE

  8. La Productividad del Personal es Baja: REINGENIERIA DEL SOFTWARE

  9. Carece de Calidad: El tener errores provoca en los clientes insatisfacción y falta de confianza. REINGENIERIA DEL SOFTWARE

  10. Falta de Comunicación entre Cliente y Programador: REINGENIERIA DEL SOFTWARE

  11. Falta de Datos Históricos: REINGENIERIA DEL SOFTWARE

  12. Falta de Habilidad y experiencia en la Elaboración de Software: REINGENIERIA DEL SOFTWARE

  13. MITOS Y REALIDADES Mitos de Gestión de Software: Los gestores están bajo presión de cumplir con los presupuestos No debe retrasarse el proyecto Debe mejorar la calidad REINGENIERIA DEL SOFTWARE

  14. MITO: Tenemos un Libro de Estándares y Procedimientos el cual Proporciona todo lo que mi Gente Necesita Saber REALIDAD: Existe pero . . . ¿Se usa? ¿Conocen los trabajadores su existencia? ¿Refleja lo actual en desarrollo de Software? ¿Es completo? REINGENIERIA DEL SOFTWARE

  15. MITO: Mi gente dispone de las herramientas de desarrollo de software más avanzadas, después de todo, les compramos las computadoras mas modernas. REALIDAD: No solo la PC más grande y mejor te determina el software a realizar. Son más importantes las herramientas de Software (CASE) que el hardware en si para calidad y Productividad de Software. REINGENIERIA DEL SOFTWARE

  16. MITO: Si fallamos en la Planificación, podemos añadir más programadores y adelantar el tiempo perdido (Efecto de Horda Mongoliana). REALIDAD: El Proceso de Desarrollo no es una actividad mecánica. Tardará más la gente nueva en comunicarse y adaptarse al proyecto Se puede añadir gente de manera planificada y coordinada. REINGENIERIA DEL SOFTWARE

  17. MITOS DEL CLIENTE Un Cliente se crea falsas expectativas y finalmente queda insatisfecho con el que desarrolla el Software. REINGENIERIA DEL SOFTWARE

  18. MITO: Una declaración general de los objetivos es suficiente para comenzar a escribir los programas “Los Detalles más Adelante”. REALIDAD: Una mala definición al inicio es la principal causa de trabajar en balde el software. Es esencial una descripción formal y detallada del ambiente de la información, funciones, comportamiento, rendimiento, interfaces, ligaduras del diseño y criterios de validación. Se requiere una comunicación exhaustiva entre cliente y analista. REINGENIERIA DEL SOFTWARE

  19. MITO: Los requisitos del proyecto cambian continuamente pero los cambios pueden acomodarse fácilmente, ya que el software es flexible. REALIDAD: Los Requisitos cambian y el impacto del cambio varia según el momento del cambio. Impacto: 1x en Definición 1.5 a 6x en Desarrollo 60 a 100x después de la Entrega REINGENIERIA DEL SOFTWARE

  20. MITOS DE LOS DESARROLLADORES A principios de la informática, la programación era un Arte, las viejas formas y actitudes tardan en morir. REINGENIERIA DEL SOFTWARE

  21. MITO: Una vez que escribimos el programa y hacemos que funcione , nuestro trabajo ha terminado. REALIDAD: El 60 al 80% dedicado a un programa se realiza después de entregado al cliente. REINGENIERIA DEL SOFTWARE

  22. MITO: Hasta que no tengo el Programa “Ejecutando”, realmente no tengo forma de comprobar su calidad. REALIDAD: Desde el Principio debe aplicarse la REVISIÓN técnica formal, con ella se encuentran los Defectos / Errores . REINGENIERIA DEL SOFTWARE

  23. MITO: Lo único que se entrega al terminar el proyecto es el Programa Funcionando. REALIDAD: El Programa es solo una parte de los elementos del Software. La Documentación proporciona el fundamento para un Buen Desarrollo. Proporciona Guías para la Tarea del Mantenimiento. REINGENIERIA DEL SOFTWARE

  24. REINGENIERIA DEL SOFTWARE CONCEPTO: Un sistema heredado es un sistema antiguo que aún proporciona servicios esenciales de negocio. Los sistemas heredados no son sólo sistemas de software de aplicación. Son sistemas socio-técnicos, por lo que incluyen procesos de negocio, software de aplicación, software de apoyo y sistema hardware. Muchos sistemas heredados todavía se utilizan porque solucionan bien el problema y reemplazarlos sería demasiado costoso SISTEMAS HEREDADOS

  25. POR QUE APLICAR REINGENIERIA DEL SOFTWARE: Hoy en día el ritmo acelerado de los negocios es tan grande que muchas de las veces se culpa al personal o a la tecnología cuando las cosas no marchan bien; sin embargo quien realmente falla es la forma en qué se trabaja. Las tendencias de las Tres C´s, son las que están provocando estos cambios: Consumidores, competencia y Cambio. Consumidores:Hoy en día son los consumidores los que mandan pueden pedir al vendedor qué, cuando, como lo quieren, y en algunos casos hasta cuánto están dispuestos a pagar y de qué forma. REINGENIERIA DEL SOFTWARE

  26. Competencia: En el pasado la competencia era simple, en la actualidad, la competencia se da de diversas formas; en el precio, en el producto, en la calidad o el servicio previo, durante y posterior a la venta. Sin olvidar que la tecnología moderna ha introducido nuevas formas de competir y nueva competencia. Cambio: Las formas de cambiar han cambiado. Sobretodo se tiene que el cambio ahora se ha vuelto más esparcido y persistente; además, el ritmo del cambio se ha acelerado. La globalización, el avance tecnológico y la automatización. Por eso es que la única forma de afrontar este nuevo mundo es conociendo cómo hacer mejor el trabajo actual, lo cual se podrá realizar al analizar dicho trabajo. REINGENIERIA DEL SOFTWARE

  27. La globalización presenta nuevos retos a la forma de realizar negocios. El comercio y la industria deben cambiar, deben adaptarse y evolucionar hacia la nueva estructura del mercado. Lo anterior nos lleva a la raíz de la Reingeniería. La Reingeniería significa cambio radical. La tendencia de las organizaciones es evitar el cambio radical, la mejora continua esta mas de acuerdo con la manera como las organizaciones se entienden naturalmente con el cambio. La mejora continua hace hincapié en cambios pequeños, increméntales, pero se debe notar que el objeto es mejorar lo que una organización ya esta haciendo. REINGENIERIA DEL SOFTWARE

  28. QUE IMPLICA LA REINGENIERIA: Implica volver a crear y configurar de manera radical él o los sistemas de una a los efectos de lograr incrementos significativos, y en un corto período de tiempo, en materia de rentabilidad, productividad, tiempo de respuesta, y calidad, lo cual implica la obtención de ventajas competitivas. REINGENIERIA DEL SOFTWARE

  29. REINGENIERIA DEL SOFTWARE EN SOFTWARE QUE IMPLICA LA REINGENIERIA? La reingeniería del software involucra diferentes actividades como son: análisis de inventarios reestructuración de documentos ingeniería inversa reestructuración de programas y datos ingeniería 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.

  30. PASOS PARA LA REINGENIERIA DEL SOFTWARE REINGENIERIA DEL SOFTWARE

  31. COSTOS Y BENEFICIOS DE LA REINGENIERIA: DISTRIBUCION DEL COSTE DEL CICLO DE VIDA REINGENIERIA DEL SOFTWARE

  32. FACTORES DE LA REINGENIERÍA: • Inexistencia de métodos, técnicas y herramientas que puedan proporcionar una solución global al mantenimiento. • La complejidad de los sistemas se incrementa paulatinamente por la realización de continuas modificaciones. • La documentación del sistema es defectuosa o inexistente • Se considera el mantenimiento como una actividad poco creativa, a diferencia del desarrollo. • Las actividades del mantenimiento se suelen realizar bajo presión de tiempo. • Poca participación del usuario durante el desarrollo del sistema. REINGENIERIA DEL SOFTWARE

  33. ACTUACIONES PARA MANTENER LA OPERATIVIDAD DEL SOFTWARE: • Corrección de defectos en el software • Creación de nuevas funcionalidades en el software por nuevos requisitos de usuario • Mejora de la funcionalidad y del rendimiento REINGENIERIA DEL SOFTWARE

  34. TIPOS DE MANTENIMIENTO: Mantenimiento perfectivo: conjunto de actividades para mejorar o añadir nuevas funcionalidades requeridas por el usuario Mantenimiento adaptativo: es el conjunto de actividades para adaptar el sistema a los cambios (hardware o software) en su entorno tecnológico Mantenimiento correctivo: es el conjunto de actividades dedicadas a corregir defectos en el hardware o en el software detectados por los usuarios durante la explotación del sistema REINGENIERIA DEL SOFTWARE

  35. Mantenimiento preventivo: conjunto de actividades para facilitar el mantenimiento futuro del sistema TIPOS DE MANTENIMIENTO Y COSTES RELATIVOS REINGENIERIA DEL SOFTWARE

  36. DISTRIBUCION DEL TIEMPO EN TAREAS DE MANTENIMIENTO REINGENIERIA DEL SOFTWARE

  37. LA REINGENIERIA DEL SOFTWARE REINGENIERIA DEL SOFTWARE

  38. LA REINGENIERIA DEL SOFTWARE REINGENIERIA DEL SOFTWARE

  39. INGENIERIA DIRECTA: Corresponde al desarrollo de software tradicional. REESTRUCTURACION: Es la transformación de una forma de representación a otra en el mismo nivel de abstracción relativo, mientras se mantenga el comportamiento externo del sistema (funcionalidad y semántica). Es la modificación del software para hacerlo más fácil de entender y cambiar. INGENIERIA INVERSA Es el proceso de análisis de un sistema para identificar sus componentes e interrelaciones y crear representaciones del sistema en otra forma o a un nivel más alto de abstracción. REINGENIERIA DEL SOFTWARE

  40. JUSTIFICACIÓN DE LA REINGENIERÍA REINGENIERIA DEL SOFTWARE

  41. JUSTIFICACIÓN DE LA REINGENIERÍA REINGENIERIA DEL SOFTWARE

  42. ANÁLISIS DE LA CARTERA DE APLIACIONES REINGENIERIA DEL SOFTWARE se cotejan la calidad técnica y el valor de negocio de cada aplicación, con el objetivo de construir una lista de aplicaciones, ordenada según sus prioridades en el proceso de reingeniería. La calidad técnica de un producto es una medida relativa, dependiente de cada organización, que se calcula en función de diversas características (complejidad ciclomática o errores/KLDC, por ejemplo). Para cada variable que interviene en la calidad técnica se fijan unos límites inferior y superior (que representan los valores máximos y mínimo de calidad). Para hallar el nivel de calidad de la variable considerada se puede utilizar la siguiente formula:

  43. FORMULA PARA OBTENER LA CALIDAD TECNICA: Por ejemplo, si establecemos los valores mínimo y máximo de calidad en 0 y 7 errores por KLDC, y actualmente hay 3, Ci = 0.571. Asociando un punto de un plano para cada aplicación, e interpretando el valor de negocio y la calidad técnica como coordenadas de estos puntos, se puede representar como en el diagrama de la siguiente figura [Piat 00]: REINGENIERIA DEL SOFTWARE

  44. VALOR DE NEGOCIO Y LA CALIDAD TÉCNICA REINGENIERIA DEL SOFTWARE

  45. Las aplicaciones situadas en el cuadrante superior izquierdo tienen alta calidad y bajo valor de negocio, por lo que no requieren reingeniería; las situadas en el cuadrante inferior izquierdo tienen poco valor en ambos parámetros, por lo que pueden ser desarrolladas de nuevo o remplazadas por productos comerciales; las del superior derecho tienen un gran valor de negocio y alta calidad: se les puede aplicar reingeniería, pero sin excesiva prioridad; las del inferior derecho tienen alto valor de negocio y baja calidad técnica, por lo que serán las primeras candidatas a la reingeniería. REINGENIERIA DEL SOFTWARE

  46. ESTIMACION DE COSTO: REINGENIERIA DEL SOFTWARE Se realiza identificando y ponderando, mediante métricas adecuadas, todos los componentes del software que se van a modificar. Se deben considerar los costes de cada proyecto de reingeniería: si éstos son superiores a los beneficios, la reingeniería no será una alternativa viable y la aplicación deberá ser desarrollada de nuevo o bien adquirirse en el mercado. Para estimar los costes de la reingeniería, se tienen ciertas ventajas respecto a la misma estimación en proyectos de ingeniería directa: no se debe calcular factores influyentes como el número de líneas de código, sentencias ejecutables, elementos de datos, accesos a archivos, etc.

  47. Las medidas anteriores se pueden tomar directamente de la aplicación. • Se aconseja utilizar como variables para calcular los costes las que se ofrecen a continuación, y que deben ser debidamente ponderadas en función de su influencia en el coste total: • Número de líneas de código no comentadas. • Coste de los casos de prueba, que se calcula multiplicando el coste medio de cada caso de prueba por el número de éstos, que es función de la complejidad ciclomática del problema. REINGENIERIA DEL SOFTWARE

  48. Número de accesos a archivos, bases de datos y campos. En la ponderación de estas entradas/salidas consideramos la complejidad de las estructuras de información y el grado de independencia de la aplicación respecto de los datos. • Número de operaciones que realizan los usuarios de la aplicación, número de ventanas, número de informes, etc., para el caso de las interfaces de usuario. REINGENIERIA DEL SOFTWARE

  49. ESTIMACIÓN DE COSTO DE UN NUEVO SOFTWARE: REINGENIERIA DEL SOFTWARE MODELO COCOMO Para el calculo del costo de desarrollo de un nuevo software será necesario conocer el Esfuerzo, cuya formula general será la siguiente: Esfuerzo = α * (KLDC)b En donde. α y b: Son parámetros de ajuste según el tipo o modelo de desarrollo del proyecto. KLDC: Es el tamaño en miles de líneas de códigos.

  50. TIPOS DE DESARROLLO DE SOFTWARE Orgánico: Desarrollo de un entorno estable, con poca innovación técnica, con pocas presiones de tiempo y tamaño relativamente pequeño; KLDC<50. Empotrado: Desarrollo de software con requisitos muy restrictivos, con gran volatilidad de requisitos, complejo, en un entorno con gran innovación técnica. KLDC>50 Semilibre: Situaciones entre el modo Orgánico y el Empotrado. REINGENIERIA DEL SOFTWARE

More Related