14
MANTENIMIENTO DE SOFTWARE

Mantenimiento, Ingenieria Inversa, Reingenieria & Gestión de Configuracion de SOFTWARE

Embed Size (px)

Citation preview

MANTENIMIENTO DE SOFTWARE

Mantenimiento de software

El mantenimiento de software es una de las actividades más comunes en la Ingeniería de Software y es el proceso de mejora y optimización del software desplegado

(es decir; revisión del programa), así como también corrección de los defectos.

• Para adaptar o perfeccionar, debemos determinar nuevos requisitos, rediseñar, generar código y probar el software existente. Tradicionalmente tales tareas cuando se aplica a un programa existente, se le denomina: Mantenimiento.

El Mantenimiento

de software

• La facilidad de mantenimiento se puede definir cuantitativamente como la facilidad de comprender, corregir, adaptar y/o mejorar el software.

Facilidad de Mantenimiento

… Mantenimiento de software

Costes del Mantenimiento

• Los costes del mantenimiento en dinero es lo que obviamente más nos interesa.

• Pressman. Un coste intangible del mantenimiento del software se encuentra en una oportunidad de desarrollo que se ha de posponer o que se pierde, debido a que recursos disponible deben de estar dedicados a las tareas de mantenimiento.

Costes del Mantenimiento• Insatisfacción del cliente cuando una petición de reparación o de

modificación aparentemente legitima no se puede atender en un tiempo razonable.

• Disminución de la calidad global del Software debido a los errores latentes que introducen los cambios en el software mantenido.

• Trastornos en otros esfuerzos de desarrollo al tener que “poner” a trabajar a la plantilla en tarea de mantenimiento

… Mantenimiento de software

• Las personas involucradas en la fase de mantenimiento de software

esperan trabajar en estos defectos conocidos, ubicarlos y preparar un

nuevo lanzamiento del software, conocido como una lanzamiento de

mantenimiento.

Tipos de mantenimiento Mantenimiento del software

El mantenimiento del software se define identificando cuatro actividades diferentes como lo son: mantenimiento correctivo, mantenimiento, adaptativo, mejora o mantenimiento de perfeccionamiento y mantenimiento preventivo o reingeniería. Según estadísticas el 20 % del trabajo de mantenimiento se emplea en “componer errores”. El restante 80% se dedica adaptar los sistemas existentes a los cambios en su entorno externo.

Tipos de mantenimiento • Perfectivo (60%): mejora del software

(rendimiento, flexibilidad, reusabilidad..) o implementación de nuevos requisitos. También se conoce como mantenimiento evolutivo.

Tipos de Mantenimiento

• Adaptativo (18%): adaptación del software a cambios en su entorno tecnológico (nuevo hardware, otro sistema de gestión de bases de datos, otro sistema operativo...)

Tipos de Mantenimiento

Tipos de mantenimiento • Correctivo (17%): corrección

de fallos detectados durante la explotación. Cuando el equipo no funciona.

Tipos de Mantenimiento

• Preventivo (5%): facilitar el mantenimiento futuro es evitar los fallos en el equipo antes de que estos ocurran, así como las consecuencias de los fallos del equipo, logrando prevenir las incidencias antes de que estas ocurran.

Tipos de Mantenimiento

Ingeniería Inversa La ingeniería inversa es el proceso de analizar el software con el objetivo de recuperar su diseño y especificación. Las herramientas de ingeniería inversa extraen información del diseño de datos, arquitectónicos, y procedimental de un programa; Por lo regular, el código fuente del software es la entrada al proceso de ingeniería inversa. La ingeniería inversa no es lo mismo que la Reingeniería. El objetivo de la primera es derivar el diseño o la especificación de un sistema a partí del código fuente, el objetivo de la reingeniería es producir un sistema nuevo.

La ingeniería inversa se utiliza durante la reingeniería para recuperar el diseño, para comprender un programa antes de reorganizar su estructura.

1.-Reducir la complejidad del sistema: al intentar comprender el software se facilita su mantenimiento y la complejidad existente disminuye. 2.-Generar diferentes alternativas: del punto de partida del proceso, principalmente código fuente, se generan representaciones gráficas lo que facilita su comprensión.

3.-Recuperar y/o actualizar la información perdida (cambios que no se documentaron en su momento): en la evolución del sistema se realizan cambios que no se suele actualizar en las representaciones de nivel de abstracción más alto, para lo cual se utiliza la recuperación de diseño.

