Evolución del software

Slides:



Advertisements
Presentaciones similares
EL PROCESO DE DESARROLLO DEL SOFTWARE
Advertisements

Ciclo de vida de desarrollo de software
SISTEMAS DE INFORMACIÓN EN LAS ORGANIZACIONES
CICLO DE VIDA DEL DESARROLLO DE SOFTWARE
PROCESO Y MODELOS EN LA INGENIERIA DE SOFTWARE
METODOLOGÍAS ÁGILES “PROCESO UNIFICADO ÁGIL (AUP)
Procesos de Software.
Administración de Procesos de Pruebas
Versión 2004 Enrique Bañuelos Gómez
Pierre Sergei Zuppa Azúa Administración de sistemas versus administración de servicios.
HERRAMIENTAS CASE.
Historia Síntomas Factores de Influencia Posibles Causas
ADMINISTRACIÓN DE REQUERIMIENTOS
DISEÑO DE SOFTWARE 1ª. Parte
DATA WAREHOUSE Equipo 9.
Ciclo de Vida del Software Paradigmas de Desarrollo
Ingeniería de Requisitos
MANTENIMIENTO PRODUCTIVO TOTAL (TPM)
GESTION DEL CAMBIO Los presencia continua de competencia, la internacionalización económica y la aparición de nuevas tecnologías de información e informática.
Administración Proyectos Jorge Baracaldo Robin Ochoa.
Ingeniería de Software
REINGENIERIA Alumno: Ronald Marquez A.W. Modulo: Ing. Software.
Gestión de la Configuración
Diseño del servicio ITIL..
Sistemas Basados en Conocimiento (Knowledge Based Systems) Lic. Mario G. Oloriz Agosto 2004.
Importancia en la efectividad del:
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
(GESTIÓN DE PROCESOS DE NEGOCIO)
VISIÓN GENERAL DE LA IS Con independencia del modelo de proceso hay tres fases genéricas: Fase de definición Fase de desarrollo Fase de mantenimiento Cada.
MANTENIMIENTO.
Diseño de Sistemas Expertos
INGENIERÍA DEL SOFTWARE GESTIÓN DE PROYECTOS
INGENIERIA DE SOFTWARE
Alexander Aristizabal Ángelo flores herrera
Proveedores de servicios externos
Diseño de Sistemas.
 Sara Isabel Osorio Alcaraz Ana Isabel Vallejo Grisales 10 Informática 1.
Guía metodológica para la gestión de proyectos de software en PyMEs que no son fábricas de software por medio de metodologías ágiles Tatiana Alejandra.
TIPOS DE AUDITORÍAS EN SISTEMAS DE INFORMACIÓN
Proceso de desarrollo de software Pablo Gervás F. Informática, UCM, noviembre 2007.
METODOLOGÍAS ÁGILES “PROCESO UNIFICADO ÁGIL (AUP)
Ingeniería de Requerimientos
PROCESOS DE DESARROLLO DE SOFTWARE
Simón Esneider Herrera Álvarez Media Técnica Casd 10-2
Ingeniería del Software I
MANTENIMIENTO.
La reingenieria del software Integrantes: Marcela Avila Beltran Anderson Hortua Cruz Michael Mendoza Gomez.
Estructurar tus ideas para hacerlas realidad
G ESTIÓN DE LA C ONFIGURACIÓN DEL S OFTWARE G ESTIÓN DE LA C ONFIGURACIÓN DEL S OFTWARE Daniel Eduardo Almeciga Angie Katterine Cruz O. Diego Fernando.
Originalmente desarrollado, por el profesor Robert Kaplan de Harvard y el consultor David Norton de la firma Nolan & Norton, como un sistema de evaluación.
Ingeniería en Informática F UNDAMENTOS DE C OMPUTACIÓN B ACHILLERATO EN I NGENIERÍA I NFORMÁTICA L IC. C ARLOS H. G UTIÉRREZ L EÓN.
Un requerimiento es una condición o capacidad a la que el sistema (siendo construido) debe conformar [ Rational ]. Un requerimiento de software puede.
De Informaciòn Gerencial Lcda. Oly Mata.
DESARROLLO DE SOFTWARE Cuando se va desarrollar un software intervienen muchas personas como lo es el cliente quien es el que tiene el problema en su.
Organización y Métodos. ©Ian Sommerville 1995 Ingeniería de Software, 5a. edición Capitulo 4 Diapositiva * Ingeniería de Requerimientos ● Estableciendo.
Proceso de desarrollo de Software
Marco de Trabajo para Indexación, Clasificación y Recopilación Automática de Documentos Digitales Javier Caicedo Espinoza Gonzalo Parra Chico.
Fundamentos de Computación
Taller de investigación 1
RAPID APPLICATION DEVELOPMENT RAD. Proceso de RAD Involucrar en todos los aspectos al usuario en el desarrollo del sistema Uso continuo y repetitivo de.
Software de Comunicaciones
Modelo de procesos de software
Planificación de Sistemas de Información
CICLO DE VIDA DE UN SOFTWARE. Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados, que forman parte de.
INNOVACIÓN Y CAMBIO EN LAS ORGANIZACIONES
Programa Sobre Procesos de Negocios SCM y Logística. Integración de procesos que permite a empresas en crecimiento implementar las mejores prácticas en.
Verificación y Validación del Software
VERIFICACIÓN Y VALIDACIÓN DE SISTEMAS 3.10 Fase de manejo de requerimientos 4.1 Modelado de pruebas en UML Ponente: ing. Alejandro tapia vazquez.
Entregables del Proyecto
INSTITUTO TECNOLÓGICO DE JIQUILPAN REQUISITOS PARA LA IMPLEMENTACIÓN DE COBIT Integrantes: Ariel Alejandro Sánchez Valencia. Javier Cervantes Higareda.
Transcripción de la presentación:

Evolución del software

Objetivos Explicar porque el cambio es inevitable si se quiere mantener útiles a los sistemas de software. Discutir el mantenimiento del software y los factores de costo de dicho mantenimiento. Describir el proceso de evolución del software Discutir un enfoque de asistencia para las estrategias de evolución para sistemas heredados

Tópicos cubiertos Dinámica de evolución de programas Mantenimiento de software Procesos de evolución Evolución de sistemas heredados

El cambio en el software El cambio en el software es inevitable Surgen nuevos requerimientos cuando el software se usa El entorno del negocio cambia Los errores deben de repararse Nuevas computadoras y equipos son añadidos al sistema El desempeño o la fiabilidad del sistema tal vez necesite mejorar Un problema clave para las organizaciones es implementar y administrar cambios a sus sistemas de software existentes.

Importancia de la evolución Las organizaciones han realizado grandes inversiones en sus sistemas de software – son activos de negocio críticos Para mantener el valor de estos activos para el negocio, deben de cambiarse y actualizarse En las grandes compañías, la mayor parte del presupuesto del software se dedica a la evolución de software existente más que a la creación de nuevo software

Modelo en espiral de la evolución

Dinámica de evolución de programas Dinámica de evolución de programas es el estudio de los procesos de cambios del sistema Posterior a grandes estudios empíricos, Lehman y Belady propusieron que existían un número de ´leyes´ que se aplicaban a todos los sistemas a medida que evolucionan. Se tratan de reflexiones sensatas mas que leyes. Se aplican a sistemas grandes desarrollados por grandes organizaciones. Tal vez es menos aplicable en otros casos.

Leyes de Lehman

Aplicabilidad de las leyes de Lehman Las leyes de Lehman parecen ser de aplicación general para sistemas de medida grandes desarrollados por grandes organizaciones Confirmado en trabajos más recientes de Lehman en el proyecto FEAST (ver más de esto en el libro en el website) No está claro cómo se debería modificar para Productos de software comerciales Sistemas que incorporan un número significativo de componentes COTS Organizaciones pequeñas Sistemas de mediano tamaño

Mantenimiento de Software Modificar un programa después de haber sido puesto en uso El mantenimiento normalmente no hace referencia a cambios mayores en la arquitectura del sistema Los cambios se implementan al modificar componentes existentes y añadir nuevos componentes al sistema

El mantenimiento es inevitable Los requerimientos del sistemas son propensos a cambiar a medida que el sistema esta siendo desarrollado porque el entorno está cambiando. Por tanto, ¡un sistema entregado no se ajustará a sus requerimientos! Los sistemas están estrechamente asociados a su entorno. Cuando el sistema se instala en un entorno, cambia ese entorno y por tanto cambia los requerimientos del sistema Los sistemas deben mantenerse si quieren mantenerse útiles en un entorno.

