Módulo - Mantenimiento de Software

Author

Nury Farelo Velásquez

Ingeniería, Crisis y Mantenimiento del Software

  • Frente a la considerable velocidad con que se ha desarrollado la ingeniería de computadores (hardware), el desarrollo del software ha sufrido un retraso histórico en cuanto a la elaboración y disposición de un cuerpo de doctrina tecnológico (metodologías y herramientas) y científico (modelos o teorías en los que basar lo anterior).

  • En 1970 ya se había popularizado el término Crisis del Software para referir esta situación. Los síntomas de esta crisis han estado repercutiendo desde entonces en la industria de desarrollo de software y todavía se sienten sus efectos. Para resolver el problema surgió un área de la informática que recibe el nombre de Ingeniería del Software.

  • Una de las principales causas de esta situación ha sido la poca importancia que se le ha dado al proceso de Mantenimiento del Software desde todos los colectivos afectados (gestores de empresas, responsables de centros de proceso de datos, informáticos y usuarios).

  • Entre las numerosas definiciones de ingeniería del software existentes en la bibliografía es interesante la formulada por McDermid [1991]: “Ingeniería del software es la ciencia y arte de especificar, diseñar, llevar a cabo y desarrollar -con economía, prontitud y elegancia- programas, documentación y procedimientos operativos mediante los cuales los computadores pueden ser útiles para el ser humano”.

  • En esta definición llama la atención la inclusión de los aspectos artísticos (creatividad) y económicos. También refleja claramente que la ingeniería del software abarca la obtención de “productos” adicionales al código de los programas.

Introducción al mantenimiento de software

El mantenimiento de software es una actividad fundamental en el ciclo de vida del software, ya que implica la modificación y mejora de la funcionalidad de un sistema de software existente. Muchas veces el mantenimiento de software es necesario debido a la evolución de los requerimientos del negocio, la corrección de errores o la adaptación a nuevas tecnologías.

Existen varios tipos de mantenimiento de software, entre los cuales se encuentran:

  1. Mantenimiento correctivo: este tipo de mantenimiento se enfoca en corregir errores o fallas en un sistema de software. El mantenimiento correctivo es una actividad que se realiza después de que se ha detectado un error o problema en el sistema de software. El objetivo del mantenimiento correctivo es identificar la causa del problema y corregirlo de tal manera que el sistema de software vuelva a funcionar correctamente. El mantenimiento correctivo es importante porque permite que los errores en el sistema de software sean corregidos de manera oportuna, evitando que se propaguen y afecten otras áreas del sistema. Además, el mantenimiento correctivo puede mejorar la calidad del sistema de software a medida que se eliminan los errores y se mejoran los procesos.

  2. El mantenimiento adaptativo es un tipo de mantenimiento de software que se enfoca en adaptar un sistema de software a cambios en la tecnología o en el entorno. Esto significa que el mantenimiento adaptativo se realiza para asegurar que el sistema de software siga siendo efectivo y útil a medida que cambian las condiciones en las que se utiliza. Por ejemplo, si un sistema de software fue diseñado para funcionar en una versión específica de un sistema operativo, el mantenimiento adaptativo se puede utilizar para hacer que el sistema de software sea compatible con una versión más reciente del sistema operativo o para adaptarlo a una plataforma diferente.

    El mantenimiento adaptativo es importante porque permite que los sistemas de software sigan siendo útiles y efectivos en el tiempo, incluso a medida que cambian las condiciones del entorno en el que se utilizan. Además, el mantenimiento adaptativo puede ser más económico y menos riesgoso que la creación de un sistema de software completamente nuevo, ya que se basa en un sistema de software existente y probado en lugar de comenzar desde cero.

  3. El mantenimiento perfectivo se enfoca en mejorar la funcionalidad del sistema de software sin cambiar su comportamiento. Esto puede implicar la adición de nuevas características o la mejora de características existentes. El objetivo del mantenimiento perfectivo es mejorar la calidad y la usabilidad del sistema de software, lo que puede resultar en una mejor satisfacción del usuario y una mayor eficiencia en el uso del sistema. El mantenimiento perfectivo también puede ser necesario para mantener la competitividad del sistema de software en el mercado, ya que los usuarios esperan que los sistemas de software evolucionen y mejoren con el tiempo. En general, el mantenimiento perfectivo es una actividad importante en el ciclo de vida del software que ayuda a garantizar que un sistema de software siga siendo efectivo y relevante a medida que cambian las necesidades del usuario y las tecnologías disponibles.

  4. El mantenimiento evolutivo es un tipo de mantenimiento de software que se enfoca en agregar nuevas funcionalidades al sistema de software existente. Esto puede ser necesario debido a la evolución de los requerimientos del negocio o a la necesidad de adaptarse a nuevas tecnologías. El mantenimiento evolutivo puede ser una actividad compleja, ya que puede requerir cambios significativos en el diseño y la arquitectura del sistema de software existente. Sin embargo, el mantenimiento evolutivo también puede ser una forma efectiva de mejorar la funcionalidad y la usabilidad del sistema de software, lo que puede resultar en una mejor satisfacción del usuario y una mayor eficiencia en el uso del sistema. En general, el mantenimiento evolutivo es una actividad importante en el ciclo de vida del software que ayuda a garantizar que un sistema de software siga siendo efectivo y relevante a medida que cambian las necesidades del usuario y las tecnologías disponibles.

