Introducción.
Después de que los sistemas hayan
sido desarrollados, inevitablemente han de sufrir cambios si tienen que seguir
siendo útiles. Una vez que el software comienza a utilizarse, surgen nuevos
requerimientos y los requerimientos existentes cambian Los cambios en los
procesos de negocio a menudo generan nuevos requerimientos en el software
existente. Algunas partes del software tienen a modificarse para corregir
errores encontrados en su funcionamiento, adaptarlo a una nueva plataforma y mejorar su rendimiento. Por lo tanto, el desarrollo
de software no se detiene al entregarlo, sin que continua durante el tiempo de
vida del sistema. (Sommerville, 2005)
Desarrollo.
Definición de conceptos.
Es en este punto del desarrollo de
software donde aparecen los conceptos de soporte y mantenimiento. Hay múltiples
y muy distintas definiciones de estos conceptos, que pueden llegar a ser utilizados
como sinónimos, aunque no en todos los casos esto sea correcto. Algunas de las definiciones más aceptadas son
las siguientes:
·
Soporte de Software:
o
“El soporte de software es el conjunto de
servicios que tienen la finalidad de ayudar a resolver los problemas que puedan
presentárseles a los usuarios, mientras hacen uso de servicios, programas o
dispositivos.” (Sommerville, 2005)
o
“Dícese de todo aquel servicio especializado y
directo que provee de ayuda técnica para asegurar un buen uso por parte del
usuario de los productos de software que
se consumen.” (Weitzenfield, 2004)
o
“Es la ayuda prestada a los usuarios de sistemas
de información, plataformas, programas y demás productos de software con el fin
último de brindar infamación que facilite el uso del software, así como de
despejar dudas y de auxiliar a los
usaros para actuar durante casos de un malfuncionamiento por parte del sistema.” (Pressman,
2005)
·
Mantenimiento de Software:
o
“Etapa del desarrollo de software posterior a la
implantación en la cual el sistema original es modificado debido algún fallo o
error, ya sea presentado o potencial, o cambios en las funcionalidades del sistema
debido a cambios en los procesos en que está basado o cuestiones externas a los
requerimientos originales.” (Fouruzan, 2007)
o
“La fase mantenimiento se centra en el
cambio que va asociado a la corrección de errores, a las adaptaciones
requeridas a medida que evoluciona el entorno del software, y a cambios debidos
a las mejoras producidas por los requisitos cambiantes del cliente” (Pressman, 2005)
o
“Actividades realizadas a un software
funcionando que tienen la finalidad de actualizar las funciones del software,
dar atención a nuevos requerimientos y cambios en los ya existentes y poder
corregir fallos que se presentaron en el software durante su utilización así
como prevenir errores que pudieran acontecer” (Weitzenfield, 2004)
o
“Proceso general de cambiar un sistema después de
haberlo entregado” (Sommerville, 2005)
Tras analizar estas definiciones,
podemos darnos cuenta que la principal diferencia que tienen el mantenimiento y
el soporte es a quien está dirigido, mientras que el soporte son los servicios
y ayudas que le son prestados al usuario, el mantenimiento va aplicado al software con lo que se constituyen
finalidades completamente distintas.
A continuación, se profundizara
en cada uno de los conceptos que se han definido anteriormente.
Mantenimiento de software.
Tras haber definido lo que es el
mantenimiento de software, podemos proceder a interpretar las características de
cada uno de los distintos tipos que existen, ya que hay diversas formas y
distintos propósitos por los que se le da mantenimiento al software.
Los cambios realizados al software
pueden ser cambios sencillos para corregir errores de código, cambios mas extensos
para corregir errores de diseño o mejoras significativas para corregir errores
de especificación o acomodar nuevos requerimientos y para modificar los
componentes del sistema existente y añadir nuevo en caso de una nueva
funcionalidad. (Sommerville, 2005)
A partir de la finalidad del mantenimiento,
podemos clasificar el mantenimiento en distintos tipos:
Ø Mantenimiento
Preventivo.
Es aquel
mantenimiento que pretende anticipar potenciales errores o fallos, modificando
el sistema para evitarlos en el futuro. (Weitzenfield, 2004)
Muchas veces los
desarrolladores dependen de los usuarios para ofrecer mantenimiento preventivo,
ya que es durante la ejecución de un programa o al usar un sistema donde pueden
observase los potenciales errores, o simplemente indicios o detalles que no ocasionan
un malfuncionamiento del software pero pueden llevar a eso o ser
malinterpretados. Su costo suele variar, ya que puede tratarse de correcciones
sencillas de código o desencadenar una modificación en el diseño del sistema.
Ejemplos:
Validaciones incorrectas de formularios, información incorrecta.
Ø Mantenimiento
Correctivo.
Mantenimiento
para reparar defectos del software. (Sommerville, 2005)
Son aquellas modificaciones
que se dan con la finalidad de reparar o corregir un error que ya se presento
durante la ejecución de un programa o uso de un sistema. Al igual que la clasificación
anterior, tiene un costo muy variable ya que puede corregir errores sencillos
de código ó operación o también errores de diseño, los cuales son muchos más
costosos.
Ejemplos:
Errores en bases de datos, mal manejo de procesos de negocio.
Ø Mantenimiento
Adaptativo.
Mantenimiento
para adaptar el software a diferentes entornos operativos. (Sommerville,
2005)
Este tipo de mantenimiento se requiere cuando cambia algún aspecto del entorno
del sistema, como por ejemplo el hardware, la plataforma del sistema operativo
u otro software del que dependa, suele tener un costo medio-alto, ya que se
requieren contemplar diversos aspectos desde amientes gráficos hasta el diseño
estructural del software.
Ejemplos: Implementación
de multiplataforma, actualizaciones por hardware (monitores, discos duros,
memorias, etc.).
Ø Mantenimiento
perfectivo.
Mantenimiento
para añadir o modificar funcionalidades del sistema. (Sommerville,
2005)
Este mantenimiento
es necesario cuando los requerimientos de un sistema cambian respondiendo a
cambios del proceso de negocio. Pretende perfeccionar el software implementando
nuevos requerimientos o implantando nuevos en el sistema, en esencia tiene el
fin de mantener la funcionalidad del sistema pero mejorando su estructura su
rendimiento, en general, ya que las modificaciones suelen ser mucho mayores que
en otro tipo de mantenimiento, el costo suele ser elevado.
Ejemplos: Nuevos
módulos, mejora de procesos, implementación de nuevas tecnologías.
¿Cuáles son los factores que elevan el costo del mantenimiento?
Una razón importante por la que los costos de mantenimiento
son altos es que es más caro añadir funcionalidades después de que el sistema
este en funcionamiento que implementar la misma funcionalidad durante el desarrollo.
Los factores clave que distinguen el desarrollo y mantenimiento y conducen a
costos más elevados son: (Sommerville, 2005)
1. Estabilidad
del equipo de desarrollo.
Sabemos que es
normal que un equipo de trabajo pueda disolverse tras la entrega de un
proyecto. Es posible que los nuevos integrantes del equipo encargado del mantenimiento
del sistema ano conozcan el mismo, ni las razones por las que debe dársele el mantenimiento.
Es difícil, costoso y lleva tiempo capacitara
quipos de trabajo para que sean competentes en el proceso de mantenimiento de
un sistema, ya que primero se debe asegurar la total comprensión del mismo
antes de producir cambios en el. (Weitzenfield, 2004)
2. Responsabilidad
contractual.
El contrato para
mantener un sistema, normalmente está separado al contrato para desarrollar un
sistema. Este factor, junto con la ausencias del estabilidad en el equipo, que podría
no ser el mismo que mantiene que el que desarrolla implica dificultades, ya que
si el equipo de desarrollo realiza ciertas acciones para ahorrar esfuerzo
durante el proceso de desarrollo lo hará sin tomar en cuenta lo difícil que
puede llegar a ser modificarlo, ni preocupándose porque se pudieran incrementar
costos de mantenimiento. (Sommerville, 2005)
3. Habilidad
del personal.
Es sabido que
muy a menudo se asignan a equipos menormente capacitados para el mantenimiento que
para el desarrollo, ya que muchas veces los desarrolladores consideran al
mantenimiento como un proceso donde se requieren de menos habilidades que
durante las fases del desarrollo. (Pressman, 2005)
4. Edad
y estructura del programa.
Los programas y
su estructura suelen degradarse con el tiempo y la salida al mercado de nuevas tecnologías.
Las versiones antiguas suelen ser desarrolladas sin gestión de configuraciones,
lo que vuelve difícil ubicar versiones para modificar el sistema.
¿Qué se debe considerar en el entorno para realizar cambios?
Para evaluar las relaciones entre
un sistema y su entorno debería tomarse en cuenta:
Ø Número
y complejidad de interfaces.
Es más probable
un cambio en un sistema con muchas interfaces, entre mayor el número, mayor la posibilidad
de un cambio.
Ø Número
de requerimientos volátiles.
Los requerimientos
volátiles son aquellos que se basan en procesos de empresas independientes o procedimientos
internos y únicos, entre más de estos existan en un sistema, es más probable un
cambio, ya que son muy susceptibles a modificarse con el tiempo.
Ø Procesos
de negocio.
Ya que los
procesos de negocio van cambiando acorde con la sociedad, mientras mas procesos
de negocio se contemplen, habrá más peticiones de cambio en el sistema. (Sommerville,
2005)
Conclusión.
A partir de los conceptos definidos y examinados, llegamos a
la conclusión de que el mantenimiento y el desarrollo de un sistema, no deben
ser considerados como etapas independientes una de la otra, ya que muchas
veces, esto puede traer problemas durante la fase de mantenimiento, incluidos
el equipo y las versiones, y elevando los costos que se tienen previstos.
Se observa que el proceso de mantenimiento tiene la finalidad
de alargar la vida funcional del software y que más que un gasto se considera
una inversión que protege el costo cubierto por el desarrollo inicial del
software.
También diferenciamos claramente el distinto enfoque que
tienen el mantenimiento y el soporte de software, sus finalidades y los casos
en que se debe hacer uso de cada uno.
Bibliografía
Fouruzan, B. A. (2007). Desarrollo de software y
UML. McGraw-Hill.
Pressman, R. (2005). Ingeniería de Software.
Pearson.
Sommerville, I. (2005). Ingenieria de Software
(Séptima ed.). Ciudad de México: Pearson.
Weitzenfield, A.
(2004). Ingenieria de Software orientada a objetos con UML, Java e
internet. Thomson.
No hay comentarios:
Publicar un comentario