Taller de Mantención de Software Parte 1

download Taller de Mantención de Software Parte 1

of 68

description

historia de la mantención del software

Transcript of Taller de Mantención de Software Parte 1

Presentacin de PowerPoint

Unidad I: Fundamentos de Mantenimiento de softwareIntroduccin

Segn su experiencia, cual seran los orgenes o causas del Mantenimiento del Software.?IntroduccinOrgenesRpida evolucin de la Ingeniera de Computadores.Sin embargo, el desarrollo de Software ha sufrido un retraso histrico.En 1970, ya se haba popularizado el trmino Crisis del Software.Englob a una serie de sucesos que se venan observando en los proyectos de desarrollo de software:Los proyectos no terminaban en plazo.Los proyectos no se ajustaban al presupuesto inicial.Baja calidad del software generado.Software que no cumpla las especificaciones.Cdigo inmantenible que dificultaba la gestin y evolucin del proyecto.OrgenesPara resolver este problema surgi un rea de la informtica que recibi el nombre de :

Ingeniera del Software.

Ingeniera de software es el estudio de los principios y metodologas para el desarrollo y mantenimiento de sistemas software.OrgenesUna de las principales causas de esta situacin ha sido la poca importancia que se ha dado al Mantenimiento del Software.Aunque se sita al final del ciclo de vida de un software, el mantenimiento es un proceso de suma importancia por su repercusin econmica, temporal y de recursos.IMPORTANCIAOrgenesReferenciaPeriodo% Mantenimiento[Pressman, 1993]aos 7035% - 40%[Pigoski, 1997]1980-198455%[Pressman, 1993]Aos 8060%[Rock-Evans y Hales, 1990]198767%[Schach, 1990]198767%[Pigoski, 1997]1985-198975%[Frazer, 1992]199080%[Pressman, 1993]Aos 90 (prev.)90%Segn varios estudios, el Mantenimiento es la fase mas costosa del ciclo de vida del software.Mayor parte del presupuesto: Mantener software existente.Sobrepasando la Barrera de Mantenimiento se imposibilitan nuevos desarrollos.

DefinicionesComo define Ud. el proceso de mantenimiento ?

DefinicionesEstndar ISO 12207: el proceso de mantenimiento contiene las actividades y tareas realizadas por el mantenedor. Este proceso se activa cuando el producto software sufre modificaciones en el cdigo y la documentacin asociada, debido a un problema o a la necesidad de mejora o adaptacin. El objetivo es modificar el producto software existente preservando su integridad. Este proceso incluye la migracin y retirada del producto software.