El mantenimiento de software es importante porque permite que los sistemas de software existentes sigan siendo útiles y efectivos en el tiempo. Además, el mantenimiento de software puede ser más económico y menos riesgoso que la creación de un sistema de software completamente nuevo.

Herramientas

Existen diversas herramientas para el mantenimiento de software que pueden ayudar a los desarrolladores a gestionar y mejorar sus sistemas de software. Algunas de las herramientas más comunes incluyen:

  • Control de versiones: una herramienta de control de versiones, como Git o Subversion, puede ayudar a los desarrolladores a rastrear los cambios en el código fuente y colaborar en el desarrollo de software de manera efectiva.
  • Herramientas de análisis de código: estas herramientas, como SonarQube o PMD, pueden ayudar a identificar problemas de calidad de código y ofrecer sugerencias de mejora.
  • Depuradores: los depuradores, como GDB o Visual Studio Debugger, son herramientas esenciales para encontrar y corregir errores en el software.
  • Herramientas de automatización de pruebas: herramientas como Selenium o JUnit pueden ayudar a automatizar las pruebas de software, lo que puede ahorrar tiempo y mejorar la calidad del software.
  • Herramientas de gestión de proyectos: herramientas de gestión de proyectos, como JIRA o Trello, pueden ayudar a los equipos de desarrollo a planificar, rastrear y colaborar en tareas de mantenimiento de software.
  • Herramientas de documentación: herramientas de documentación, como Doxygen o Javadoc, pueden ayudar a los desarrolladores a documentar el código fuente de manera efectiva y mantener la documentación actualizada.

En general, las herramientas de mantenimiento de software pueden ayudar a los desarrolladores a mejorar la calidad del software, aumentar la eficiencia del desarrollo y reducir el tiempo y los costos asociados con el mantenimiento de software.

Problemas

Un problema común en el mantenimiento de software es la falta de documentación adecuada. La documentación es esencial para comprender el propósito y el funcionamiento de un sistema de software, así como para facilitar el mantenimiento y la resolución de problemas. Sin embargo, a menudo se descuida la documentación durante el proceso de desarrollo o se vuelve obsoleta con el tiempo. Esto puede dificultar el mantenimiento del software y prolongar el tiempo necesario para realizar cambios o correcciones en el sistema. Además, la falta de documentación adecuada puede dificultar la colaboración y la transferencia de conocimientos entre los miembros del equipo de desarrollo.

💡 Cómo solucionaría los problemas de documentación en etapas de mantenimiento?

Proceso de mantenimiento de software

