Reingenieria de Software

Page 1

REINGENIERIA DE SOFTWARE

Importancia de Aplicar los Principios de Reingeniería de Software en favor de mejorar la Calidad, Funcionalidad y Rendimiento de los Sistemas de Software existentes.
1 Reingeniería de Software
MARZO DE 2024
MARZO DE 2024
Deyvi M. Ruiz R. CI. 15.806.587

EDITORIAL

Este e-book es un espacio diseñado para permitir al lector conocer todo lo referente a sistemas informáticos, con un tema muy interesante en esta edición, como lo es: La reingeniería de software, con el fin de modelar los principios y procesos de la misma, así como sus modelos de aplicación, para que así, estas permitan optimizar los softwares existentes y cuya fundamentación permite dar solución a problemas de usuarios y clientes simplificando lo complejo.

2 Reingeniería de Software
3 Reingeniería de Software ❖ Directorio 4 ❖ Dedicatoria 5 ❖ Introducción 6 ❖ Principio y Procesos de la Reingeniería de Software 7 ❖ Fases de la Reingeniería de Software 8-10 ❖ Arquitectura y Diseño 11 ❖ Modelos de Reingeniería de Software 12-13 ❖ Mantenimiento del Software 14 ❖ Ingeniería Inversa y Reestructuración del Software 15 ❖ Conclusión 16 ❖ Créditos 17 ❖ Referencias 18 INDICE

DIRECTORIO

EDITORIAL

Diseño de portada

Deyvi Ruiz

Diseño de e-book

Deyvi Ruiz

Dirección

Deyvi Ruiz

Redacción

Deyvi Ruiz

AUTORIDADAES GENERALES

Dr. Basilio Sanchez

Rector

Dr. Manuel Piñate

Vicerrector Académico

Abog. MSc. Gustavo Sanchez

Vicerrector Administrativo

Edilia Papa

Secretaria

AUTORIDADES DE LA FACULTAD

Ing. MSc. Cristina Rojas

Decana

Ing. Esp. William Jimenez

Director de Escuela

MSc. Yeisy Guillen

Tutor Académico

4 Reingeniería de Software

DEDICATORIA

Se dedica este e-book primeramente a Dios quien es el que hace posible todas las cosas, y a todos aquellos lectores que están llenos de preguntas y cuyos saberes se ampliaran gracias a esta obra.

5 Reingeniería de Software

INTRODUCCIÓN

En un mundo que se mueve cada vez más rápido, las empresas deben transformarse constantemente para conseguir seguirle el ritmo y poder estar vigentes para sus clientes. Por lo tanto, deben modificar y actualizar ciertos aspectos para estar a la par del mercado actual y mantener un ritmo de trabajo adecuado.

Uno de los aspectos con más relevancia, que deben transformarse o actualizarse dentro de las compañías son sus sistemas, como sus páginas web, software y aplicaciones, pues con el tiempo pueden volverse obsoletos y traerle consecuencias a la empresa, sin embargo, además de la actualización existen otros procesos como la reingeniería de software, la cual es capaz de reformar un software para mejorarlo.

La reingeniería de software es un proceso capaz de modificar un software o alguno de sus componentes por medio de ciertas técnicas como la ingeniería inversa (comprensión del funcionamiento de un programa), reestructuración de código, restructuración de datos o ingeniería directa; esto con el fin de mejorar o agregar nuevas funcionalidades.

Para este proceso se utiliza un modelo el cual puede ser cíclico o de herradura y que se compone por diversas etapas o actividades, las cuales pueden ser aplicadas tanto de forma secuencial como de forma lineal

En este e-book se estudiará: los principios y aplicaciones de la reingeniería de software, así como sus modelos y fases. También sanalizará que es la ingeniería inversa, el mantenimiento del software y restructuración del mismo con el fin de aclarar todas las dudas que puedan surgir referente al tema en mención.

6 Reingeniería de Software

