Desarrollo de Software ll - Unidad 4

Mantenimiento del Software.

Problemas asociados.

Ventajas y desventajas del mantenimiento.

Costos del mantenimiento.

Tipos de mantenimiento.

Soporte de usuario.


Mantenimiento de software, razones para el mantenimiento:

El estándar IEEE 1219 [IEEE, 1993] define el Mantenimiento del Software como la modificación de un producto software después de haber sido entregado [a los usuarios o clientes] con el fin de corregir defectos, mejorar el rendimiento u otros atributos, o adaptarlo a un cambio en el entorno. En el estándar ISO 12207, de Procesos del Ciclo de Vida del Software [ISO/IEC, 1995] se establece que 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 código y la documentación asociada, debido a un problema o a la necesidad de mejora o adaptación. El objetivo es modificar el producto software existente preservando su integridad. Este proceso incluye la migración y retirada del producto software. El proceso termina con la retirada del producto software. El mantenedor es la organización que proporciona el servicio de mantenimiento. En las anteriores definiciones de mantenimiento aparecen indicados, directa o indirectamente, cinco razones de mantenimiento: correctivo, adaptativo, perfectivo y preventivo.


Mantenimiento Correctivo:

El mantenimiento correctivo tiene por objetivo localizar y eliminar los posibles defectos de los programas. Un defecto en un sistema es una característica del sistema con el potencial de causar un fallo. Un fallo ocurre cuando el comportamiento de un sistema es diferente del establecido en la especificación.


Entre otros, los fallos en el software pueden ser de:

- Procesamiento, por salidas incorrectas de un programa.

- Rendimiento, debido al tiempo de respuesta demasiado alto en una búsqueda de información.

- Programación, por inconsistencias en el diseño de un programa.

- Documentación, debido a inconsistencias entre la funcionalidad de un programa y el manual de usuario.



Mantenimiento Adaptativo

Este tipo de mantenimiento consiste en la modificación de un programa debido a cambios en el entorno del hardware o software en el cual se ejecuta.Estos cambios pueden afectar al sistema operativo (cambio a uno más moderno), a la arquitectura física del sistema informático (paso de una arquitectura de red de área local a Internet/Intranet) o al entorno de desarrollo del software (incorporación de nuevos elementos o herramientas como ODBC). El tipo de cambio necesario puede ser muy diferente: desde un pequeño retoque en la estructura de un módulo hasta tener que re escribir prácticamente todo el programa para su ejecución en un ambiente distribuido en una red.

Los cambios en el entorno software pueden ser de dos clases:

- En el entorno de los datos, por ejemplo, al dejar de trabajar con un sistema de ficheros clásico y sustituirlo por un sistema de gestión de bases de datos relacionales.

- En el entorno de los procesos, por ejemplo, migrando a una nueva plataforma de desarrollo con componentes distribuidos, Java, ActiveX, etc.



Mantenimiento Perfectivo

Cambios en la especificación, normalmente debidos a cambios en los requisitos de un producto software, implican un nuevo tipo de mantenimiento llamado perfectivo. Desde algo tan simple como cambiar el formato de impresión de un informe, hasta la incorporación de un nuevo módulo aplicativo. Podemos definir el mantenimiento perfectivo como el conjunto de actividades para mejorar o añadir nuevas funcionalidades requeridas por el usuario.

Algunos autores dividen este tipo de mantenimiento en dos:

- Mantenimiento de Ampliación: orientado a la incorporación de nuevas funcionalidades.

- Mantenimiento de Eficiencia: que busca la mejora de la eficiencia de ejecución.



Mantenimiento Preventivo

Este último tipo de mantenimiento consiste en la modificación del software para mejorar sus propiedades por ejemplo, aumentando su calidad y/o su mantenimiento, sin alterar sus especificaciones funcionales.


Problemas asociados

Un sistema informático está compuesto por hardware y software. En cuanto al hardware, su producción se realiza sistemáticamente y la base de conocimiento para el desarrollo de dicha actividad está claramente definida. La fiabilidad del hardware es, en principio, equiparable a la de cualquier otra máquina construida por el hombre. Sin embargo, respecto del software, su construcción y resultados han sido históricamente cuestionados debido a los problemas asociados, entre ellos podemos destacar los siguientes:

- Los sistemas no responden a las expectativas de los usuarios.

- Los programas fallan con cierta frecuencia.

- Los costes del software son difíciles de prever y normalmente superan las estimaciones.

- La modificación del software es una tarea difícil y costosa.

- El software se suele presentar fuera del plazo establecido y con menos prestaciones de las consideradas inicialmente.

- Normalmente, es difícil cambiar de entorno hardware usando el mismo software.

- El aprovechamiento óptimo de los recursos como personas, tiempo, dinero, herramientas, entre otros, no suele cumplirse.


Mantenimiento correctivo

Ventajas: Confiablidad, los equipos operan en mejores condiciones de seguridad, ya que se conoce su estado, y sus condiciones de funcionamiento. Mayor duración de los equipos e instalaciones. Igualdad en la carga de trabajo para el personal del mantenimiento debido a una programación de actividades.

Desventajas: Menor costo de reparaciones. Es muy probable que se originen alunas fallas al momento de la ejecución, lo que ocasiona que este sea más tardado  El precio puede ser muy costoso, lo cual podría afectar a la hora de comprar los repuestos de recursos en el momento que se necesiten.  No podemos asegurar el tiempo que tardara en reparase dichas fallas.

Medidas de seguridad: Verificar que no esté conectada la PC a la energía eléctrica.  Descargar nuestra energía estática para no dañar los componentes. Usar los guantes. Memorizarte o apuntar donde van colocadas cada pieza y contarlas para que no se nos extravía alguna pieza.


Mantenimiento preventivo


Ventajas
- Bajo costo en relación con el mantenimiento predictivo: Reducción importante del riesgo por fallas o fugas. Reduce la posibilidad de paros imprevistos. Permite llevar un mejor control y planeación sobre el propio mantenimiento a ser aplicado en los equipos.

Desventajas

Entre sus pocas desventajas se encuentran: Se requiere tanto de experiencia del personal de mantenimiento como de las recomendaciones del fabricante para hacer el programa de mantenimiento a los equipos. No permite determinar con exactitud el desgaste de las piezas de los equipos.


Costos de mantenimiento


Los costos de mantenimiento son muy difíciles de estimar con anticipación. La evidencia de los sistemas existentes muestra que los costos de mantenimiento son lo más cuantioso del desarrollo y uso del sistema. El precio del mantenimiento varía mucho de una aplicación a otra, pero en promedio, representan alrededor de cuatro veces los costos de desarrollo en grandes sistemas de software. Para obtener los costos de mantenimiento se utiliza el TCA, Tráfico de Cambio Anual, el cual es un porcentaje de instrucciones que sufre un cambio por adición o modificación.Además, se toma en cuenta el esfuerzo de desarrollo estimado o real por personas-mes para hallar el esfuerzo anual requerido para el mantenimiento de software. Se calcula de la siguiente manera: EMA = 1.0 * TCA * TDS EMA y TDS son el esfuerzo de mantenimiento anual y tiempo de desarrollo del software, y las unidades de cada uno son personas-mes (p.m.). Por lo tanto, si un proyecto necesita 17 personas-mes de esfuerzo de desarrollo y se estima que un 15% del código podría ser modificado en un año, el esfuerzo de mantenimiento básico sería: EMA = 1.0 * 0.15 * 17 = 2.55 p.m. Este resultado nos sirve para calcular una cifra más precisa. La estimación de costos de mantenimiento se puede refinar si se juzga la importancia de cada factor que afecta al costo, multiplicando el costo de mantenimiento básico por un multiplicador que se le asigna a cada factor.

Se tomarán en cuenta los siguientes factores: Confiabilidad alta (1.1)  Disponibilidad del personal de apoyo con experiencia en el lenguaje (.85) y aplicaciones alta (.90).  Uso de prácticas modernas de programación alta (.80). Al aplicar estos factores como multiplicadores se obtiene lo siguiente: EMA = 2.55 * 1.10 * 0.85 * 0.90 * 0.80 = 1.71 p.m. Una vez que se obtiene el número de personas-mes para el mantenimiento, se busca el CMA, costo de mantenimiento, tomando en cuenta que se le pagan 5000 al mes a la persona encargada de mantenimiento: CMA = 1.71 * 5000 = 8550.