El mantenimiento de software es una tarea crítica en el ciclo de vida del desarrollo de software. El software es un producto complejo y puede tener errores o problemas que necesitan ser corregidos para que siga funcionando de manera efectiva. El mantenimiento de software es el proceso de mejora y corrección de software existente para mejorar su rendimiento y corregir errores.

El proceso de mantenimiento de software se puede dividir en tres categorías:

  1. Mantenimiento correctivo: Este tipo de mantenimiento se enfoca en corregir errores o defectos en el software. Los errores pueden ser encontrados por usuarios finales o pruebas organizadas. Por ejemplo, una aplicación puede tener un error que impida que los usuarios inicien sesión. Un departamento de soporte técnico puede recibir una queja de un usuario que no puede iniciar sesión, y luego reportar el problema al equipo de desarrollo para su corrección.

  2. Mantenimiento adaptativo: Este tipo de mantenimiento se enfoca en adaptar el software a cambios en el entorno, como cambios en el sistema operativo o hardware. El software puede necesitar actualizaciones para seguir funcionando en nuevos sistemas operativos o hardware. Además, el software puede necesitar cambios para cumplir con nuevos estándares de la industria o regulaciones gubernamentales.

  3. Mantenimiento perfectivo: Este tipo de mantenimiento se enfoca en mejorar el rendimiento o la funcionalidad del software. Se puede mejorar el rendimiento del software mediante la optimización del código o la eliminación de características innecesarias. También se pueden agregar nuevas características para mejorar la funcionalidad del software y hacerlo más útil para los usuarios.

El proceso de mantenimiento de software típicamente involucra las siguientes fases:

  1. Identificación del problema: El primer paso en el proceso de mantenimiento es identificar el problema en el software. Esto puede ser hecho por los usuarios finales, el equipo de soporte técnico o por el equipo de desarrollo. Los usuarios finales pueden informar problemas a través de una línea de soporte técnico o por correo electrónico. El equipo de soporte técnico puede recibir y registrar quejas de usuarios y reportar el problema al equipo de desarrollo. El equipo de desarrollo también puede identificar problemas durante el mantenimiento preventivo del software.

  2. Análisis del problema: Una vez que se ha identificado el problema, se realiza un análisis detallado para determinar la causa raíz del problema. El análisis puede incluir la revisión del código fuente, la revisión de la documentación del software y la realización de pruebas. El análisis puede ser realizado por el equipo de desarrollo o por un equipo de análisis de problemas dedicado.

  3. Desarrollo de la solución: Una vez que se ha identificado la causa raíz del problema, se desarrolla una solución para corregirlo. La solución puede incluir la corrección del código fuente, la actualización de la documentación del software y la eliminación de características innecesarias. La solución también debe ser diseñada para evitar la recurrencia del problema en el futuro.

  4. Pruebas: La solución desarrollada es probada para asegurar que resuelve el problema de manera efectiva y no causa nuevos problemas. Las pruebas pueden incluir pruebas de unidad, pruebas de integración y pruebas de sistema. Las pruebas son realizadas por el equipo de desarrollo o por un equipo de pruebas dedicado.

  5. Implementación: Una vez que se han completado las pruebas y se ha verificado que la solución funciona correctamente, se implementa en el software existente. La implementación puede ser realizada por el equipo de desarrollo o el equipo de soporte técnico. La implementación también puede requerir la actualización de la documentación del software y la capacitación de los usuarios.

  6. Evaluación: Finalmente, se evalúa la eficacia de la solución y se realiza un seguimiento para asegurar que el problema ha sido completamente resuelto. La evaluación puede incluir la realización de pruebas adicionales y la recopilación de comentarios de los usuarios. El seguimiento puede incluir la revisión del software en el futuro para asegurar que el problema no ha vuelto a ocurrir.

El proceso de mantenimiento de software es crítico para mantener la calidad del software y asegurar que continúe funcionando de manera efectiva. Un mantenimiento adecuado del software puede ayudar a prevenir errores y problemas futuros, lo que puede ahorrar tiempo y recursos valiosos.