PRINCIPIO Y PROCESOS DE LA REINGENIERIA

Son muchas y variadas las referencias que se pueden encontrar del concepto de reingeniería. Algunos, como Arnold. (1993), la definen como una actividad que mejora la comprensión del software, o bien, lo prepara o mejora para incrementar su facilidad de mantenimiento, reutilización o evolución. Chaikovski y Cross. (1990), es el examen y alteración de un sistema para reconstruirloenuna nuevaforma yla subsiguiente implementación de esa forma. Otros lo ven como el proceso de ingeniería inversa seguida de una ingeniería directa. Biggerstoff. (1990) se refiere a la reutilización como la Re-aplicación de una variedad de tipos de conocimientos de un sistema a otro para reducir el esfuerzo de desarrollo y mantenimiento de ese otro sistema; es decir, la reutilización está enfocada a mejorar la calidad yreducir el esfuerzo haciendouso de parte de un sistema en un nuevo contexto.

Endefinitiva,elconceptodereingenieríadesoftwarese refiere a la reutilización de sistemas heredados, pero transformándolos para hacerlos más mantenibles. Se trata pues de cualquier procedimiento que produce un sistemamediantelareutilizacióndealgoprocedentede algún esfuerzo anterior. Estos sistemas suelen tener algunosproblemas debido a que normalmentehan sido desarrollados y mantenidos por muchas personas, y en muchas ocasiones, utilizando técnicas y estilos de programación propios; además, con el tiempo normalmente las especificaciones han cambiado y el diseño (si es que lo había) se ha perdido.

7 Reingeniería de Software

FASES DE LA REINGENIERIA DE SOFTWARE

En el proceso de reingeniería se podrían distinguir las siguientes fases:

Traducción del código fuente: El programa se convierte a una versión más moderna del lenguaje en que estaba codificado o a un lenguaje diferente. Los motivos que llevan a una traducción pueden ser muy diversos: falta de conocimientos del personal en ese lenguaje, falta de soporte en los compiladores, actualización de la plataforma de hardware o de software, políticas de empresa, necesidad de cambio en las interfaces de usuario, etc. El proceso será económicamente rentable, si se dispone de alguna herramienta que realice el gruesodelatraducción.Enmuchoscasos,elcódigo que se obtiene tiene que ser modificado de forma manual.

Ingeniería inversa: Se analiza el programa y se extrae información de él, la cual ayuda a documentar su organizaciónyfuncionalidad.Eselprocesodeanalizarel software con el objetivo de recuperar su diseño y especificación. Lo normal es que la entrada a este proceso sea el código fuente si se dispone de él. Se alterna el análisis utilizando herramientas automatizadas con el trabajo manual en el código fuente para obtener el diseño del sistema. La información obtenida suele almacenarse como grafo dirigido, que se va modificando y completando. A partir del grafo se generarán otros documentos como diagramas de estructura de programas, diagramas de estructura de datos y matrices de trazabilidad. Las herramientas que se utilizan para comprender el programasuelenserdetiponavegadores,quepermiten moverse por el código, definir unos datos y rastrearlos por el programa. Se hacen anotaciones manuales

Para ampliar la información con respecto a la ingeniería inversa. Ver el siguiente video
8 Reingeniería de Software

FASES DE LA REINGENIERIA DE SOFTWARE

Mejora de la estructura del programa: Se analiza y modifica la estructura de control del programa para hacerlo más fácil de leer y comprender. Los programas pueden presentar lógica de control no intuitiva lo que puede hacer que no se entiendan fácilmente. El principal factor para tener en cuenta es que el control sea estructurado.

Modularización del programa: Es el proceso de reorganizar un programa de forma que partes relacionadasseintegrendeformaconjunta.Estofacilita eliminar componentes y mejorar la comprensión. Se pueden considerar diferentes tipos de módulos: abstracciones dedatos,módulos dehardware,módulos funcionales,módulos deapoyo al proceso, etc.

