Está en la página 1de 18

UNIVERCIDAD TECNOLOGICA DE LA COSTA

GRANDE DE GUERRERO

CARRERA:

Tecnologías de la Información y Comunicación Área


Desarrollo de Software Multiplataforma

ASIGNATURA:

Fundamentos TI

PROFESOR:

Ing. Javier Sánchez Mendoza

ALUMNO:

Dennis Eduardo Ramírez Galeana

GRADO Y GRUPO:

”1-1” “TI”
índice

Contenido
ingeniería y mantenimiento del software..................................................................4

El ciclo de la vida y el mantenimiento del software..................................................4

Coste del mantenimiento del software.....................................................................5

Tipos de mantenimiento...........................................................................................5

Mantenimiento correctivo......................................................................................6

Mantenimiento adaptativo.....................................................................................6

Mantenimiento perfectivo......................................................................................6

Mantenimiento preventivo.....................................................................................7

ACTIVIDADES DE MANTENIMIENTO....................................................................7

DIFICULTADES DEL MANTENIMIENTO................................................................7

CÓDIGO HEREDADO..........................................................................................8

PROBLEMAS DEL MANTENIMIENTO................................................................8

EFECTOS SECUNDARIOS DEL MANTENIMIENTO..........................................9

Efectos secundarios sobre el código.................................................................9

Efectos secundarios sobre los datos.................................................................9

Efectos secundarios sobre la documentación.................................................10

SOLUCIONES AL PROBLEMA DEL MANTENIMIENTO.......................................10

Recursos dedicados al mantenimiento...............................................................10

Gestión de la calidad..........................................................................................10

Gestión estructurada del mantenimiento............................................................11

Organización del equipo humano.......................................................................11

Documentación de los cambios..........................................................................12

SOLUCIONES TÉCNICAS.................................................................................12
MANTENIBILIDAD.................................................................................................13

DISTINTOS ENFOQUES PARA LA FACILIDAD DE MANTENIMIENTO...........14

IMPACTO DE LA TECNOLOGÍA DE LA ORIENTACIÓN A OBJETOS EN LA


FACILIDAD DE MANTENIMIENTO....................................................................14

EL MANTENIMIENTO FUTURO............................................................................14

ESTÁNDARES.......................................................................................................15
INTRODUCCIÓN

El mantenimiento del software es una fase esencial en el ciclo de vida de cualquier


producto de software. Después de la entrega del producto, es común que se
requieran modificaciones, correcciones o mejoras para adaptarse a las
necesidades cambiantes de los usuarios o para solucionar problemas que puedan
surgir. El mantenimiento del software es incluso más importante que el
mantenimiento del hardware, ya que el software es el componente que permite el
funcionamiento y la interacción con el hardware.

Sin embargo, el mantenimiento del software puede ser costoso y complejo. De


hecho, se ha demostrado que el costo del mantenimiento del software es mayor
que el costo de su desarrollo inicial. Esto se debe a varios factores, como la
complejidad del código, la falta de documentación actualizada y la necesidad de
realizar cambios en un sistema en funcionamiento.

Existen diferentes tipos de mantenimiento del software, como el correctivo


(solucionar errores), adaptativo (adaptarse a cambios en el entorno), perfectivo
(mejorar la funcionalidad) y preventivo (prevenir problemas futuros). Cada tipo de
mantenimiento tiene sus propias características y desafíos.

Uno de los desafíos más comunes en el mantenimiento del software es lidiar con
el código heredado, es decir, el código que ha sido desarrollado por otros
programadores en el pasado y que puede ser difícil de entender o modificar.
Además, el mantenimiento ad hoc, es decir, realizar cambios sin utilizar métodos,
técnicas y herramientas adecuadas, puede llevar a problemas adicionales, como
la falta de estructura en el código y la documentación desactualizada.
DESARROLLO

ingeniería y mantenimiento del software


No es el mismo tipo de mantenimiento el del software que el de hardware, como

primera aproximación al mantenimiento del software lo definiremos como el


conjunto

de medidas que hay que tomar para que el sistema siga trabajando
correctamente.

Una de las características del mantenimiento del software es:

 El software no envejece
 El mantenimiento del software supone adaptar el paquete o sistema objeto
