CAPÍTULO 6 Mantenimiento de Software

44
CAPÍTULO 6 MANTENIMIENTO DE SOFTWARE

Transcript of CAPÍTULO 6 Mantenimiento de Software

Presentacin de PowerPoint

CAPTULO 6MANTENIMIENTO DE SOFTWAREINTRODUCCINEl proceso de desarrollo de software debe satisfacer los requerimientos planteados, una vez en operacin el proceso de cubrimiento de defectos, operacin y cambio de ambiente debe darse en esta etapa, la fase de mantenimiento empieza con un periodo de garanta y de soporte post-implementacin pero el mantenimiento del software ocurre mucho antes.Aunque la etapa de mantenimiento del software no ha tenido el grado de atencin que se debe este tipo de desarrollo de software ya esta empezando a cambiar ya que muchos errores graves han ocurrido por no prestarle la atencin que se merece.El mantenimiento de software se ha definido como el nmero total de actividades requeridas para proveer soporte efectivo al software, esto incluye un planeamiento efectivo antes. Durante y despus de la implementacin del software.

1.Aspectos Fundamentales en el mantenimiento del software:

1.1 Definiciones y terminologa1.2 Naturaleza del mantenimiento1.3 Necesidad del Mantenimiento1.4 Costos Mayoritarios de mantenimiento1.5 Evolucin del software1.6 Categoras de Mantenimiento

1.1 Definiciones y terminologa

Est definido en el estndar de la IEEE 1219 como la modificacin del producto de software despus de la entrega para corregir las faltas, tambin se encarga de direccionar las actividades de mantenimiento para darle prioridad a la entrega del producto.

El estndar IEEE/EIA 12207 define el mantenimiento como uno de los procesos principales en el ciclo de vida del software, el objetivo es modificar el software existente preservando su integridad tambin lo hacen en estos mismos trminos la ISO/IEC 14764 este enfatiza en las entregas previas para la planeacin del mantenimiento del software.

1.2 Naturaleza del mantenimiento

El mantenimiento de software debe estar dentro del ciclo de vida operacional, un mantenimiento esta definido por la IEEE/EIA 12207 como las actividades de mantenimiento que permiten el desempeo correcto.Identifica las actividades de mantenimiento como un proceso de implementacin y modificacin y anlisis del problema, estas actividades son discutidas en el tpico 3.2 Actividades de Mantenimiento.

1.3 Necesidad del Mantenimiento

La necesidad de mantenimiento se da para garantizar que el software cumple satisfactoriamente con los requerimientos solicitados, este se aplica a cualquier desarrollo independiente del modelo de ciclo de vida utilizado, el mantenimiento se da en orden de alcanzar el desempeo adecuado y en el orden de:Corregir fallas.Improvisar el diseo.Implementar correcciones.Interfaces con otros sistemas.Adaptar programas a diferentes tipos de hardware, software, configuracin del sistema y facilidad de uso de telecomunicaciones.Migracin legal de software.Retiro de software.

1.4 Costos Mayoritarios de mantenimiento

Los costos de mantenimiento de software son los mas costosos en todo el ciclo de vida del software, estudios recientes han demostrado que ms del 80% del mantenimiento de software es usado para acciones correctivas hay que entender la categora del mantenimiento del software para entender la estructura del costo de mantenimiento, entendiendo los factores que influyen en el costo se puede ayudar a contener dichos costos, a continuacin se presentan algunos aspectos tcnicos y no tcnicos que afectan los costos de mantenimiento:Tipo de Aplicacin.Disponibilidad del mantenimiento de software.Ciclo de vida del software.Caractersticas de hardware.Calidad del diseo de software, construccin, documentacin y pruebas.

1.5 Evolucin del software

En 1969 Lehman direcciono el mantenimiento del software y la evolucin de los sistemas, durante 20 aos se mantuvo su idea de la formulacin de ocho Leyes de la evolucin donde se mantuvo la idea de la evolucin en el mantenimiento del software para continuar con el desarrollo.Lientz y Swanson inicializaron la definicin de tres categoras de mantenimiento: correctivo, adaptativo y perfectivo.