Reingeniería de datos: Setratadeanalizaryreorganizar lasestructuras,einclusoaveces,losvaloresdelosdatos de un sistema para hacerlos más comprensibles. Si la funcionalidad del sistema no cambia, la reingeniería de datos no es necesaria.

9 Reingeniería de Software

FASES DE LA REINGENIERIA DE SOFTWARE

Estas, no son fases que tengan que desarrollarse todas necesariamente, sino que dependiendo de los casos podrán figurar unas u otras. También se desarrolla un modelo de reingeniería del Software que sitúa al usuario como colaborador principal en la tarea de especificar los requisitos del sistema. Las fases, en este caso serían:

Definición del problema: Se identifican objetivos, límites, beneficios, riesgos, estimaciones de tiempos, etc., estableciendo una imagen real de lo que existe realmente ahora y lo que se quiere obtener en el futuro.

Estudio del código antiguo: Partiendo del código fuente en un lenguaje de tercera generación, se obtiene un conjunto de documentos que ayudan a posteriores fases de la metodología.

Viabilidad del proyecto: Consiste en detectar posibles errores en las especificaciones.

Rediseño de especificaciones. Se busca conseguir, que las especificaciones representen de forma real la visión futura deseada del sistema.

Creación de prototipos. De aquellas partes que puedan dar problemas, o solamente de aquellas que vayan a cambiar sustancialmente de la original.

Planificación de la implementación. Consiste en diseñar la forma y modo en que se va a migrar de una herramienta a otra.

Perfeccionamiento. Realizar cambios en la nueva aplicación que aumenten la calidad del sistema.

No en todos los sistemas es adecuado realizar un proceso de reingeniería. Antes de tomar esa decisión se puede valorar utilizando, por ejemplo, la matriz de decisión de Jacobson. (1991), para determinar si el sistema tiene un gran valor de negocio y por tanto es conveniente que se aplique reingeniería. Según Jones. (1994), se pueden definir diez elementos del software que pueden reutilizarse: planes de proyecto, estimaciones de coste, arquitectura, especificaciones y modelos de requisitos, diseños, código fuente, documentación de usuario y técnica, interfaces humanas, datos, y casos de prueba.

Ver el Siguiente Video

10 Reingeniería de Software

ARQUITECTURA Y DISEÑO

Transformaciones a nivel funcional o de diseño.

Transformaciones a nivel funcional o de diseño tiene que ver con el reempaquetado de funcionalidad (por ejemplo, migrar desde un diseño funcionala un diseñoorientadoaobjeto). La encapsulación de un módulo de funcionalidad por un diferente ambiente es un ejemplo de transformación a nivel funcional.Las transformacionesa nivelfuncionalvanmásallá de simples transformaciones a la estructura del código, pero no va más allá que una transformación de arquitectura. Ellos son elegidos cuando grandes unidades de funcionalidad pueden ser salvados poniéndolos dentro de un nuevo contexto.

Transformaciones a nivel de arquitectura.

Las transformaciones a nivel de arquitectura involucran cambios a los bloques básicos de la arquitectura. Estos incluyen los modelos básicos de interacción incluyendo los tipos de componentes, los conectores usados, la asignación de funcionalidad y el modelo en tiempo de ejecución de control y datos. El nivel de arquitectura es el más abstracto y lejos del alcance de las transformaciones. Las transformaciones a nivel de arquitectura son hechas cuando es necesario un cambio a la estructura principal debido a las principales modificaciones o deficiencias en los sistemas de información heredados. Las transformaciones generalmente traen mayores compromisos de tiempo y recursos, pero también trae consigo grandes beneficios.

11 Reingeniería de Software

MODELOS DE REINGENIERIA DE SOFTWARE

Modelo de Herradura