de este a nuevas situaciones como:
 Cambio de hardware.
 Cambio de software de base (S.O.).

El ciclo de la vida y el mantenimiento del


software
Los puntos principales de el ciclo de la vida del software son:

 Análisis y Definición de Requisitos.


 Especificación.
 Diseño.
 Programación (escritura del código).
 Prueba e instalación.
 Operación y mantenimiento.

el mantenimiento del software es la modificación de un

producto software después de su entrega al cliente o usuario para corregir


defectos, para mejorar el rendimiento u otras propiedades deseables.
Coste del mantenimiento del software
Fechas Mantenimiento
años 70s 35% - 40%
1980 – 1984 55%
1985 – 1989 75%
Años 90 80% - 90%

Barrera de Mantenimiento en el desarrollo de software, que es cuando el trabajo


de mantenimiento aumenta a medida que se crea más software. Esto se debe a
varias razones, como tener software antiguo con limitaciones tecnológicas,
migraciones constantes de plataformas, y cambios en el software sin técnicas
adecuadas. Esto resulta en sistemas de baja calidad. Como resultado, el costo de
corregir errores aumenta considerablemente en las etapas finales del ciclo de vida
del software.

Es más barato corregir defectos en las primeras etapas del ciclo de vida del
software debido a la facilidad de cambiar la documentación en lugar de modificar
el código y porque es más fácil detectar errores en las etapas iniciales. También
se mencionan costos intangibles, como la pérdida de oportunidades de desarrollo,
la insatisfacción del cliente, la introducción de errores ocultos y los retrasos en
otros proyectos debido a las demandas de mantenimiento.

Tipos de mantenimiento
Existen 4 tipos de mantenimiento:

 Correctivo.
 Adaptativo.
 Perfectivo.
 Preventivo.
Mantenimiento correctivo
El objetivo principal es encontrar y corregir posibles defectos en los programas de
software. Un defecto se refiere a una característica del sistema que podría causar
un fallo. Un fallo se produce cuando el comportamiento del sistema no coincide
con lo que se especificó. Los fallos en el software pueden manifestarse en
diferentes formas, como resultados incorrectos, bajo rendimiento, problemas de
diseño o discrepancias entre la funcionalidad del programa y la documentación del
usuario.

Los fallos en un sistema software pueden ser:

 Procesamiento (salidas incorrectas de un programa).


 Rendimiento (tiempo de respuesta demasiado alto).
 Programación (inconsistencias en el diseño).
 Documentación (inconsistencias entre la funcionalidad de un
programa y el manual de usuario).

Mantenimiento adaptativo
Este tipo de mantenimiento implica la modificación de un programa debido a
cambios en el entorno en el que se ejecuta, como cambios en hardware, software,
sistema operativo o incluso el entorno de desarrollo del software. Estas
modificaciones pueden variar desde pequeños ajustes hasta una revisión
completa del código. Los cambios en el entorno de desarrollo pueden involucrar
modificaciones en los datos o en los procesos, como cambiar de un sistema de
archivos a una base de datos relacional o migrar a una plataforma con procesos
distribuidos.

Mantenimiento perfectivo
Conjunto de actividades para mejorar o añadir nuevas funcionalidades

requeridas por el usuario.

Se divide en dos:
 Mantenimiento de Ampliación: incorporación de nuevas funcionalidades.
 Mantenimiento de Eficiencia: mejora de la eficiencia de ejecución.

Mantenimiento preventivo
Este tipo de mantenimiento implica la modificación del software con el propósito de
mejorar sus propiedades, como la calidad y la facilidad de mantenimiento, sin
cambiar sus especificaciones funcionales. Estas modificaciones pueden incluir la
adición de sentencias para verificar la validez de los datos de entrada,
reestructuración de los programas para hacerlos más legibles o agregar nuevos
comentarios. Este enfoque de mantenimiento utiliza técnicas de ingeniería inversa
y reingeniería para lograr sus objetivos.

ACTIVIDADES DE MANTENIMIENTO
Las actividades de mantenimiento se agrupan en tres categorías funcionales:

Comprensión del software y de los cambios a realizar: Esta etapa requiere un


profundo conocimiento de la funcionalidad, objetivos, estructura interna y
requisitos del software. Aproximadamente el 50% del tiempo de mantenimiento se
dedica a esta tarea. Las herramientas CASE incorporan utilidades que
automatizan estas tareas para mejorar la productividad.