1.6 Categoras de MantenimientoLientz y Swanson definen inicialmente tres categoras de mantenimiento: correctivo, adaptativo y perfectivo Mantenimiento correctivo: modificacin reactiva de un producto de software realizado despus de la entrega para corregir problemas descubiertos Mantenimiento adaptativo: Modificacin de un software producto realiza despus del parto para mantener un programa de utilizable en un producto cambiado o el cambio de medio ambienteMantenimiento perfectivo: La modificacin de un software producto despus del parto para mejorar el rendimiento o mantenimientoMantenimiento preventivo: La modificacin de un software producto despus del parto para detectar y corregir latente fallas en el producto de software antes de que sean fallas eficaces2. Factores claves en el mantenimiento del software Un numero de factores claves debemos tener presentes para asegurar el mantenimiento efectivo del software, es importante comprender que el mantenimiento de software nos proporciona una tcnica nica en los desafos de administracin para los ingenieros de software, podemos apreciar como se planean las liberaciones posteriores as como los parches generados para las versiones anteriores, lo que sigue a continuacin nos presenta una manera de cmo se nos presentan algunos factores de administracin y tcnicos para el mantenimiento de software, estos se agrupan segn los tpicos siguientes:2.1Factores tcnicos.2.2Factores administrativos.2.3Estimacin de costos.2.4Medidas.

2.1.1. Comprensin limitadaComprensin limitada se refiere a la rapidez con un software de ingeniero puede entender que para hacer un cambio o una correccin en el software que este individuo no le desarrollarse. La investigacin indica que aproximadamente el 40% a 60% de la esfuerzo de mantenimiento se dedica a la comprensin de la software para ser modificado. Por lo tanto, el tema de software comprensin es de gran inters para los ingenieros de software.La comprensin es ms difcil en el texto orientado representacin, en el cdigo fuente, por ejemplo, donde es a menudo difciles de rastrear la evolucin del software a travs de su lanzamientos / versiones si los cambios no estn documentadas y cuando los desarrolladores no estn disponibles para explicarlo, que es a menudo el caso. Por lo tanto, los ingenieros de software pueden tener inicialmente un comprensin limitada del software, y mucho tiene que ser hacer para remediar esto.2.1.2. PruebasEl costo de la repeticin de pruebas completo en una pieza importante de software puede ser significativo en trminos de tiempo y dinero.Las pruebas de regresin, la repeticin de pruebas selectivas de un software o componente para verificar que las modificaciones no han causado efectos no deseados, es importante para el mantenimiento. Adems, encontrar tiempo para probar es a menudo difcil. Tambin es el desafo de las pruebas de coordinacin, cuando los diferentes miembros de la el equipo de mantenimiento estn trabajando en diferentes problemas en al mismo tiempo. [Plf01] Cuando el software realiza crtico funciones, que pueden ser imposibles de llevar fuera de lnea para probar.2.1.3 Anlisis del impactoAnlisis de impacto describe cmo llevar a cabo, de manera rentable, un anlisis completo de los efectos de un cambio en los actuales software. Mantenedores deben poseer un conocimiento profundo de la estructura y el contenido del software.Arturo establece que los objetivos de anlisis de impacto son: Determinacin del mbito de aplicacin de un cambio con el fin de planificar y poner en prctica el trabajoDesarrollo de estimaciones precisas de los recursos necesaria para realizar el trabajoAnlisis de la relacin costo / beneficios del cambio solicitado Comunicacin a los dems de la complejidad de un cambio dado

2.1.4 MantenibilidadEl mantenimiento como la facilidad con la que el software puede ser mantenido, mejorado, adaptado, o corregido para satisfacer requisitos especificados. La Mantenibilidad sub-caractersticas deben especificarse,revisado y controlado durante el desarrollo de softwareactividades a fin de reducir los costes de mantenimiento. Si este es realiza con xito, el mantenimiento del software semejora. Esto es a menudo difcil de lograr debido a que el mantenibilidad sub-caractersticas no son un punto importante al centrarse en el proceso de desarrollo de software. Los desarrolladores se preocupan por muchas otras cosas y a menudo caso omiso de los requerimientos del mantenedor. 2.2 Asuntos Gerenciales2.2.1. Alineacin con los objetivos de la organizacin2.2.2. Dotacin de personal2.2.3. Proceso2.2.4. Aspectos organizativos de mantenimiento2.2.1. Alineacin con los objetivos de la organizacinObjetivos organizacionales describen cmo demostrar la retorno de la inversin de las actividades de mantenimiento de software.El nfasis principal es entregar a tiempo y dentro del presupuesto para satisfacer las necesidades del usuario. Por el contrario, el mantenimiento de software a menudo tiene el objetivo de extender la vida de software durante el tiempo como sea posible. Adems, puede ser impulsado por la necesidad para satisfacer la demanda del usuario para las actualizaciones y mejoras del software.En ambos casos, el retorno de la inversin es mucho menor en claro, de modo que la vista a nivel de alta direccin suele ser de una actividad importante que consumen importantes recursos sin claro beneficio cuantificable para la organizacin2.2.2. Dotacin de personalEn lo de personal se refiere a la forma de atraer y mantener el software El personal de mantenimiento. El Mantenimiento a menudo no es visto como trabajo glamoroso2.2.3 Proceso

