Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Pero definen en común que el mantenimiento de software se realiza cuando hay cambios en este
y pueden ser debido a deferentes fuentes como defecto, fallo, una mejora, adaptación, etc. Todo
con el fin de tener un producto de alta calidad para el servicio de su fin.
Tipos de manteamiento
Mantenimiento Preventivo
Este tipo de mantenimiento se realiza cambios en el software para mejorar las propiedades, esto
sin realizar cambios en su funcionalidad. Como por ejemplo la integración de nuevo código para
comprobar la validez de los datos, organizar el código dado un estándar, etc.
Mantenimiento Correctivo
tiene por objetivo localizar y eliminar los posibles defectos de los programas.
Interfaz de hardware
Interfaz de software
Interfaz de usuario
Lógica
Manejo de datos
Estándares
Especificación/Diseño
Comprobación de errores
un defecto abarca todo el proceso productivo del desarrollo de software y los artefactos que este
produce, es decir que los defectos se inyectan en las diferentes etapas del Ciclo de Vida del
Desarrollo de software y no solo en la fase de desarrollo. Un defecto pude ser ingresado por
ejemplo en un manual de usuario que especifica una funcionalidad no disponible, esto finalmente
sigue siendo un defecto del software si la miramos no solo como el programa que usa el cliente
sino como todo un paquete que incluye varios componentes, entre ellos la documentación.
La mayoría de los defectos se producen en etapas tempranas del proceso de desarrollo, por lo que
en estas etapas debe existir una estructura robusta de control y no solo en la verificación y
validación del producto final.
Mantenimiento Adaptativo
Como su nombre lo indica este mantenimiento consiste en la modificación de un programa debido
a cambios en el entorno en el cual se ejecuta, estos pueden ser de hardware o software. por
ejemplo, cambio en las configuraciones del hardware, software de base, gestores de base de
datos, comunicaciones, etc. Estos cambios pueden ser muy pequeño o una completa
reestructuración del programa.
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.
Este tipo de mantenimiento es cada vez más usado debido a la integración de nuevas tecnologías y
actualización de los sistemas operativos.
Mantenimiento Perfectivo
consiste en la modificación en la especificación, normalmente debidos a cambios en los requisitos
de un producto software. realiza acciones para mejorar la calidad interna de los sistemas en
cualquiera de sus aspectos: restructuración de código, definición más clara del sistema y
optimización del rendimiento y eficiencia.
Desde algo tan simple como cambiar el formato de impresión de un informe, hasta la
incorporación de un nuevo módulo aplicativo
Entre mayor sea el éxito tenga un programa y es utilizado por muchos usuarios, mayor será el uso
de este software y aumenta la utilización de este mantenimiento. más peticiones de los usuarios
se reciben demandando nuevas funcionalidades o mejoras en las existentes.
Pruebas
Existen diferentes definiciones dadas por diferentes autores, pero nos quedares con la definida
por Myers, que define la prueba como: “La prueba es la ejecución de un programa con la intención
de encontrar errores”. Debido a que es mejor en centrarse en buscar defectos y no buscar la
perfección no existe programas sin errores.
Por ejemplo, un programa bancario tiene un defecto en su seguridad. Si un hacker negro ingresa y
realiza movimientos bancarios, modifica, elimina y sus trae información. Esto genera al banco
grandes pérdidas tanto económicas como de prestigio. Por ende, existen hackers blancos que
realizan pruebas de ingreso para evitar este tipo de escenarios. Cada recalcar que se deben
realizar pruebas antes y durante del lanzamiento al público de un programa.
Técnicas de pruebas
Para encontrar errores de código, dos de las técnicas mas usadas son de caja blanca y caja negra.
Las Pruebas de Caja Negra, es una técnica de pruebas de software en la cual la funcionalidad se
verifica sin tomar en cuenta la estructura interna de código, detalles de implementación o
escenarios de ejecución internos en el software.
En las pruebas de caja negra, nos enfocamos solamente en las entradas y salidas del sistema, sin
preocuparnos en tener conocimiento de la estructura interna del programa de software. Para
obtener el detalle de cuáles deben ser esas entradas y salidas, nos basamos en los requerimientos
de software y especificaciones funcionales.
Las pruebas de caja blanca, también como Técnicas de Caja Transparente o de Cristal.
Este método se centra en cómo diseñar los casos de prueba atendiendo al comportamiento
interno y la estructura del programa. Se examina así la lógica interna del programa sin considerar
los aspectos de rendimiento.
El objetivo de la técnica es diseñar casos de prueba para que se ejecuten, al menos una vez, todas
las sentencias del programa, y todas las condiciones tanto en su vertiente verdadera como falsa.
Una buena prueba ha de tener una alta probabilidad de encontrar un fallo. Para alcanzar
este objetivo el responsable de la prueba debe entender el software e intentar desarrollar
una imagen mental de cómo podría fallar.
Una buena prueba debe centrarse en dos objetivos: 1) probar si el software no hace lo que
debe hacer, y 2) probar si el software hace lo que no debe hacer. − Una buena prueba no
debe ser redundante. El tiempo y los recursos son limitados, así que todas las pruebas
deberían tener un propósito diferente.
Una buena prueba debería ser la “mejor de la cosecha”. Esto es, se debería emplear la
prueba que tenga la más alta probabilidad de descubrir una clase entera de errores.
Una buena prueba no debería ser ni demasiado sencilla ni demasiado compleja, pero si se
quieren combinar varias pruebas a la vez se pueden enmascarar errores, por lo que en
general, cada prueba debería realizarse separadamente.
Actividades de mantenimiento
Basili et al. [1996] identifican las siguientes once actividades, que se realizan con cada
modificación del software:
Se tiene que tener en cuenta estas actividades a la hora de realizar el mantenimiento por que
puede anular el objetivo de este y generando nuevos defectos.
Problemas de mantenimiento
Tenemos los problemas de código Heredado
la mayor parte de este software está formado por código antiguo “heredado”, código de
aplicaciones desarrolladas hace algún tiempo, con técnicas y herramientas en desuso y
probablemente por personas que ya no pertenecen al colectivo responsable en este momento del
mantenimiento del software concreto.
Los problemas específicos del mantenimiento de código heredado han sido caracterizados en las
llamadas Leyes del Mantenimiento del Software.
Continuidad del Cambio: los programas deben de cambiar con el entorno si no lo hacen se vuelven
obsoletos.
Existen diversos estándares que tienen una relación directa o indirecta con el mantenimiento del
software:
Para los procesos del ciclo de vida del software: IEEE 1074 e ISO 12207.
Para la calidad del software y sus métricas: IEEE 1061 e ISO 9126.
Para el mantenimiento del software: IEEE 1219 e ISO/IEC 14764.
Los estándares de calidad del software tienen gran importancia para el mantenimiento del mismo,
debido a que los factores de calidad (especialmente la complejidad y la mantenibilidad) inciden de
forma directa sobre el esfuerzo de mantenimiento necesario.
La norma propone un plan que forma parte de la estrategia de mantenimiento, dicho plan es
usado para guiar a los mantenedores de software, explica la necesidad de realizar mantenimiento,
refiriéndose a quién efectúa ese trabajo y cómo se hace, contiene la documentación y
responsabilidades de todos los involucrados. Además, debe incluir qué recursos hay disponibles
para el mantenimiento, dónde se hace y cuándo comienza. Una vez definido dicho plan, el
estándar propone establecer una guía para desarrollar el mantenimiento.
Requisitos de la Guía
Los requisitos que debe de contener esta guía para este estándar son:
La descripción del sistema al que se le brinda soporte, aquí se especifican todos los
detalles del sistema a mantener.
Identificación del estado inicial del software, para saber cuáles son los cambios nuevos
realizados.
Descripción del soporte para facilitar el comienzo del desarrollo del mantenimiento del
software.
Identificación de la organización que debe hacer el soporte o mantenimiento para
contemplar el objetivo del mantenimiento en el proceso de desarrollo del software.
Descripción de cualquier acuerdo entre cliente y vendedor, se debe tener claro lo que
quiere el cliente por escrito, de este modo el vendedor sabe lo que tiene que hacer para
satisfacer al cliente.
Actividades de Mantenimiento
Estos son los aspectos fundamentales en cuanto a la estrategia de mantenimiento que propone el
estándar. Las actividades que comprende el proceso de mantenimiento son:
Básicamente éste es el enfoque que brinda la norma ISO 14764 para realizar la actividad de
mantenimiento de software. Esta norma identifica adecuadamente qué hacer en las actividades y
tareas a desarrollar en el proceso de mantenimiento.
Fases de la Norma
Esta norma plantea un proceso de mantenimiento con gran nivel de detalle y documentación a
llevar para su desarrollo, haciéndolo muy útil y necesario sobre todo en los lugares que se realiza
mantenimiento del software, aquí es fundamental la traza que marca el estado y evolución de
cada una de las fases pero pudiera resultar excesivo para pequeñas organizaciones que deseen
aplicar dicho estándar en el mantenimiento de sus sistemas internos.