Tipos de mantenimiento Mantenimiento para reparar defectos del software Cambiar un sistema para corregir defectos a medida que se ajusta a sus requerimientos Mantenimientos para adaptar un software a diferentes entornos operativos Cambiar un sistema para que opere en un entorno diferente (computadora, SO, etc.) al de su implementación inicial Mantenimiento para añadir o modificar las funcionalidades del sistema Modificar el sistema para satisfacer nuevos requerimientos

Distribución del esfuerzo de mantenimiento

Costos de mantenimiento Usualmente mayor que los costos de desarrollo (2* a 100* veces más grande dependiendo de la aplicación) Afectado por factores técnicos y no técnicos Se incrementa a medida que el software se mantiene. El mantenimiento corrompe la estructura del software haciendo del mantenimiento posterior más difícil Software en envejecimiento pueden tener alto costo de soporte (e.g. Lenguajes viejos, compiladores etc.)

Costos de desarrollo/mantenimiento

Factores de costos de mantenimiento Estabilidad de equipo Los costos de mantenimiento se reducen si el mismo personal se involucra en el mantenimiento por un tiempo Responsabilidad contractual Los desarrolladores del sistema pueden no tener responsabilidad contractual por razones de mantenimiento, por tanto no hay incentivo para diseñar cambios futuros Habilidades del personal El personal de mantenimiento es a menudo inexperto y con poco conocimiento del dominio Edad y estructura del programa A medida que los programas envejecen, su estructura se degrada y se vuelven mas difíciles de entender y cambiar.

Predicción de mantenimiento La predicción del mantenimiento se refiere a evaluar que partes del sistema pueden causar problemas y tener altos costos de mantenimiento Aceptar el cambio depende de la mantenibilidad de los componentes afectados por dicho cambio Implementar cambios degrada el sistema y reduce la mantenibilidad Los costos de mantenimiento dependen del número de cambios y los costos de cambio dependen de la mantenibilidad

Predicción de mantenimiento

Predicción del cambio Predecir el número de cambios requiere un entendimiento de las relaciones entre el sistema y su entorno Sistemas estrechamente relacionados requieren cambios siempre que el entorno cambia Los factores que influencian estas relaciones son Número y complejidad de las interfaces del sistema Número de requerimientos del sistema intrínsecamente volátiles Los procesos de negocio donde se usa el sistema

Medidas de la complejidad Predicciones de la mantenibilidad pueden ser realizadas por la evaluación de la complejidad de los componentes el sistema Estudios han demostrado que la mayoría del esfuerzo del mantenimiento se genera en un número relativamente pequeño de componentes de sistema La complejidad depende de Complejidad de estructuras de control Complejidad de estructuras de datos Objeto, método (procedimiento) y tamaño del módulo

Medidas de proceso Las medidas de proceso pueden usarse para evaluar la mantenibilidad Número de peticiones de mantenimiento correctivo Tiempo promedio requerido para el análisis de impacto Tiempo promedio empleado en implementar una petición de cambio Número de peticiones de cambio pendientes Si uno o todos éstos está incrementando, puede indicar una disminución en la mantenibilidad

Procesos de evolución Los procesos de evolución dependen de El tipo de software en mantenimiento El proceso de desarrollo utilizado Las habilidad y la experiencia de las personas involucradas Las propuestas de cambio son los conductores de la evolución de los sistemas. La identificación y la evolución del cambio continúan durante toda la vida del sistema

Identificación y evolución del cambio

El proceso de evolución del sistema

Implementación del cambio

Peticiones de cambio urgente Cambios urgentes pueden ser implementados sin pasar por todas las etapas del proceso de ingeniería de software SI un defecto serio en el sistema debe ser reparado Si cambios en el entorno del sistema (e.g. mejora del SO) tiene resultados inesperados Si hay cambios en el negocio que requieren una respuesta bastante rápida (e.g. lanzamiento de un producto de la competencia)

Reparación de emergencia

Re-ingeniería de sistemas Re-estructurar o re-escribir parte o todo un sistema heredado sin cambiar su funcionalidad Aplicable cuando algunos, no todos, los subsistemas de un sistema grande requieren mantenimiento frecuente La re-ingeniería implica añadir esfuerzo para hacerlos fácil de mantener. Los sistemas pueden ser re-estructurados y re-documentados