DefinicionesIEEE 1219: Modificacin de un producto software despus de haber sido entregado (a los usuarios o clientes) con el fin de corregir los defectos, mejorar el rendimiento u otros atributos, o adaptarlo a un cambio de entorno.Pressman [1998]: la fase de mantenimiento se centra en el cambio que va a asociado a la correccin de errores, a las adaptaciones requeridas a medida que evoluciona el entorno del software, y a cambios debidos a las mejoras producidas por los requisitos cambiantes del cliente.DefinicionesEstndar ISO/IEC 14764: Conjunto de actividades destinadas a proporcionar soporte econmicamente rentable para un determinado producto software. Estas actividades se realizan tanto antes de la entrega del producto como despus de la entrega del mismo. Las actividades previas a la entrega incluyen las actividades destinadas a planificar, anticipar y preparar actividades de mantenimiento posteriores. Las actividades posteriores a la entrega incluyen modificaciones del producto software, formacin y asistencia al usuario. el Efecto IcebergA la hora de planificar los costes de mantenimiento, los analistas-programadores tienen la impresin de que el mantenimiento es algo descontrolado, nunca se sabe que va a pasar (sera predecir el futuro).Esta situacin se asemeja a un Iceberg, del cual slo se percibe una pequea parte, pero bajo cuya superficie se esconde una gran cantidad de problemas potenciales y costes encubiertos [Canning, 1972]. el Efecto IcebergEn la parte sumergida de este Iceberg se ocultan costes, menos tangibles que los monetarios. Los costes intangibles del mantenimiento del software estn vinculados a las oportunidades de desarrollo que se deben posponer o se pierden [McCracken, 1980].Otros costes intangibles son:Insatisfaccin del cliente, cuando no se pueden atender a tiempo las reparaciones o modificaciones.Errores ocultos introducidos al realizar el mantenimiento.Perjuicio en otros proyectos de desarrollo, cuando la plantilla tiene que dejarlos. el Efecto IcebergAl final, el coste de mantenimiento de un software es la reduccin que se produce en la productividad de los informticos.Algunos autores [Boehm, 1979], han calculado que el coste de mantener una lnea de cdigo (LCD) puede llegar a ser 40 veces ms alto que en el proceso de desarrollo.Causas del Alto CosteA qu se debe que sea ms econmico solucionar los errores en las etapas iniciales del ciclo de vida?Causas del Alto CosteUna gran cantidad del software actual ha sido desarrollado hace ms de 15-20 aos.Aunque fuese creado utilizando las mejores tcnicas:Restricciones de tamao.Restricciones de espacio de almacenamiento.Herramientas tecnolgicamente desfasadas.Causas del Alto CosteCambios IncontroladosLos programas sufren migraciones a nuevas plataformas S.O.Los programas experimentan mejoras y adaptaciones para satisfacer las nuevas necesidades de los usuarios.Problema: Los cambios se realizan sin tener en cuenta la arquitectura del sistema. No se aplican tcnicas de ingeniera inversa o reingeniera.

Causas del Alto CosteEscasez de mtodos, tcnicas y herramientas que puedan proporcionar una solucin global al mantenimiento:Las metodologas de desarrollo no reflejan costes necesarios ni esfuerzo.Las metodologas se centran en el desarrollo de nuevos sistemas.Complejidad de los sistemas aumenta:Debido a continuas modificaciones.Prdida de informacin; cada vez hay menos personas en el equipo que conocen el software.

Causas del Alto CosteDocumentacin del sistema defectuosa o inexistente:Muchas veces no se actualiza cuando cambia el sistema.Actividad poco creativa:A diferencia del desarrollo, se considera ms sencilla y menos importante.La realiza personal con menor experiencia.Se cree que tiene un menor soporte de herramientas y menos esfuerzo de gestin (FALSO).Causas del Alto CosteResumen.. DefinicionesEfecto Iceberg.Causas del alto coste.SW antiguo, herramientas limitadas, migraciones, adaptaciones, escasez de mtodos, complejidad sistemas, mala documentacin, actividad poco creativa

Causas del Alto CosteActividades de mantenimiento bajo presin de tiempo.Poco tiempo para realizar modificaciones (generalmente sobre el cdigo).No actualizacin de la documentacin.Problema: Las correcciones imperfectas dan lugar a nuevos esfuerzos de correccin en el futuro.

Causas del Alto CostePor todo esto, en la actualidad nos podemos encontrar sistemas con una escasa calidad debido a:Estructuras de datos con un diseo pobre.Mala codificacin.Lgica defectuosa.Documentacin escasa o errnea.Estas mismas razones provocan que el costo de solucionar un defecto en la etapa de mantenimiento sea mucho mayor que en tiempo de anlisis.

Actividades del MantenimientoMuchos de los problemas anteriores vienen dados por el desconocimiento de la actividades durante la mantencin.Algunas definiciones solo consideran como mantenimiento la correccin de defectos.Ampliacin de nuevos requisitos se consideran proyecto de desarrollo continuado o redesarrollo.

Actividades del MantenimientoQu actividades consideramos entonces como mantenimiento [IEEE 1219]?Correccin de defectos en el software.Creacin de nuevas funcionalidades en el software por nuevos requisitos de usuario.Mejora de la funcionalidad y del rendimiento.

Entonces existen los Tipos de Mantenimiento de Software