Los tres procesos básicos – análisis de un sistema existente, transformación lógica y desarrollo de un nuevo sistema –forman la base del modelo de herradura. El primer proceso sube el extremo izquierdo de la herradura, el segundo cruza la parte superior y el tercero baja por el extremo derecho de la herradura. En su más pura y completa forma, el primer proceso recupera la arquitectura por medio de la extracción de artefactos desde el código fuente. Esta estructura recuperada es analizada para determinar si esta se adapta a la arquitectura antes diseñada. La arquitectura descubierta también es evaluada con respecto a un número de calidad de atributos tales como rendimiento,modificabilidad, seguridad o confiabilidad.

El segundo proceso es la transformación de arquitectura. En estecaso, laarquitectura antes construidaes recuperada yes reingenierada para hacerla una nueva arquitectura deseable. Esta es reevaluada contra las metas de calidad del sistema y sujetas a otras restricciones organizacionales y económicas. El tercer proceso del modelo de herradura usa el "Architecture-Based Development (ABD)" Bass, (1999) para ejemplificar la arquitectura deseable. En este proceso, ya empaquetados los tópicos son decididas e interconectadas las estrategias elegidas.

Losartefactosanivel decódigodelsistema de información heredado son normalmente tapadosoreescritos para adaptarlos dentro de la nueva arquitectura.
12 Reingeniería de Software

MODELOS DE REINGENIERIA DE SOFTWARE

Modelo Cíclico

Este modelo define seis actividades que son: Análisis de inventario, Reestructuración de documentos, Ingeniería inversa, Reestructuración de código, Reestructuración de datos e Ingeniería directa. En algunas ocasiones, estas actividades se producen de forma secuencial y lineal, pero esto no siempre es así. Por ejemplo, puede ser que la ingeniería inversa (la comprensión del funcionamiento interno de un programa) tenga que producirse antes de que pueda comenzar la reestructuración de documentos.

Esto significa que cada una de las actividades presentadas como parte del paradigma pueden repetirse en otras ocasiones. Para un ciclo en particular, el proceso puede terminar después de cualquiera de estas actividades.

VER EL SIGUIENTE VIDEO

13 Reingeniería de Software

MANTENIMIENTO DEL SOFTWARE

Mantenimiento:

La reingeniería y la fase de mantenimiento del ciclo de vida de un sistema están muy relacionados. El mantenimiento se llevará a cabo una vez que la implementación del sistema software ha concluido y se ha entregado al cliente, y puede ser provocado por nuevas necesidades del usuario o bien por la detección de errores. Según ANSI-IEEE, el mantenimiento software es la modificación de un producto software, después de su entrega al cliente, para corregir defectos, para mejorarelrendimientouotraspropiedadesdeseables,opara adaptarlo a un cambio de entorno. Por lo tanto, el mantenimiento software se puede definir como el conjunto de medidas que hay que tomar para que el sistema siga trabajando correctamente.Existen 4 tipos de mantenimiento Piattini. (2000).: Correctivo, el cual tiene como objetivo localizar y eliminar los posibles defectos de los programas. Adaptativo, cuyo objetivo es modificar un programa para adaptarlo a los cambios hardware o software en el entorno en el que se ejecuta. Puede ser, desde un pequeño cambio, hasta una reescritura de todo el código, y es cada vez más habitual debido a la actualización frecuente los sistemas operativos. Perfectivo, consistente en el conjunto de actividades para mejorar o añadir nuevas funcionalidades requeridas por el cliente. Preventivo o reingeniería, que consiste en la modificación del software para mejorarlo en cuanto a la calidad y mantenibilidad, sin alterar sus especificaciones funcionales. Algunas tareas de este mantenimiento serían: incluir sentencias que comprueben la validez de los datos de entrada, reestructuración de los programas para aumentar su legibilidad o incluir nuevos comentarios, etc. Utilizará técnicas de reingeniería e ingenieríainversa.Tambiénpuedeserelmantenimientopara la reutilización especializado en mejorar la reusabilidad.

