Que es?
todo software llega a un momento en el cual necesita mejorar y reconstruirse, creando un producto con una funcionalidad agregada, mejor desempeño y confiabilidad, asi como mantenibilidad mejorada a eso se le llama reingenieria
Quien lo hace?
la realizan especialistas en negocios, con frecuencias consultores, en el software lo hacen ingenieros de software
Porque es importante?
el mundo esta en cambio constante, ante nuevas necesidades se deben implementar nuevas funcionalidades, por ejemplo con la incorporacion del pago electronico se implanto el qr, el cual actualmente nos permite realizar pagos con la facilidad de escanear un qr, comprobar el pago y realizar el mismo desde nuestra cuenta de banco, Por lo cual, el software debe mantenerse continuamente y en el momento adecuado someterse a una reingenieria para cubrir las necesidades y el cambio
el mundo esta en cambio constante, ante nuevas necesidades se deben implementar nuevas funcionalidades, por ejemplo con la incorporacion del pago electronico se implanto el qr, el cual actualmente nos permite realizar pagos con la facilidad de escanear un qr, comprobar el pago y realizar el mismo desde nuestra cuenta de banco, Por lo cual, el software debe mantenerse continuamente y en el momento adecuado someterse a una reingenieria para cubrir las necesidades y el cambio
Cuales son los pasos?
estrategicamente la reingenieria de procesos de empresa RPE define las metas empresariales, identifica y evalua los procesos existentes y crea procesos empresariales revisados que satisfacen mejor las metas del momento
la intencion de dichas actividades es crear versiones de los programas existentes mejorados
Mantenimiento.
sin importar la aplicacion, tamaño, complejidad, el software evoluciona con el tiempo
los cambios ocurren: suelen aparecer errores, necesidad o actualizacion del entorno, el cliente puede solicitar nuevos requerimientos, caracteristicas o funciones lo que resulta en una reingenieria.
manni lehman "realiza un analisis detallado donde destacan leyes subyacentes"
Mantenimiento de Software
Liberan el software: cuando se libera aparecen errores, aparece la necesidad de nuevos requerimientos, el reto del mantenimiento comienza
Tiempo: A lo largo del tiempo se requiere un mayor mantenimiento, cambio de personal y evolucion de las plataformas
el software se construyo con estandares que con el paso del tiempo pueden cambiar y los antiguos dejan de ser viables
Tipos de mantenimiento
Mantenimiento perfectivo/evolutivo: (60%) mejora del software (rendimiento, flexibilidad, reusabilidad..) o implementacion de nuevos requisitos
Mantenimiento adaptativo: (18%) adaptacion del software a cambios en su entorno tecnologico (nuevo hardware, otro sistema de gestion de bases de datos, otro sistema operativo..)
Mantenimiento Correctivo:(17%) correccion de fallos detectados durante la explotacion
Mantenimiento preventivo(5%): facilitar el mantenimiento futuro del sistema
Efecto ICEBERG
Es importante tomar en cuenta el factor economico y el de tiempo
- Costos intangibles significativos
- Insatisfaccion del cliente
- cuando no es posible de manera inmediata
- Errores ocultos
- pequeñas modificaciones, introduce cambios que reducen la calidad del software, se deben actualizar todas las etapas para que se cumplan los requerimientos
- Proyectos en espera:
Producen mantenimientos
- Costos intangibles significativos
- mas de 10 años de operacion
- se encuentran en el mercado un gran numero de sistemas que llevan mas de 10 años de operacion
- modificaciones
- reparaciones, modificaciones, ajustes, personalizacion, migraciones
- Donde queda la arquitectura?
- los cambios se realizan con el pensamiento de respetar y ser coherentes con la arquitectura del sistema
- porque continuar?
- porque no crear software nuevo en vez de mantener?
- cuando reparar
- mientras antes se identifique los errores y se reparen menores seran los gastos
- el software de calidad es una constante?
- una mala logica en el desarrollo del software puede hacer que el software este mal desde que se programa y se arrastra con el tiempo
Actividades Mantenimiento
- Comprension del software: para modificarlo debemos conocer toda su estructura, un software antiguo mal documentado podria dificultar mucho o imposibilitar cambios
- Modificacion del software: se puede realizar la modificacion del software si se conoce la estructura
- Realizar pruebas: realizar pruebas a los cambios realizados
Dificultades de mantenimiento
- Mantener sin destruir: el reto es modificar sin alterar la calidad del codigo
- Codigo heredado; que se hace con el codigo heredado o legacy? El codigo al haber sido modificado varias veces por diferentes equipos de trabajo tiene una menor fiabilidad o garantia de un correcto funcionamienot
Leyes de mantenimiento (lheman)
- Un programa debe actualizarse para seguir existiendo
- los usuarios buscan nuevas funcionalidades que les sean utiles
- la tecnologia avanza y hadware aparece con nuevas funcionalidades
- Incremento a la complejidad: cuando se realizan cambios en un sistema (mantenimiento) se vuelven mas complejas las estructuras que lo constituyen
- Evolucion del programa: deben ser reguladas y planificadas, llevando un control a dicho crecimiento
- Conservacion de la estabilidad organizacional: el costo de mantenimiento deberia mantenerse estable para considerarlo viable
- conservacion de la familiaridad: durante el tiempo de vida de un sistema, el numero de cambios introducidos deben ser constantes
Problemas de mantenimiento
- Ausencia metodologica: no existe un proceso metodologico centrado en el mantenimiento sino mas centrado al desarrollo del sistema
- Tendencia a la desestructuracion con cada cambio se ve moenos estructurado un sistema, la documentacion lo evidencia
- menos comprensibilidad: cada programador tiene su propia logica al desarrollar el producto, nuevas logicas provocan un grado mayor de dificultad
- poca participacion del usuario: si el usuario no participa el software no respondera adecuadamente a sus necesidades y requerira un mantenimiento constante