Y cuales son esos !ah! ???Tipos de Mantenimiento de SoftwareUsuariosDel SistemaEntorno de TrabajoBaseTecnolgicaSistemaSoftwareMantenimiento PerfectivoMantenimiento CorrectivoMantenimiento PreventivoMantenimiento AdaptativoTipos de Mantenimiento de SoftwareMantenimiento perfectivo.Es la modificacin de un producto de software luego de su distribucin para mejorar sus prestaciones o facilitar futuras actividades de mantenimiento. Puede perfeccionarse un software incorporando nuevas funcionalidades, o mejorando sus tiempos de ejecucin.

Mantenimiento correctivo.Corrige los defectos encontrados en el software, y que originan un comportamiento distinto al deseado. Estas fallas pueden ser de procesamiento, rendimiento (por ejemplo, uso ineficiente de los recursos de hardware), programacin (inconsistencias en la ejecucin), seguridad o estabilidad, entre otras.

Tipos de Mantenimiento de SoftwareMantenimiento preventivo.Consiste en la revisin constante del software para detectar posibles focos de problemas que puedan surgir en el futuro.

Mantenimiento adaptativo. Si se requiere cambiar el entorno de uso de la aplicacin (que incluye al sistema operativo, a la plataforma de hardware o, en el caso de las aplicaciones web, al navegador), puede ser indispensable modificarla para mantener su plena funcionalidad en estas nuevas condiciones.

Tipos de Mantenimiento de SoftwareQu estimacin en esfuerzo podemos realizar sobre cada uno de los tipos de mantenimiento?Tipos de Mantenimiento de Software Mantenimiento Correctivo (costo 17%)An habiendo superado las etapas de prueba y verificacin, el software puede contener defectos.Este tipo de mantenimiento tiene como objetivo encontrar y eliminar estos defectos del software.Defectos v/s Fallas:Un defecto en un sistema es una caracterstica del sistema con el potencial de causar una falla [Piattini, 2000].Un falla ocurre cuando el comportamiento de un sistema es diferente del establecido en la especificacin [Piattini, 2000].Qu es defecto, qu es Falla?.Tipos de Mantenimiento de Software Mantenimiento CorrectivoPodramos llegar a considerar las siguientes fallas:Procesamiento: Salidas incorrectas en un programa.Rendimiento: Demasiado tiempo de respuesta.Programacin: Diseo inconsistente de un sistema.Documentacin: Diferencias entre la funcionalidad de un programa y el manual de usuario.

Tipos de Mantenimiento de Software Mantenimiento CorrectivoTipos de Mantenimiento de Software Mantenimiento Adaptativo (costo 18%)Este tipo de mantenimiento responde a una situacin en la que se produce algn cambio en el Software o Hardware del entorno en el que se ejecuta el sistema.Estos cambios pueden deberse a:Cambio en el SO.Cambio del tipo de arquitectura en la que se ejecuta (red local a Internet/Intranet).Entorno de desarrollo del software (nuevos elementos y herramientas como ODBC).La envergadura del cambio necesario puede ser muy diferente.

Tipos de Mantenimiento de Software Mantenimiento AdaptativoLos cambios en el entorno Software pueden ser:En el entorno de los datos (Sistema Archivos vs. BBDD).En el entorno de los procesos (Sistemas Distribuidos, Java)El mantenimiento adaptativo cada vez es ms usual debido a:Nuevas generaciones de Hardware cada poco tiempo. Nuevos sistemas operativos.Mejoras en las prestaciones y elementos. Frente a esto, la vida til de un software puede superar fcilmente los 10 aos.

Tipos de Mantenimiento de Software Mantenimiento Perfectivo (costo 60%)Este tipo de mantenimiento est asociado a cambios en los requisitos de un producto Software.Se podra definir como el conjunto de actividades para mejorar o aadir nuevas funcionalidades requeridas por el usuario.A su vez, este tipo de mantenimiento se puede dividir en dos:Mantenimiento de Ampliacin: orientado a la incorporacin de nuevas funcionalidades.Mantenimiento de Eficiencia: busca la mejora de las prestaciones del sistema en tiempo de ejecucin.