Los recursos necesarios para el mantenimiento se incrementan a medida que se genera más software, debido a la gran cantidadde software antiguo cuya creación se produjo con restricciones de tamaño y espacio de almacenamiento y con herramientas desfasadas, migraciones continuas de plataformas o SSOO, o las modificaciones, correcciones, mejorasyadaptacionesqueel software experimenta con el tiempo, debido a las nuevas necesidades de los usuarios. Además, estos cambios, generalmente se han realizado sin técnicas de reingeniería o ingeniería inversa, dando como resultado sistemas con las estructuras de datos mal diseñadas, mala codificación, lógica defectuosa y escasa documentación.

14 Reingeniería de Software

INGENIERIA INVERSA Y REESTRUCTURACION DEL SOFTWARE

Es el proceso de analizar el software con el objetivo de recuperar su diseño y especificación. Lo normal es que la entrada a este proceso sea el código fuente si se dispone de él. No hay que confundirla con la reingeniería. El objetivo de la ingeniería inversa es obtener el diseño o la especificación de un sistema a partir del código fuente, mientras que el objetivo de la reingeniería es obtener un nuevo sistema más mantenible. A menudo la ingeniería inversa es una parte de la reingeniería. Estopermite que el diseño recuperado sirva para comprender un programa antes de reorganizar su estructura. Para llevar a cabo la ingeniería inversa se sigue el proceso que aparece en la figura 3.

Reestructuración de software: consiste en la modificación del software para hacerlo más fácil de entender y cambiar o menos susceptible de incluir errores en cambios posteriores.

Reestructuración del código: El tipo más común de reingeniería es la reestructuración del código. Algunos sistemas heredados tienen una arquitectura de programa relativamente sólida, pero los módulos individuales han sido codificados de una forma que hace difícil comprenderlos, comprobarlos y mantenerlos. En estos casos, se puede reestructurar el código ubicado dentro de los módulos sospechosos.

Reestructuración de datos: Un programa que posea una estructura de datos débil será difícil de adaptar y de mejorar. De hecho, para muchas aplicaciones, la arquitectura de datos tiene más que ver con la viabilidad a largo plazo del programa que el propio código fuente.

15 Reingeniería de Software

CONCLUSIÓN

Lo presentado en este e-book permite concluir que la reingeniería de software tiene como principal función reestructurar o rediseñar aplicaciones de software viejo y funcional en operación dentro de las empresas, que con los avances de tecnologías tanto de hardware y software se vuelven obsoletas, para lo cual es necesaria su operación sobre nuevas plataformas. Además, proporciona a las organizaciones una alternativa viable para el desarrollo de aplicaciones software a partir de sus aplicaciones existentes en operación (software heredado) las cuales ya cumplieron su ciclo de vida. Así como también se proporciona una alternativa menos costosa tanto en la parte económica, tiempos de desarrolloyenresistenciaalcambioporpartedelosusuarios,yaquesusnuevasaplicaciones contarán con las funciones originales para las cuales fueron desarrolladas, más nuevas opciones, producto de sus recomendaciones.

Por otro lado, se puede decir que la reingeniería de software se desarrolla generalmente en varias fases como: traducción del código fuente, ingeniería inversa, mejora de la estructura del programa, modularización del programa y reingeniería de datos Y se pueden distinguir dos modelos comunes de reingeniería de software como son: el modelo de herradura y el modelo cíclico, ambos con ciertas características que le permiten ser aplicados a uno u otro proceso de reingeniería de software, satisfaciendo las necesidades de quien lleva a cabo el proyecto y de quien recibe el producto

Finalmente,esimportantequelasempresasantesdedecidirseaimplementarlareingeniería de software estudien y evalúen que tan viable es para ella, puesto que en ocasiones puede ser tan grave el daño del software actual que el costo se puede ver incrementado, dando como mejor opción la adquisición de uno nuevo. Aunque definitivamente la reingeniería es una opción muy atractiva, no solo por sus ventajas sino por la posibilidad que brinda de conservar los sistemas que han acompañado a las empresas por largos años.

16 Reingeniería de Software