Proceso de software es un conjunto de actividades, mtodos, prcticas, y las transformaciones que la gente utiliza para desarrollar y mantener el software y los productos asociados. A el nivel de proceso, las actividades de mantenimiento de software comparten mucho en comn con el desarrollo de software2.2.4. Aspectos organizativos de mantenimientoLos aspectos organizativos describen cmo identificar qu organizacin y / o la funcin estar a cargo de la mantenimiento de software. El equipo que desarrolla el software no se asigna necesariamente para mantener la software en cuanto est operativa.Al decidir que la funcin de mantenimiento de software se encuentran, las organizaciones de ingeniera de software puede, por ejemplo, quedarse con el desarrollador original o ir a un equipo independiente 2.2.5. SubcontratacinLa externalizacin de mantenimiento se est convirtiendo en una gran industria.Las grandes empresas estn subcontratando carteras enteras de sistemas de software, incluyendo el mantenimiento del software. Ms a menudo, la opcin de externalizacin se selecciona por menos de misin crtica software, como las empresas no estn dispuestas a perder el control del software utilizado en su negocio principal. Uno de los principales retos para los subcontratistas es para determinar el alcance de la servicios de mantenimiento requeridos y los detalles contractuales.2.3. Mantenimiento Estimacin de Costos2.3.1. Estimacin de costos2.3.2. Modelos paramtricos2.3.3. Experiencia2.3.1. Estimacin de costos

Se mencion en el subtema 2.1.3 ( Anlisis del Impacto), el anlisis del impacto, que anlisis de impacto identifica todos los sistemas y productos de software afectada por una solicitud de cambio de software y desarrolla una estimacin de los recursos necesarios para llevar a cabo ese cambio.2.3.2. Modelos paramtricos

Algunos trabajos se han realizado en la aplicacin paramtrica costo de modelado para el mantenimiento del software. De importancia es que se necesitan datos de proyectos anteriores, para poder utilizar las modelos. 2.3.3. ExperienciaLa experiencia, en forma de juicio de expertos (utilizando el Tcnica Delphi, por ejemplo), las analogas, y una obra estructura de divisin, son varios los enfoques que deben ser utilizado para aumentar los datos de los modelos paramtricos. Claramente el mejor enfoque para el mantenimiento de estimacin es combinar datos y experiencias empricas. Estos datos deben ser proporcionado como resultado de un programa de medicin.2.4. Medida Mantenimiento de Software2.4.1. Medidas especficas2.4.1. Medidas especficasDicha lista incluye una serie de medidas para cada uno de los cuatro sub-caractersticas de mantenimiento:Analizabilidad: Medidas de esfuerzo del mantenedor o recursos gastados en tratar de diagnosticar deficiencias o causas de fracaso, o en la identificacin de piezas que se van modificadosVariabilidad: Las medidas de esfuerzo del desarrollador asociados con la implementacin de un determinado modificacinEstabilidad: Medidas del comportamiento inesperado de software, incluyendo la que se encontr durante las pruebasTestabilidad: Medidas del mantenedor y de los usuarios esfuerzo en el intento de probar el software modificado Algunas de las medidas de la capacidad de mantenimiento de software pueden ser obtenido utilizando herramientas comerciales disponibles.3. Proceso de mantenimiento

Provee referencias y estndares utilizados para implementar el proceso de mantenimiento de software.Las actividades de mantenimiento son diferenciadas por el desarrollo mostrado en la relacin a las actividades de ingeniera de otro software.

3. Proceso de mantenimiento3.1. Procesos de Mantenimiento3.2. Actividades de Mantenimiento3.1.Procesos de Mantenimiento

Procesos de mantenimiento proporcionan actividades necesarias y entradas / salidas a las actividades detalladas, y se describen en el software de mantenimiento de las normas IEEE 1219 e ISO / IEC 14764.Cada actividad de mantenimiento de software ISO/IEC 14764 es desglosada en los siguientes trminos: Proceso de implementacin.Anlisis del problema y modificaciones.Implementacin y modificacin. Mantenimiento Aceptacin/Revisin.Migracin.Retiro de Software.