Ventajas de la re-ingeniería Riesgo reducido Existe un alto riesgo en el desarrollo de nuevos sistemas. Pueden haber problemas de desarrollo, problemas de personal y problemas de especificación Coste reducido El coste de la re-ingeniería es a menudo significativamente más pequeño que el coste de desarrollo de un nuevo software

Ingeniería hacia adelante y re-ingeniería

El proceso de la re-ingeniería

Actividades del proceso de la re-ingeniería Traducción del código fuente Convertir el código a un nuevo lenguaje Ingeniería inversa Analizar el programa para entenderlo Mejora de la estructura de los programas Reestructurar de forma automática para la comprensibilidad Modularización de los programas Reorganizar la estructura de los programas Re-ingeniería de datos Limpiar y re-estructurar los datos del sistema

Aproximaciones de re-ingeniería

Factores de costos de re-ingeniería La calidad del sfotware sobre el que se va a hacer la re-ingeniería Las herramientas de soporte disponibles para la re-ingeniería La amplitud de la conversión de datos requerida La disponibilidad de personal experto para la re-ingeniería Este puede ser un problema con sistemas antiguos basados en tecnología que ya no es utuilizada

Evolución de sistemas heredados Organizaciones que dependen de sistemas heredados deben escoger una estrategia para evolucionar estos sistemas Desechar completamente el sistema y modificar los procesos del negocio para que ya no sea requerido Continuar el mantenimiento del sistema Transformar el sistema mediante re-ingeniería para mejorar su mantenibilidad Reemplazar el sistema con un nuevo sistema La estrategia escogida debe depender de la calidad del sistema y el valor del negocio

Calidad del sistema y valor del negocio

Categorías de sistemas heredados Baja calidad y bajo valor de negocio Estos sistemas deben desecharse Baja calidad y alto valor del negocio Realizan una importante contribución al negocio pero son caros de mantener. Deben aplicárseles reingeniería o reemplazarlos si un sistema adecuado esta disponible Alta calidad y bajo valor de negocio Reemplazar con COTS, desechar completamente o realizar mantenimiento Alta calidad y alto valor de negocio Continuar su funcionamiento usando el mantenimiento normal del sistema

Evaluación del valor de negocio La evaluación deberia tomar distintos puntos en cuenta Usuarios finales del sistema Clientes del negocio Gerentes de línea Gerentes de tecnología de información (IT) Gerentes generales Entrevistar a los distintos stakeholders y recolectar resultados

Evaluación de la calidad del sistema Evaluación del procesos del negocio ¿Qué tan bien el proceso del negocio brinda soporte a los objetivos actuales del negocio? Evaluación del entorno ¿Qué tan efectivo es el entorno del sistema y qué tan caro es de mantener? Evaluación de la aplicación ¿Cuál es la calidad del sistema de software de aplicación?

Evaluación del proceso del negocio Utilizar un enfoque orientado a puntos de vista y buscar respuestas de los stakeholders del sistema ¿Existe un modelo del proceso definido y es seguido? ¿Diferentes partes de la organización usan diferentes procesos para la misma función? ¿Cómo se adaptó el proceso? ¿Cuáles son las relaciones con otros procesos del negocio y son éstos necesarios? ¿El proceso es soportado efectivamente por el software de aplicaciones heredadas ? Ejemplo – Un sistema de pedido de viajes puede tener un bajo valor de negocio debido al uso generalizado de órdenes basadas en web

Evaluación del entorno 1

Evaluación del entorno 2

Evaluación de aplicación 1

Evaluación de aplicación 2

Sistema de Medición Usted puede recoger datos cuantitativos para realizar una evaluación de la calidad del sistema de aplicación El número de solicitudes de cambio de sistema; El número de distintas interfaces de usuario que utiliza el sistema; El volumen de datos utilizados por el sistema.

Puntos clave El desarrollo de software y la evolución debe ser un proceso iterativo único. Las leyes de Lehman describen una serie de ideas sobre la evolución del sistema. Tres tipos de mantenimiento son corrección de errores, que modifica el software para un nuevo entorno y la aplicación de nuevos requisitos. Para los sistemas de medida, los costes de mantenimiento por lo general superior a los costes de desarrollo.

Puntos clave El proceso de evolución es impulsada por las solicitudes de cambios de las partes interesadas del sistema. La reingeniería del software se refiere a la re-estructuración y documentación de software para que sea más fácil de cambiar. El valor de negocio de un sistema de legado y su calidad debe determinar la estrategia de evolución que se utiliza.