Tipos de Mantenimiento de Software Mantenimiento PerfectivoEste tipo de mantenimiento aumenta cuando un producto tiene xito comercial.

Por qu?

Tipos de Mantenimiento de Software Mantenimiento Preventivo (costo 5%)El principal objetivo de este tipo de mantenimiento es mitigar o evitar las consecuencias de los fallas.Para ello:Comprobacin de la validez de los datos de entrada.Reestructuracin del software para mejorar la legibilidad y su futuro mantenimiento.Adicin de comentarios.Monitorizacin de las prestaciones del sistema en todo momento (Almacenamiento, Procesamiento, Ancho de Banda).

Tipos de Mantenimiento de Software Mantenimiento PreventivoOtros Mantenimientos v/s PreventivoLos otros tipos de mantenimientos se realizan, generalmente a causa de una peticin.El mantenimiento preventivo se produce tras un estudio de posibilidades de mejora en los diferentes mdulos del sistema.

Tipos de Mantenimiento de SoftwareTareas del MantenimientoTipos de Mantenimiento de SoftwareTareas del MantenimientoI - Comprensin del Software y de los cambios a realizar: Se deben conocer la funcionalidad, el objetivo, la estructura interna y los requisitos. Si no respetamos esto, podramos introducir nuevos errores que nos lleven a ms gastos por mantenimiento adicionales.El 50% del tiempo de mantenimiento se dedica a esta actividad.

Tipos de Mantenimiento de SoftwareTareas del MantenimientoII - Modificacin del SoftwareSe deben crear y modificar las estructuras de datos, la lgica de los procesos, las interfaces y la documentacin.Para evitar los efectos secundarios, los programadores deben conocer las repercusiones de las modificaciones que van a introducir.Esta actividad representa del tiempo total de la mantencin.

Tipos de Mantenimiento de SoftwareTareas del MantenimientoIII - Realizacin de Pruebas: Es necesario realizar pruebas para validar los cambios. Las pruebas verificarn que no se han introducido a la vez otros errores. Incluso el cambio ms pequeo puede inducir defectos que reduzcan la calidad y la fiabilidad del Software.

Tipos de Mantenimiento de SoftwareTareas del MantenimientoCategoraActividad% TiempoComprensin del software y de los cambios a realizarEstudiar las peticiones18%Estudiar la documentacin6%Estudiar el cdigo23%Modificacin del softwareModificar el cdigo19%Actualizar la documentacin6%Realizacin de pruebasDisear y realizar pruebas28%Dificultades del MantenimientoLa problemtica del mantenimiento se resume en realizar el Mantenimiento del Software de forma tan rigurosa que la calidad no se deteriore como resultado del proceso.La pregunta a formular es la siguiente: Cmo debe mantenerse el software para preservar su fiabilidad? A continuacin veremos las circunstancias que hacen que la respuesta a esta pregunta no sea fcil y est muy condicionada.Dificultades del MantenimientoCdigo HeredadoCon el paso de los aos se ha ido produciendo un volumen muy grande de Software. En la actualidad, la mayor parte del Software est formado por cdigo heredado (Legacy Code), es decir:Cdigo desarrollado hace algn tiempo.Con tcnicas y herramientas en desuso. Desarrollado por personas que ya no pertenecen al colectivo.En muchas ocasiones, la situacin se complica porque el Cdigo Heredado fue objeto de mltiples actividades de mantenimiento.