Modificación del software: En esta fase, se crean y modifican las estructuras de


datos, la lógica de procesos, las interfaces y la documentación. Los
programadores deben evitar efectos secundarios no deseados de sus cambios.
Esta actividad representa aproximadamente el 25% del tiempo total de
mantenimiento.

Realización de pruebas: Esta etapa implica realizar pruebas selectivas para


asegurar la corrección del software modificado.
DIFICULTADES DEL MANTENIMIENTO
El proceso de mantenimiento no debe deteriorar la calidad del software. ¿Cómo

debe mantenerse el software para preservar su fiabilidad?

CÓDIGO HEREDADO
El software actual suele consistir en código antiguo, desarrollado con técnicas y
herramientas obsoletas y mantenido por personas que ya no trabajan en él.
Reescribirlo no es rentable debido a los costos pasados y la necesidad de
amortización.

Leyes del Mantenimiento del Software:

Continuidad del cambio: El software debe cambiar para adaptarse a nuevas


funcionalidades, hardware, corrección de errores o eficiencia.

Incremento de la complejidad: Los cambios en el software aumentan la


complejidad si no se utilizan técnicas de ingeniería de software.

Evolución del programa: El programa se adapta y evoluciona para mantener sus


propiedades fundamentales.

Conservación de la estabilidad organizacional: La carga de desarrollo del


programa es constante independientemente de los recursos a lo largo del tiempo.

Conservación de la familiaridad: El número de cambios introducidos en cada


versión es aproximadamente constante.

PROBLEMAS DEL MANTENIMIENTO


a) El mantenimiento del software suele hacerse de manera ad hoc debido a la
falta de métodos, técnicas y herramientas que ofrezcan soluciones globales
al problema del mantenimiento.

b) Después de cada cambio, los programas tienden a volverse menos


estructurados, lo que conlleva documentación desactualizada, código que
no cumple estándares, mayor complejidad para entender los programas y
más efectos secundarios de los cambios.
c) Con el tiempo, los sistemas que se mantienen se vuelven más difíciles de
modificar.
d) La participación limitada de los usuarios en el desarrollo de software
aumenta el riesgo de que el software no cumpla con sus necesidades y
aumenta los esfuerzos de mantenimiento
e) Existen problemas de gestión relacionados con la percepción de que el
mantenimiento es de menor importancia que el desarrollo de software, lo
que conduce a un mantenimiento apresurado, falta de documentación
adecuada y poca integración con el código existente.

EFECTOS SECUNDARIOS DEL MANTENIMIENTO


En el mantenimiento del software existe el riesgo del llamado efecto bola de

nieve; que consiste en que los cambios introducidos por una petición de
mantenimiento conllevan efectos secundarios que implican futuras peticiones de
mantenimiento.

Efectos secundarios sobre el código


1. Cambios en el diseño que suponen muchos cambios en el código.
2. Eliminación o modificación de un subprograma.
3. Eliminación o modificación de una etiqueta.
4. Eliminación o modificación de un identificador.
5. Cambios para mejorar el rendimiento.
6. Modificación de la apertura/cierre de ficheros.
7. Modificación de operaciones lógicas.

Efectos secundarios sobre los datos


1. Redefinición de constantes locales o globales.
2. Modificación de los formatos de registros o archivos.
3. Cambio en el tamaño de una matriz u otras estructuras similares.
4. Modificación de la definición de variables globales.
5. Reinicialización de indicadores de control o punteros.
6. Cambios en los argumentos de los subprogramas.

Efectos secundarios sobre la documentación


1. Modificar el formato de las entradas interactivas.
2. Nuevos mensajes de error no documentados.
3. Tablas o índices no actualizados.
4. Texto no actualizado correctamente.

SOLUCIONES AL PROBLEMA DEL


MANTENIMIENTO
Los gestores seniors de las organizaciones deben ser conscientes de:

1.- Importancia de las tecnologías de la información para la organización.

2.- El software es activo corporativo y puede suponer una venta competitiva.

Deben centrar las soluciones en dos aspectos: recursos y calidad.

Recursos dedicados al mantenimiento