3.2.Actividades de Mantenimiento Como ya se ha sealado, muchas de las actividades de mantenimiento son similares a los de desarrollo de software. Los mantenedores realizan anlisis, diseo, codificacin, pruebas y documentacin. Ellos debe seguir los requisitos de sus actividades as como se hace en desarrollo y actualizacin de la documentacin como las lneas de base cambiar. ISO/IEC14764 recomienda que, cuando un mantenedor se refiere a un proceso de desarrollo similar, que debe adaptarlo para satisfacer sus necesidades especficasSin embargo, para el mantenimiento del software, algunas de las actividades implican procesos nicos para el mantenimiento del software.3.2.1. Actividades nicas3.2.2. Las actividades de apoyo3.2.3. Actividad de planificacin de mantenimiento3.2.4. Gestin de configuracin de software3.2.5. La calidad del software3.2.1. actividades nicasHay una serie de procesos, actividades y prcticas que son nicas para el mantenimiento del software, por ejemplo:Transicin: una secuencia controlada y coordinada de los actividades durante el cual se transfiere el software progresivamente desde el desarrollador al mantenedorSolicitud de Modificacin de aceptacin / rechazo:solicitud de trabajo de modificacin durante una ciertaCapacidad / esfuerzo / complejidad que puede ser rechazada por mantenedores y cambiados a un desarrollador Informe de Problemas Ayuda Desk: una funcin de soporte al usuario final que desencadena la evaluacin, priorizacin y costo de solicitudes de modificacinAnlisis de impactoSoftware Support: ayuda y asesora a los usuarios relativamente a una solicitud de informacin (por ejemplo, reglas de negocio, la validacin, el significado de datos y ad-hoc solicitudes / informes) 3.2.2. Las actividades de apoyoLos Mantenedores tambin pueden realizar actividades de apoyo, como planificacin de mantenimiento de software, configuracin de software gestin, verificacin y validacin, la calidad del software garanta, opiniones, auditoras y formacin de usuarios.3.2.3. Actividad de planificacin de mantenimientoUna actividad importante para el mantenimiento del software es la planificacin, y mantenedores deben abordar las cuestiones relacionadas con nmero de planificar perspectivas:Planificacin empresarial (nivel organizativo)Planificacin de mantenimiento (nivel de transicin)Release / versin de planificacin (nivel de software)Cambio planificacin Individual solicitud software3.2.4. Gestin de configuracin de softwareEl estndar IEEE para el Mantenimiento de Software, IEEE 1219 [IEEE1219-98], describe la configuracin del software gestin como elemento fundamental del mantenimiento proceso. Los procedimientos de gestin de configuracin de software deben prever la verificacin, validacin y auditora de los cada paso necesario para identificar, autorizar, implementar y liberar el producto de software.3.2.5. La calidad del softwareNo es suficiente, o bien, esperar simplemente que el aumento de calidad ser el resultado de la mantenimiento de software. Lo deben ser planificados y los procesos implementados para apoyar la proceso de mantenimiento. Las actividades y tcnicas para Software Quality Assurance (SQA), V & V, opiniones y auditoras debe ser seleccionado de acuerdo con todos los dems procesos para lograr el nivel deseado de calidad. sta tambin recomienda que el mantenedor de adaptar el software los procesos de desarrollo, las tcnicas y las prestaciones, para documentacin de las pruebas de ejemplo, y los resultados de las pruebas.4.Tcnicas para el mantenimiento4.1 Comprensin del programa4.2 Reingeniera4.3 Ingeniera inversa

4.1 Comprensin del programa1 Comprensin del programa

Los programadores gastan tiempo considerable leyendo y entendiendo programas para poder implementar cambios existentes con distintas herramientas que nos ayudan con este proceso.

4.2 ReingenieraEsta definida como el examen de de la alteracin del software para reconstituir una nueva forma, la reingeniera es la mas radical y expansiva forma de la alteracin otros creen que la reingeniera puede ser usada para cambios menores, siempre est enfocada en mantener la legalidad del software asi como sus tcnicas, casos de estudio y sus riesgos y beneficios.

Ingeniera inversa

Es el proceso de analizar el software para identificar los componentes y sus relaciones para crear representaciones del software dicho de otra forma desde un nivel mas alto de abstraccin, es pasiva, y no hace cambios al software o resulta en otro software. Produce grficas as como control de flujo y del cdigo fuente, un tipo de reingeniera puede ser la re documentacin, otro tipo es la reparacin del diseo.Finalmente la reingeniera ha sido de gran importancia en los ltimos aos ya que gracias a sus esquemas lgicos a podido restaurar bases de datos fsicas.

4.2 Ingeniera Inversa