Dificultades del MantenimientoCdigo HeredadoLos problemas especficos del mantenimiento de cdigo heredado han sido caracterizados en las llamadas Leyes de la Evolucin del Software formuladas por Lehman.Ley I: Cambio ContinuadoLey II: Complejidad CrecienteLey III: Evolucin Prolongada del ProgramaLey IV: Conservacin de la Estabilidad OrganizacionalLey V: Conservacin de la FamiliaridadLey VI: Crecimiento ContinuadoLey VII: Decremento de la CalidadLey VIII: Realimentacin del SistemaDificultades del MantenimientoCdigo HeredadoLeyes de la Evolucin del SoftwareLey I: Cambio Continuado Un programa utilizado en un entorno del mundo real debe cambiar, ya que si no cada vez ser menos usado en dicho entorno. En otras palabras, esto significa que, tan pronto como un programa ha sido escrito, est ya desfasado. Las razones que conducen a esta afirmacin son varias:Nuevas ideas se le ocurren a los usuarios.Nuevas caractersticas Hardware Mejoras Software.Correccin de defectos.Migracin del sistema a otra mquina o Sistema Operativo.El software necesita ser ms eficiente.

Dificultades del MantenimientoCdigo HeredadoLeyes de la Evolucin del SoftwareLey II: Complejidad Creciente A la par que los cambios transforman los programas, su estructura se har progresivamente ms compleja salvo que se haga un esfuerzo activo para evitar este fenmeno. Esto significa que al realizar cambios en un programa (excluyendo el mantenimiento preventivo), la estructura de dicho programa se hace ms compleja cuando los programadores no pueden o no quieren usar tcnicas de Ingeniera del Software.

Dificultades del MantenimientoCdigo HeredadoLeyes de la Evolucin del SoftwareLey III: Evolucin Prolongada del Programa La evolucin de un programa es un proceso autorregulado. Las medidas de determinadas propiedades (tamao, tiempo entre versiones y nmero de errores) revelan estadsticamente determinadas tendencias e invariantes.

Ley IV: Conservacin de la Estabilidad Organizacional Durante el tiempo de vida de un programa, su velocidad de desarrollo es aproximadamente constante e independiente de los recursos dedicados al desarrollo del sistema.

Dificultades del MantenimientoCdigo HeredadoLeyes de la Evolucin del SoftwareLey V: Conservacin de la familiaridad Durante el tiempo de vida de un sistema, el cambio incremental en cada entrega es aproximadamente constante.

Ley VI: Crecimiento Continuado La funcionalidad ofrecida por los sistemas tiene que crecer continuamente para mantener la satisfaccin de los usuarios.

Ley VII: Decremento de la calidad La calidad de los sistemas comenzar a disminuir a menos que dichos sistemas se adapten a los cambios en su entorno de funcionamiento.Dificultades del MantenimientoCdigo HeredadoLeyes de la Evolucin del SoftwareLey VIII: Realimentacin del sistema Los procesos de evolucin incorporan sistemas de realimentacin multiagente y multibucle y estos deben ser tratados como sistemas de realimentacin para lograr una mejora significativa del producto.Dificultades del MantenimientoProblemas de MantenimientoAdems de las dificultades de mantenimiento mostradas en las Leyes anteriores, existen otros problemas clsicos que complican el mantenimiento [Schneidewind, 1987]:Problemas de carcter tcnico.Ausencia metodolgica.Tendencia a la des-estructuracin.Disminucin de la compresividad.Problemas de gestin.Dificultades del MantenimientoProblemas de MantenimientoProblemas de carcter tcnicoAusencia MetodolgicaLas metodologas no suelen contemplarla participacin del usuario.Si no se satisfacen las necesidades, hay que realizar un esfuerzo adicional para adaptar el Software.Tendencia a la des-estructuracinDocumentacin desfasada.El cdigo no cumple los estndares.Incremento en el tiempo necesitado para comprender el cdigo.Dificultades del MantenimientoProblemas de MantenimientoProblemas de carcter tcnicoDisminucin de la ComprensividadLos sucesivos cambios producidos por el mantenimiento hacen que el cdigo sea ms difcil de modificar lo que implica un aumento de los costes.Segn Sommerville[1992], cualquier cambio conlleva la corrupcin de la estructura del software y, a mayor corrupcin, la estructura del programa se torna menos comprensible y ms difcil de modificar.Dificultades del MantenimientoProblemas de MantenimientoProblemas de gestinHay programadores que consideran el trabajo del mantenimiento como una actividad inferior. Personas dedicadas al mantenimiento peores condiciones laborables y salariales. Como resultado, al realizar un mantenimiento: No se emplea una estrategia sistemtica. Correcciones realizadas con precipitacin. No se documentan adecuadamente. Pobremente integradas con el cdigo existente.