El recurso humano es esencial en el mantenimiento de software. A menudo, esta
tarea se asigna a personal nuevo en la organización, sin experiencia en técnicas
de ingeniería del software y sin conocimiento del programa. Como resultado,
suelen tener dificultades para identificar defectos o realizar modificaciones. Por lo
tanto, es fundamental establecer un equipo de programadores especializado en el
mantenimiento de código antiguo.

Gestión de la calidad
Para abordar el problema a largo plazo, es esencial mejorar la calidad del proceso
de desarrollo de software en su totalidad. Algunas técnicas de gestión de la
calidad del software incluyen:
 Utilizar técnicas estándares para descomponer el software en entidades
funcionales.
 Aplicar estándares de documentación del software.
 Diseñar paso a paso en cada nivel de descomposición del software.
 Utilizar código estructurado.
 Definir de antemano todas las interfaces y estructuras de datos antes del
diseño.
 Emplear métricas de producto para medir atributos del software y métricas
de procesos para evaluar la calidad del proceso.
 Utilizar herramientas y entornos de desarrollo de software más avanzados

Gestión estructurada del mantenimiento


Si el mantenimiento carece de estructura, se enfrentan a problemas como la
tediosa revisión del código, la dificultad de comprender el sistema debido a la
escasa documentación, la complicación para identificar los efectos de los cambios
y la incapacidad de realizar pruebas de regresión debido a la falta de registros de
pruebas.

Organización del equipo humano


Es fundamental organizar el equipo de mantenimiento, definiendo claramente las
responsabilidades y estableciendo procedimientos para gestionar las solicitudes
de mantenimiento. Se pueden designar las siguientes responsabilidades:

 Controlador del mantenimiento: encargado de recibir y gestionar las


solicitudes de mantenimiento.
 Supervisor del sistema software: responsable de conocer la aplicación y
proporcionar información sobre las solicitudes de mantenimiento
relacionadas.
 Gestor de la configuración: encargado de mantener actualizada la
configuración del software.
 Desarrollador de mantenimiento: responsable de realizar las modificaciones
necesarias en la aplicación.

Documentación de los cambios


Las solicitudes de mantenimiento deben hacerse mediante un formulario

estandarizado. El equipo de mantenimiento debe elaborar un informe de cambios


para

cada solicitud.

Este informe de cambios debe incluir:

1. Información del programa.


2. Tamaño (LDC) del programa fuente.
3. Tamaño del ejecutable.
4. Lenguaje de programación utilizado.
5. Fecha de instalación del programa.
6. Número de ejecuciones del programa desde la instalación.
7. Número de fallos.
8. Número de sentencias añadidas, modificadas y eliminadas en el cambio.
9. Número de personas-hora.
10. Identificación de la persona responsable.
11. Identificación de la solicitud de mantenimiento.
12. Tipo de mantenimiento.
13. Fechas de comienzo y final del mantenimiento.
14. Beneficios netos que supone el cambio.

SOLUCIONES TÉCNICAS
Existen dos tipos de recursos en el mantenimiento de software: herramientas y
métodos. Las herramientas están diseñadas para apoyar eficazmente los métodos
utilizados por el equipo de mantenimiento, ayudando a comprender el programa y
probar las modificaciones para asegurar la ausencia de errores. Algunas de estas
herramientas incluyen formateadores, analizadores estáticos, estructuradores,
documentadores, depuradores interactivos, generadores de datos de prueba y
comparadores.

Los principales métodos empleados en el mantenimiento son:

 Reingeniería: implica la revisión y modificación de un sistema con el fin de


reconstruirlo de una manera nueva, a menudo reutilizando elementos
existentes.
 Ingeniería Inversa: es un proceso que involucra el análisis de un sistema
para identificar sus componentes e interacciones, así como la creación de
representaciones más abstractas del sistema, generalmente con el
propósito de documentación.
 Reestructuración del software: se refiere a la modificación del software para
hacerlo más legible y más fácil de cambiar, sin cambiar su nivel de
abstracción.
 Transformación de Programas: es un método formal que parte de un
programa existente para obtener uno equivalente a través de una serie de
transformaciones sucesivas.