4.-Detectar efectos laterales: los cambios que se puedan realizar en un sistema puede conducirnos a que surjan efectos no deseados, esta serie de anomalías puede ser detectados por la ingeniería inversa. 5.- Facilitar la reutilización: por medio de la ingeniería inversa se pueden detectar componentes de posible reutilización de sistemas existentes, pudiendo aumentar la productividad, reducir los costes y los riesgos de mantenimiento

Ingeniería Inversa Lógica

• Aplica sobre código de un programa para averiguar su lógica o sobre cualquier documento de diseño para obtener documentos de análisis o de requisitos

Ingeniería Inversa de

Datos

• Aplica sobre algún código de bases datos (aplicación, código SQL, etc.)

• Obtener los modelos relacionales o sobre el modelo relacional para obtener el diagrama entidad-relación.

Ingeniería Inversa de Interfaces de Usuario

• Se aplica con objeto de mantener la lógica interna del programa para obtener los modelos y especificaciones que sirvieron de base para la construcción de la misma

Ingeniería Inversa

Tipos de Ingeniería Inversa

La reingeniería del Software es una forma de modernización para mejorar las capacidades o la capacidad de mantenimiento de los sistemas de información heredados, mediante la aplicación de tecnologías y practicas modernas. La reingeniería del software ofrece una disciplina de preparación para migrar un sistema de información heredado hacia un sistema capaz de evolucionar.

La Ingeniería del Software” establece una definición de reingeniería como: “reingeniería es la transformación sistemática de un sistema existente dentro de una nueva forma de realizar el mejoramiento de la calidad en las operaciones, la capacidad del sistema, la funcionalidad, el rendimiento evolutivo a bajo costo y las agendas o riesgos para el cliente.”

Reingeniería de Software

La reingeniería permite el desarrollo de aspectos tales como recuperar el diseño, desarrollar documentación, convertir código a lenguaje orientado a objetos. Trata de mantener la funcionalidad del sistema, mantenimiento de los datos, que se estructuraron con una interfaz de usuario totalmente nueva y que facilite su utilización por parte del usuario final con las nuevas especificaciones.

Entre los beneficios de aplicar reingeniería a un producto existente se puede incluir:

Pueden reducir los riegos evolutivos de una organización. Puede ayudar a las organizaciones a recuperar sus inversiones en software. Puede hacer el software más fácilmente modificable. Es un catalizador para la automatización del mantenimiento del software. Puede actuar como catalizador para la aplicación de técnicas de inteligencia artificial para

resolver problemas de reingeniería.

La reingeniería de software involucra diferentes actividades como lo son:análisis de inventarios, reestructuración de documentos, ingeniería inversa,reestructuración de programas y datos, e ingeniería directa;

Con la finalidad decrear versiones de programas ya existentes que sean de mejor calidad y losmismos tengan una mayor facilidad de mantenimiento.

Gestión de la configuración¿Qué es? La Gestión de la Configuración del Software (GCS/SCM) es un conjunto de actividades diseñadas para identificar y definir los elementos en el sistema que probablemente cambien, controlando el cambio de estos elementos a lo largo de su ciclo de vida, estableciendo relaciones entre ellos, definiendo mecanismos para gestionar distintas versiones de estos elementos, y auditando e informando de los cambios realizados.

¿Cuál es el Propósito? Establecer y mantener la integridad de los productos de software a través del ciclo de vida del proceso de software.

¿Por qué es necesario? Los requerimientos del sistema siempre cambian durante su desarrollo y su uso, y se tienen que incorporar estos requerimientos en nuevas versiones del sistema.

¿Por qué es importante? Los cambios incontrolados aplicados a un proyecto de software lo llevan al fracaso.

Proceso de GCS

Gestión de Configuraciones

Tanto en forma de código fuente como ejecutable

Programas de computadoras

Datos

Que describen esos programas, tantos técnicos como de usuarios

Contenidos en el programa o externo a el.

Documentos

Configuración del software

IdentificaciónControl de Cambios

Control de Versiones

Auditoria e Informe

IdentificaciónControl

de Cambios

Control de

Versiones

Auditoria e Informe

Define un esquema de identificación para

reflejar la estructura del software.

El control de versiones combina procedimientos y herramientas para gestionar los objetos de configuración creadas durante el proceso de ingeniería del software.

El control de cambios combina los

procedimientos y las herramientas

automáticas para proporcionar un

mecanismo

Se debe validar que el producto este completo

y se así mantener la consistencia entre los

componentes, asegurando que estén en

un estado apropiado a través de todo el ciclo de vida del producto y que

el mismo sea una colección bien definida

de componentes.