CRÉDITOS

ELABORADA POR:

E-Book Académico

Edición 01

UNIVERSIDAD BICENTENARIA DE ARAGUA

DEYVI MAYKOL RUIZ ROMAN

Estudiante de la escuela de Ing. de sistemas.

17 Reingeniería de Software

REFERENCIAS

1.-Comunicaciones.(9demarzode2020). La reingeniería de software y su importancia para las comunicaciones. Globalbit.co. Recuperado el 26 de marzo de 2024 en: https://www.globalbit.co/2020/03/09/la-reingenieria-de-software-y-su-importancia-para-lasorganizaciones/

2.-Alvarez,J,Mateos.M.yMoreno.M.(2004). Metodología de Reingeniería del software para la remodelación de aplicaciones científicas heredadas. UniversidaddeSalamanca.Recuperadoel26 de marzo de 2024 en: chromeextension://efaidnbmnnnibpcajpcglclefindmkaj/https://gredos.usal.es/bitstream/handle/10366/21762/DP TOIA-IT-2004-003.pdf?sequence=1&isAllowed=y

3.- Vidaña, F. (2015). Reingeniería de Software aplicada a sistemas heredados. Pistas Educativas.celaya.tecnm.mex. Recuperado el 26 de marzo de 2024 en: https://pistaseducativas.celaya.tecnm.mx/index.php/pistas/article/view/296

4.-Aroní,P(2017). Propuesta de Reingeniería del software orientada a objetos para mejorar la calidad del sistema informático en la empresa de joyas DESIGNS QUALITY EXPORTS S.A.C., 2016 Recuperado el 26 de marzo de 2024 en: https://alicia.concytec.gob.pe/vufind/Record/UWIE_6d86e87d1f569f14b63df8441eaecaa3

5.-Rivas,C.(2015). Metodologías actuales de desarrollo de software. Revistatecnologíae innovación. Recuperado el 26 de marzo de 2024 en: chromeextension://efaidnbmnnnibpcajpcglclefindmkaj/https://www.ecorfan.org/bolivia/researchjournals/Tecnol ogia_e_innovacion/vol2num5/Tecnologia_e_Innovacion_Vol2_Num5_6.pdf

6.-Juan.A.(2019). Reingeniería del software. juanantoniomb.wordpress.com.Recuperadoel26de marzode2024en:https://juanantoniomb.wordpress.com/reingenieria-del-software-2/

7.-Avella,C.(2005). Reingeniería de software aplicada a un sistema de información Universidad de los Andes. Recuperado el 26 de marzo de 2024 en: chromeextension://efaidnbmnnnibpcajpcglclefindmkaj/https://repositorio.uniandes.edu.co/server/api/core/bitstr eams/ffbebee5-980b-430a-9e01-20460979c65a/content

8.-Gonzalez,D.(2010). Reingeniería o sustitución: etapa en la metodología de sistemas. UTNRegional Buenos Aires. Recuperado el 26 de marzo de 2024 en: Chrome extension://efaidnbmnnnibpcajpcglclefindmkaj/https://epetushuaia.files.wordpress.com/2011/06/reingen ieria-de-soft.pdf

9.-Monografías. Reingeniería del software. Monografias.com.Recuperadoel26demarzode2024 en:https://www.monografias.com/trabajos105/reingenieria-del-software/reingenieria-del-software

10.-Anónimo.(2020-2021). Modelos de reingeniería de software. Studocu.com.Recuperadoel26de marzo de 2024 en: https://www.studocu.com/pe/document/universidad-politecnica-desinaloa/informatica/modelos-de-reingenieria-de-software/25857641

11.-Estigarribia,R.(2023). Reingeniería de Software. Medium.com.Recuperadoel26demarzode 2024en:https://medium.com/@ramiroec/reingenier%C3%ADa-de-software-41fa705276ac

18 Reingeniería de Software

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.
Reingenieria de Software by Deyvi Ruiz - Issuu