MANTENIBILIDAD
La mantenibilidad del software es una medida cualitativa que evalúa la facilidad de
comprender, corregir, adaptar y mejorar un programa. Factores que influyen en la
mantenibilidad incluyen el diseño, la configuración, la calificación del equipo de
desarrollo, la estructura del software, facilidad de uso, lenguajes estándar,
documentación, depuración, hardware disponible, y el equipo original.

Se utilizan distintas clases de métricas, que pueden evaluar el esfuerzo,


complejidad y estructura relacionados con el mantenimiento del software.
DISTINTOS ENFOQUES PARA LA FACILIDAD DE
MANTENIMIENTO
La mantenibilidad del software se puede evaluar mediante medidas que
consideran la cualificación del equipo de mantenimiento, las herramientas
disponibles y la madurez del proceso. También se utiliza el "tiempo medio de
cambio" (TMC) para determinar cuánto tiempo lleva desde que se recibe una
solicitud de cambio hasta que el sistema modificado vuelve a ser operativo. La
gestión de atributos cualitativos como fiabilidad, modularidad, comprensión,
prueba y expansión durante el desarrollo mejora la facilidad de mantenimiento del
software.

IMPACTO DE LA TECNOLOGÍA DE LA ORIENTACIÓN A


OBJETOS EN LA FACILIDAD DE MANTENIMIENTO
la herencia es clave en la mantenibilidad del software. Sin embargo, una herencia
demasiado profunda puede aumentar la complejidad del programa y dificultar la
mantenibilidad, a pesar de mejorar la reutilización.

Hay diversas métricas de software orientado a objetos que se relacionan con la


mantenibilidad, incluyendo medidas de complejidad de clase, facilidad de
comprensión, facilidad de mantenimiento y calidad del código, como el porcentaje
de comentarios. Estas métricas son importantes para evaluar y mejorar la
mantenibilidad del software orientado a objetos.

EL MANTENIMIENTO FUTURO
La tendencia actual se enfoca en sistemas basados en componentes reutilizables
COTS, lo que afecta el proceso de desarrollo y mantenimiento del software. Esto
requiere personal calificado, como arquitectos del sistema, especialistas en
tecnología y expertos en integración y pruebas.

Las organizaciones de software deben decidir entre desarrollar, reutilizar o


comprar software, considerando factores como costo, disponibilidad, experiencia
del proveedor, cumplimiento de requisitos, flexibilidad y soporte futuro. El
mantenimiento del software, a diferencia de otras ingenierías, es crucial para la
calidad y debe ser considerado desde la etapa de diseño del software.

ESTÁNDARES
 Para los procesos del ciclo de vida del software: ISO 12207, IEEE 1074.
 Para la calidad del software y sus métricas: ISO 9126, IEEE 1061.
 Para el mantenimiento del software: IEEE 121
CONCLUSIÓN

En conclusión, el mantenimiento del software es una fase esencial en el ciclo de


vida del software que requiere atención y recursos adecuados. Es más importante
que el mantenimiento del hardware, ya que el software es el componente que
permite el funcionamiento y la interacción con el hardware. Sin embargo, el
mantenimiento del software puede ser costoso y complejo, con el costo del
mantenimiento siendo mayor que el costo de su desarrollo inicial.

Existen diferentes tipos de mantenimiento del software, como el correctivo,


adaptativo, perfectivo y preventivo, cada uno con sus propias características y
desafíos. El mantenimiento del software puede enfrentar problemas como el
código heredado y el mantenimiento ad hoc, lo que puede llevar a efectos
secundarios y dificultades adicionales.

Para abordar estos desafíos, es fundamental asignar recursos adecuados al


mantenimiento del software y mejorar la calidad del proceso. Esto implica
organizar de manera efectiva el equipo de mantenimiento, documentar los
cambios realizados y utilizar herramientas y métodos que faciliten el
mantenimiento. La mantenibilidad del software, es decir, la facilidad de
comprender, corregir, adaptar y mejorar el software, es un aspecto clave a
considerar en el desarrollo y mantenimiento de cualquier producto de software.

En el futuro, se espera que los sistemas basados en componentes reutilizables


sean más comunes, lo que puede facilitar el mantenimiento del software. Además,
existen estándares internacionales que establecen procesos para el ciclo de vida
del software, la calidad del software y el mantenimiento del software, lo que
proporciona pautas y mejores prácticas para garantizar un mantenimiento efectivo.

También podría gustarte