El documento habla sobre el mantenimiento de software. Explica que el mantenimiento de software implica modificar un producto de software después de su lanzamiento para corregir errores, mejorar el rendimiento u otros atributos. También describe que el mantenimiento de software es una de las fases del ciclo de vida de desarrollo de sistemas y que involucra actividades como correcciones de errores, mejoras de funcionalidad y optimizaciones.
2. En ingeniería del software, el mantenimiento de software es la
modificación de un producto de software después de la entrega, para
corregir errores, mejorar el rendimiento, u otros atributos.1 El
mantenimiento del software es una de las actividades más comunes
en la ingeniería de software.
El mantenimiento de software es también una de las fases en el ciclo
de vida de desarrollo de sistemas (SDLC, sigla en inglés de system
development life cycle), que se aplica al desarrollo de software. La
fase de mantenimiento es la fase que viene después del despliegue
(implementación) del software en el campo.
Una percepción común del mantenimiento es que se trata meramente
de la corrección de defectos. Sin embargo, un estudio indicó que la
3. El mantenimiento del software y la evolución
de los sistemas fue abordada por primera vez
por Meir M. Lehman en 1969. Durante un
período de veinte años, su investigación
condujo a la formulación de las leyes de
Lehman (Lehman 1997). Principales
conclusiones de su investigación incluyen que
el mantenimiento es realmente un desarrollo
evolutivo y que las decisiones de
mantenimiento son ayudadas por entender lo
que sucede a los sistemas (y al software) con
el tiempo. Lehman demostró que los sistemas
continúan evolucionando con el tiempo. A
medida que evolucionan, ellos crecen más
complejos a menos que se toman algunas
medidas como refactorización de código para
reducir la complejidad.
Los problemas claves de mantenimiento de
entendimiento, análisis de impacto, pruebas
(testing), medición de mantenibilidad.
El mantenimiento de software es una
actividad muy amplia que incluye la
corrección de errores, mejoras de las
capacidades, eliminación de funciones
obsoletas y optimización. Debido a que el
cambio es inevitable, se debe desarrollar
mecanismos para la evaluación, controlar y
hacer modificaciones.
Así que cualquier trabajo realizado para
cambiar el software después de que esté en
operación es considerado trabajo de
mantenimiento. El propósito es preservar el
valor del software sobre el tiempo. El valor
puede ser mejorado ampliando la base de
4. IMPORTANCIA DEL
MANTENIMIENTO DE
SOFTWARE.A finales de los años 1970, una famosa y ampliamente citada estudio de encuesta por Lientz y Swanson,
expuso la muy alta fracción de los costos del ciclo de vida que estaban siendo gastados en
mantenimiento. Clasificaron las actividades de mantenimiento en cuatro clases:
• Adaptable – modificar el sistema para hacer frente a cambios en el ambiente del software (DBMS,
OS).
• Perfectivo – implementar nuevos, o cambiar requerimientos de usuario referentes a mejoras
funcionales para el software.
• Correctivo, diagnosticar y corregir errores, posiblemente los encontrados por los usuarios.
• Preventiva – aumentar la capacidad de mantenimiento de software o fiabilidad para evitar
problemas en el futuro.
La encuesta mostró que alrededor del 75% del esfuerzo de mantenimiento fue en los dos primeros dos
tipos, y la corrección de errores consumía aproximadamente el 21%. Muchos estudios posteriores
sugieren una magnitud similar del problema. Los estudios muestran que la contribución del usuario
5. Impacto de los factores clave de ajuste en el
mantenimiento (por orden de máximo impacto
positivo)
Factores de mantenimiento Rango más
Especialistas de mantenimiento 35%
Experiencia alta del personal 34%
Variables y datos manejados por tablas
33%
Baja complejidad de la base de código
32%
Y2K y motores especiales de búsqueda
30%
Herramientas de reestructuración de código
29%
Herramientas de reingeniería 27%
Lenguajes de programación de alto nivel
25%
Herramientas de ingeniería inversa 23%
Herramientas de análisis de complejidad
20%
Especialistas en "actualización masiva" Y2K
20%
Herramientas de control de cambio automático
18%
Horas extras no pagadas 18%
Mediciones de calidad 16%
Inspecciones formales de la base de código
15%
Bibliotecas de pruebas de regresión 15%
Tiempo de respuesta excelente 12%
Formación anual de > 10 días 12%
Experiencia de la alta gerencia 12%
Automatización del HELP desk 12%
No módulos propensos a errores 10%
Reporte de defectos en-línea 10%
Medidas de productividad 8%
Excellent ease of use 7%
Medidas de satisfacción de usuarios 5%
Alta moral del equipo 5%
6. Impacto de los factores clave de ajuste en el
mantenimiento (por orden de máximo impacto
negativo)
Factores de mantenimiento Rango menos
Módulos propensos a errores -50%
Datos y variables incrustados -45%
Inexperiencia del personal -40%
Alta complejidad del código -30%
No Y2K de motores de búsqueda especiales -
28%
Métodos manuales de control de cambio -
27%
Lenguajes de programación de bajo nivel -
25%
Ninguna herramienta de seguimiento de defectos
-24%
No hay especialistas en "actualización masiva"
Y2K -22%
Pobre facilidad de uso -18%
Tiempo de respuesta pobre-16%
No hay inspecciones de código -15%
No hay bibliotecas de pruebas de regresión -
15%
No hay automatización del help desk -
15%
No hay reportes de defecto en línea -12%
Falta de experiencia de gestión -15%
No hay herramientas de reestructuración -
10%
No hay entrenamiento anual -10%
Ningunas herramientas de reingeniería -
10%
No hay herramientas de ingeniería inversa -
10%
No hay herramientas de análisis de la
complejidad -10%
No hay medidas de productividad -7%
Moral pobre del equipo -6%
No hay medidas de satisfacción del usuario -4%
7. FASE DE
MANTENIMIENTOLa fase de mantenimiento de software involucra cambios al software para corregir defectos encontrados durante su uso o la adición de
nueva funcionalidad mejorando la usabilidad y aplicabilidad del software.
El mantenimiento del software involucra diferentes técnicas específicas. Una técnica es el rebanamiento estático, la cual es usada para
identificar todo el código de programa que puede modificar alguna variable. Es generalmente útil en la refabricación del código del
programa y fue específicamente útil en asegurar conformidad para el problema del año 2000.
La fase de mantenimiento de software es una parte explícita del modelo en cascada del proceso de desarrollo de software el cual fue
desarrollado durante el movimiento de programación estructurada en computadores. El otro gran modelo, el Desarrollo en espiral
desarrollado durante el movimiento de ingeniería de software orientada a objeto no hace una mención explícita de la fase de
mantenimiento. Sin embargo, esta actividad es notable, considerando el hecho de que dos tercios del coste del tiempo de vida de un
sistema de software involucran
En un ambiente formal de desarrollo de software, la organización o equipo de desarrollo tendrán algún mecanismo para documentar y
rastrear defectos y deficiencias. El Software tan igual como la mayoría de otros productos, es típicamente lanzado con un conjunto
conocido de defectos y deficiencias. El software es lanzado con esos defectos conocidos porque la organización de desarrollo en las
utilidades y el valor del software en un determinado nivel de calidad compensa el impacto de los defectos y deficiencias conocidas.
Las deficiencias conocidas son normalmente documentadas en una carta de consideraciones operacionales o notas de lanzamiento (release
notes) es así que los usuarios del software serán capaces de trabajar evitando las deficiencias conocidas y conocerán cuándo el uso del
software sería inadecuado para tareas específicas.
Con el lanzamiento del software (software release), otros defectos y deficiencias no documentados serán descubiertas por los usuarios del
software. Tan pronto como estos defectos sean reportados a la organización de desarrollo, serán ingresados en el sistema de rastreo de
defectos.
8. MANTENIMIENTO
PREVENTIVO DE SOFTWARE.
El mantenimiento preventivo consiste en una atención constante de limpieza, revisión y afinación de los
distintos elementos integrantes de un equipo de cómputo. Es importante saber que la mayoría de los
problemas que se presentan en el trabajo cotidiano, se debe a la falta de un programa específico de
mantenimiento de los equipos, de tal manera que la mayoría de los problemas se resuelven con el mismo
procedimiento del mantenimiento preventivo. El mantenimiento tiene técnicas para darle un periodo de
vida útil más largo y libre de fallas. Debemos de tener en cuenta que es necesario darle mantenimiento al
software ya que el continuo uso genera una serie de cambios en la configuración original del sistema,
causando bajas en el rendimiento que al acumularse con el tiempo pueden generar problemas serios.
Actualmente es indispensable mantener actualizada la protección contra virus informáticos.
Por supuesto es muy recomendable usar su equipo responsablemente, ya que esto le podrá causar un
gasto mayor a futuro.
Las recomendaciones son: Cuidar las páginas a las que accesa, las de música, videos o juegos
regularmente traen enlaces que pueden filtrarse directamente al equipo de cómputo, tener un antivirus
actualizado, hacer cada cierto tiempo un escaneado y limpieza de su PC, evitar los mensajes SPAM que
llegan en los correos electrónicos, estos mensajes llegan normalmente con remitente desconocido y se
almacenan en la carpeta Correo no deseado, generalmente son solo virus que no hacen mucho daño, pero