Dificultades del MantenimientoEfectos SecundariosLa posibilidad de error al modificar un sistema actual es muy grande.Una de las mayores dificultades es el riesgo del llamado Efecto Bola de Nieve:Los cambios producidos por una peticin introducen efectos secundarios, implicando nuevos mantenimientos.Estos nuevos mantenimientos a su vez pueden producir ms efectos secundarios.Dificultades del MantenimientoEfectos SecundariosDificultades del MantenimientoEfectos SecundariosDificultades del MantenimientoEfectos SecundariosSoluciones al Problema del Mantenimiento del SoftwareSoluciones al Problema del Mantenimiento del SoftwareDesde un punto de vista financiero, el mantenimiento del Software es un continuo consumidor de recursos (beneficios???).Se necesita un apoyo por parte de la direccin de las organizaciones, siendo conscientes:Importancia de las tecnologas de la informacin.El Software es un activo corporativo que puede suponer una ventaja competitiva.Soluciones al Problema del Mantenimiento del SoftwareSoluciones al Problema del Mantenimiento del SW Soluciones de GestinRecursos dedicados al MantenimientoPrincipal recurso para el mantenimiento es el humano.Constitucin de un equipo dedicado con experiencia.

Gestin de la CalidadAumento de Recursos => Solucin a corto plazo.Mtodos para aumentar la calidad, tanto del producto Software como del proceso de produccin(Estndares, Diseo paso a paso, Cdigo Estructurado, ).Soluciones al Problema del Mantenimiento del SW Soluciones de GestinGestin Estructurada del MantenimientoLa existencia de una adecuada Configuracin del Software reduce la cantidad de esfuerzo requerido y mejora la calidad.Partiendo desde este punto, se deben subdividir las tareas a desarrollar, para as realizar un seguimiento directo sobre cada una de las etapas:Comprensin del SW y de los cambios a realizar.Modificacin del SW.Realizacin de las pruebas.Soluciones al Problema del Mantenimiento del SW Soluciones de GestinOrganizacin del Equipo HumanoLas tareas relacionados con el mantenimiento comienzan mucho antes de la primera peticin.Establecer las personas que participarn en cada actividad.Delegacin de responsabilidades [Pressman, 1993]:Controlador del Mantenimiento (gestin y seguimiento).Supervisor del sistema SW (Conocimiento).Gestor de la configuracin (actualiza SW).Desarrollador de mantenimiento (codificacin).Soluciones al Problema del Mantenimiento del SW Soluciones de GestinDocumentacin de los cambiosInformacin del programa.Tamao: LDC programa fuente y ejecutable.Lenguaje de programacin.Fecha de instalacin del programa.Nmero de ejecuciones del programa desde la instalacin.Nmero de fallas.Numero de sentencias aadidas, modificadas y eliminadas.Nmero de personas/hora.Persona responsable del cambio.Identificacin de la peticin.Tipo de mantenimiento.Fecha de inicio y fin de mantenimiento.Beneficios netos que supone el cambio.Soluciones al Problema del Mantenimiento del SW Soluciones TcnicasHerramientasAyudan al personal de mantenimiento, a la hora de comprender el problema y probarlas modificaciones.Muchas de estas herramientas son similares a las utilizadas en las pruebas de SW:DepuradoresGeneradores de Datos de PruebaDocumentadoresComparadoresSoluciones al Problema del Mantenimiento del SW Soluciones TcnicasMtodosReingenieraExamen y Modificacin de un sistema para reconstruirlo de una nueva forma [Bennett, 1990].Ingeniera InversaProceso de analizar un sistema para identificar sus componentes y las interrelaciones que existen entre ellos. [Chikofskyy Cross, 1990].Reestructuracin del SoftwareModificacin del software para hacerlo ms fcil de entender y cambiar [Arnold, 1986].