La reingenieria del software

Page 1

TRANSFORMACIÓN RADICAL A TRAVÉS DE LA REINGENIERÍA DEL SOFTWARE

6ta Edición Editorial Epublibre J u a n F e r n á n d e z M a r í a R í o s

Epulibre se caracteriza por ser una editorial innovadora y enfocada en la calidad de sus publicaciones. Su objetivo principal es proporcionar a los lectores interesados en la ingeniería una amplia gama de libros que abarquen diversos temas relacionados con la disciplina.

Los libros de Epulibre son escritos por expertos en ingeniería, profesionales destacados en sus respectivos campos, quienes comparten su experiencia y conocimientos a través de obras rigurosas y bien fundamentadas.

La editorial se dedica a cubrir áreas clave de la ingeniería, como la ingeniería de software, la ingeniería civil, la ingeniería eléctrica, la ingeniería mecánica y muchas más. Los libros de Epulibre abordan tanto aspectos teóricos como prácticos, brindando a los lectores una comprensión sólida de los principios fundamentales y las aplicaciones prácticas de la ingeniería.

Además, Epulibre se compromete a utilizar formatos digitales modernos para hacer que sus libros sean accesibles y fáciles de leer. Sus publicaciones están disponibles en formatos electrónicos como ePub, PDF y Mobi, lo que permite a los lectores disfrutar de sus libros en una amplia gama de dispositivos, como lectores electrónicos, tabletas y teléfonos inteligentes.

Juan Fernández C.I.29.557.849

María Ríos C.I.30.182.920

Estudiantes de ingeniería en sistemas en la Universidad Bicentenaria de Aragua

Autores
EditorialEpublibre

"ReimaginandoelCódigo:Transformación RadicalatravésdelaReingenieríadelSoftware"

"Reimaginando el Código: Transformación Radical a través de la Reingeniería del Software" es una obra revolucionaria en el campo de la ingeniería de software. Escrito por reconocidos expertos en la materia, el libro ofrece una visión fresca y audaz sobre la reingeniería del software, un enfoque que busca transformar radicalmente el código existente para mejorar su calidad, rendimiento y mantenibilidad.

A lo largo de sus páginas, "Reimaginando el Código" explora las últimas técnicas y metodologías de reingeniería del software, proporcionando ejemplos prácticos y casos de estudio reales. Los lectores descubrirán cómo identificar áreas problemáticas en un sistema de software, aplicar estrategias de refactorización efectivas, optimizar el rendimiento y garantizar una transición suave hacia una arquitectura más robusta.

Además, ePubLibre se enorgullece de ofrecer una experiencia de lectura digital de primera calidad. Sus libros están disponibles en formatos electrónicos (epub, mobi, pdf) compatibles con una amplia gama de dispositivos, lo que permite a los lectores acceder a su contenido de manera cómoda y portátil.

Con su enfoque único y su libro emblemático, ePubLibre se ha convertido en una referencia para los profesionales de la ingeniería de software, estudiantes y entusiastas de la tecnología que buscan ampliar sus conocimientos y adoptar nuevas perspectivas en el emocionante mundo del desarrollo de software.

Introducción 04 Diseño y arquitectura 08 Procesos de reingeniería 05 Mantenimiento del software 10 Principios de la reingeniería 06 Ingeniería inversa 11 Referencias Bibliograficas 15 Modelos 09 ÍNDICE Restructuración del software 12 Conclusiones 14

INTRODUCCIÓN

El mundo empresarial y tecnológico está en constante evolución, y para mantenerse competitivos, las organizaciones deben adaptarse y mejorar continuamente. En este contexto, la reingeniería de procesos se ha convertido en una estrategia fundamental para optimizar las operaciones empresariales y lograr una mayor eficiencia. Además, el diseño y la arquitectura de software juegan un papel crucial en el desarrollo de sistemas y aplicaciones que sean flexibles, escalables y fáciles de mantener.

Este e-book aborda temas clave en el ámbito de la ingeniería de software y la gestión de procesos, proporcionando una visión integral sobre diferentes aspectos relacionados con la reingeniería, el diseño, la arquitectura y el mantenimiento del software. A lo largo del libro, exploraremos en detalle los procesos de reingeniería y los principios que los sustentan, así como el diseño eficiente y la arquitectura de software.

Además, examinaremos los diferentes modelos utilizados en la ingeniería de software, destacando su importancia y aplicabilidad en el desarrollo de sistemas complejos.

También abordaremos el mantenimiento del software, una etapa crítica en el ciclo de vida de las aplicaciones, donde se busca asegurar su correcto funcionamiento y adaptación a los cambios del entorno.

La ingeniería inversa es otro tema que trataremos en este ebook, ya que permite comprender y analizar sistemas existentes para su posterior mejora o reutilización. Exploraremos las técnicas y herramientas utilizadas en este proceso, que se ha convertido en una práctica fundamental en la gestión del software. Por último, nos adentraremos en el tema de la reestructuración del software, examinando los desafíos y estrategias involucradas en la mejora de sistemas heredados o obsoletos, con el objetivo de optimizar su rendimiento y facilitar su mantenimiento.

04

PROCESOS DE REINGENIERÍA

La reingeniería del software es un proceso complejo que busca mejorar, transformar o actualizar un sistema de software existente. Dicho en palabras de Michael Hammer y James Champy (1993) "La reingeniería del software implica el rediseño radical de los sistemas de software para lograr mejoras drásticas en su rendimiento, calidad y costo." (p. 245)

Algunos de los procesos clave involucrados en la reingeniería del software son:

Análisis del sistema existente: Esto implica recopilar información sobre su arquitectura, funcionalidades, componentes, tecnologías utilizadas y documentación relevante. El objetivo es obtener una visión clara del sistema y su estado actual.

Evaluación y viabilidad: En esta etapa, se evalúa la viabilidad de la reingeniería del software. Se analizan los problemas y deficiencias del sistema existente, así como los objetivos y requisitos de mejora. Se determina si la reingeniería es la mejor opción en lugar de desarrollar un nuevo sistema desde cero.

Revisión y diseño de la arquitectura: Se realiza una revisión exhaustiva de la arquitectura del sistema existente para identificar las áreas que requieren cambios o mejoras. Se definen las metas y los objetivos de la reingeniería y se establece una nueva arquitectura que pueda cumplir con esos objetivos.

Análisis de dependencias y acoplamiento: Se analizan las dependencias y el acoplamiento entre los diferentes componentes del sistema. Esto implica identificar las interdependencias entre los módulos, las relaciones de llamada y las interfaces utilizadas. El objetivo es reducir la dependencia y mejorar la modularidad del sistema.

05

Refactorización del código: En esta etapa, se realiza la refactorización del código existente. Se realizan cambios en la estructura del código para mejorar la legibilidad, la mantenibilidad y la eficiencia. Esto implica eliminar código redundante, simplificar algoritmos, mejorar la nomenclatura y aplicar patrones de diseño adecuados.

Reimplementación: En algunos casos, puede ser necesario reescribir por completo partes del sistema existente. Esto implica desarrollar nuevas funcionalidades o componentes utilizando tecnologías más modernas y eficientes. La reescritura puede ser parcial o total, dependiendo de los objetivos de la reingeniería.

Pruebas y validación: Después de realizar los cambios y mejoras, se llevan a cabo pruebas exhaustivas para verificar el funcionamiento correcto del sistema. Esto incluye pruebas de unidad, pruebas de integración y pruebas de aceptación. Se busca asegurar que el sistema reingenierizado cumpla con los requisitos y expectativas establecidos.

Documentación y mantenimiento: Finalmente, se actualiza la documentación del sistema para reflejar los cambios realizados durante la reingeniería. Esto incluye manuales de usuario, documentación técnica y cualquier otra documentación relevante. Además, se establecen procedimientos de mantenimiento adecuados para garantizar la continuidad y la evolución del sistema.

PRINCIPIOS

Los principios de reingeniería del software son pautas o enfoques generales que se utilizan para guiar el proceso de reingeniería de un sistema de software. Estos principios se centran en la identificación y abordaje de problemas clave, y en la mejora global del sistema. Algunos principios comunes de reingeniería del software:

06

Enfoque en los resultados empresariales: Se debe analizar cómo el sistema de software actual puede mejorar o apoyar los resultados empresariales.

Análisis exhaustivo del sistema existente: Antes de iniciar cualquier cambio en el sistema de software, es importante realizar un análisis profundo y exhaustivo del sistema existente.

Simplificación y eliminación de complejidad innecesaria: se debe buscar simplificar el sistema de software y eliminar cualquier complejidad innecesaria.

Reutilización y aprovechamiento de activos existentes: Esto incluye la reutilización de componentes de software, bibliotecas, módulos o cualquier otro recurso que pueda acelerar el proceso de reingeniería y reducir los costos.

Modularización y diseño orientado a componentes: Dividir el sistema en módulos o componentes independientes facilita el mantenimiento, la escalabilidad y la reutilización futura.

Mejora continua y enfoque iterativo: La reingeniería del software es un proceso continuo y evolutivo. Se debe adoptar un enfoque iterativo, realizando mejoras incrementales en lugar de intentar hacer cambios masivos en una sola etapa.

Involucramiento de los usuarios y las partes interesadas: Sus comentarios y perspectivas son valiosos para comprender las necesidades reales del sistema y garantizar que los cambios realizados sean efectivos y satisfagan las expectativas.

07

DISEÑO Y ARQUITECTURA

El diseño en la reingeniería del software es una etapa crucial que implica la planificación y definición de la estrategia para lograr los objetivos de mejora del sistema existente.

Durante esta fase, se establecen los objetivos específicos de la reingeniería y se realiza un análisis detallado de los requerimientos del sistema y las necesidades de los usuarios. También se evalúa la arquitectura existente para identificar oportunidades de mejora y se diseña una nueva arquitectura que cumpla con los requisitos establecidos.

Además, se planifican las tareas y los recursos necesarios, se definen las estrategias de reingeniería a utilizar y se establece un plan de pruebas y validación para asegurar la calidad del sistema reingenierizado. Cabe a destacar que se debe tomar en cuenta las consideraciones de mantenimiento a largo plazo para garantizar la mantenibilidad y la capacidad de realizar futuras mejoras.

El diseño en la reingeniería del software establece las bases para la transformación exitosa del sistema, asegurando que los objetivos se cumplan de manera efectiva y produciendo un sistema mejorado y adaptado a las necesidades actuales.

La arquitectura en la reingeniería del software se refiere a la estructura y organización del sistema resultante después de aplicar el proceso de reingeniería. Durante la reingeniería, se pueden realizar cambios en la arquitectura existente para mejorar la calidad, eficiencia y mantenibilidad del sistema.

La arquitectura de la reingeniería del software se diseña teniendo en cuenta los objetivos y requerimientos específicos del proyecto Puede implicar la reestructuración de componentes, la actualización de tecnologías, la incorporación de nuevas funcionalidades o la eliminación de elementos obsoletos.

El diseño de la arquitectura en la reingeniería del software busca lograr una estructura modular, escalable y fácilmente mantenible Una arquitectura bien diseñada permite optimizar el rendimiento del sistema, facilitar futuras actualizaciones y mejoras, y adaptarlo a las necesidades actuales del negocio o los usuarios.

08

MODELOS

Existen varios modelos y enfoques utilizados en la reingeniería del software para llevar a cabo la transformación y mejora de un sistema existente. Algunos de los modelos más conocidos son:

Modelo de Flujo de Datos: Este modelo se centra en el análisis y la transformación de los flujos de datos dentro del sistema. Se identifican los flujos de entrada, procesamiento y salida, y se analiza cómo se pueden mejorar y optimizar.

Modelo de Componentes: En este modelo, se enfoca en identificar los componentes del sistema y sus interacciones. Se busca reutilizar los componentes existentes en lugar de crear nuevos desde cero, lo que ayuda a agilizar y simplificar la reingeniería.

Modelo de Objetos: Este modelo se basa en la identificación y análisis de los objetos del sistema y sus relaciones. Se busca reestructurar el sistema utilizando principios de diseño orientados a objetos, como encapsulación, herencia y polimorfismo.

Modelo de Capas: En este modelo, se organiza el sistema en capas o niveles lógicos, donde cada capa tiene una función específica. Se busca separar las responsabilidades y facilitar la modificación de una capa sin afectar a las demás.

Modelo de Procesos de Negocio: Este modelo se enfoca en analizar y mejorar los procesos de negocio que el sistema soporta. Se identifican los procesos críticos y se realizan cambios para optimizar la eficiencia y la productividad.

09

MANTENIMIENTO DEL SOFTWARE

El mantenimiento del software es el proceso de realizar modificaciones y mejoras en un sistema de software existente para garantizar su correcto funcionamiento, corregir errores, adaptarlo a nuevos requisitos y mantenerlo actualizado. El mantenimiento del software se divide generalmente en las siguientes categorías:

Mantenimiento correctivo: Esto implica diagnosticar y solucionar problemas para restaurar la funcionalidad correcta del sistema. El mantenimiento correctivo se realiza en respuesta a informes de errores o problemas encontrados durante el uso del software.

Mantenimiento adaptativo: Se refiere a realizar modificaciones en el software para adaptarlo a cambios en el entorno en el que opera. El mantenimiento adaptativo asegura que el software siga siendo relevante y funcional en un entorno en constante evolución.

Mantenimiento perfectivo: Se enfoca en mejorar la calidad, el rendimiento y la usabilidad del sistema de software. El mantenimiento perfectivo puede incluir la optimización del rendimiento, la simplificación del código, la mejora de la interfaz de usuario y la incorporación de nuevas funcionalidades.

Mantenimiento preventivo: Está orientado a prevenir posibles problemas futuros en el software. Realiza actividades proactivas, como inspecciones de código, pruebas de seguridad, actualización de bibliotecas y componentes, y realizar copias de seguridad regulares. El mantenimiento preventivo ayuda a garantizar la estabilidad y la seguridad a largo plazo del sistema de software.

10

INGENIERÍA INVERSA

La ingeniería inversa es un proceso mediante el cual se toma un objeto por separado de manera única para ver como funciona con la intención de mejorarlo o duplicarlo. Puede parecer que esta técnica ya estuviera obsoleta por haber sido empleada durante muchos años, no obstante, en la actualidad su uso se ha extendido al software y hardware, en cuyo caso, ha reinventado la concepción de esta técnica. Chema(2020). Disponible en https://acentocoop.es/blog/ingenieria-inversa/

La ingeniería inversa del software es el proceso de analizar un programa de software existente para comprender su estructura interna, su funcionamiento y su diseño sin tener acceso a su código fuente original. El objetivo principal de la ingeniería inversa del software es obtener una representación de alto nivel del programa y comprender su comportamiento.

La ingeniería inversa del software proporciona una visión detallada del funcionamiento interno de una aplicación, lo que permite a los expertos comprender, reescribir o reconstruir la arquitectura, funcionalidad y estructuras internas del programa. Este proceso es fundamental para la corrección, mejora y comprensión de programas complejos, y tiene aplicaciones en la seguridad informática, la investigación de patentes y la resolución de problemas técnicos.

La ingeniería inversa del software se utiliza en diversas situaciones, como el análisis de software heredado sin documentación, la comprensión de sistemas legados para su migración o modernización, el análisis de malware, la interoperabilidad con sistemas existentes y la detección de vulnerabilidades de seguridad.

Existen varias técnicas y herramientas que se utilizan en la ingeniería inversa del software:

Desensamblado1.

Análisis estático 2.

Análisis dinámico 3.

Ingeniería de protocolo 4.

Reconstrucción de modelos 5.

11

RESTRUCTURACIÓN DEL SOFTWARE

La reestructuración del software es un proceso que implica realizar modificaciones en el diseño, la arquitectura o el código de un sistema existente con el objetivo de mejorar su calidad, eficiencia o mantenibilidad. Esta práctica se lleva a cabo para abordar problemas identificados en el software o para adaptarlo a nuevas necesidades o tecnologías.

La reestructuración puede ser necesaria debido a diversos motivos, como el deterioro de la calidad del código, la presencia de redundancias o acoplamientos excesivos, la falta de modularidad o la necesidad de optimizar el rendimiento. También puede ser impulsada por cambios en los requisitos funcionales o no funcionales del sistema, como la incorporación de nuevas características o la adaptación a plataformas o entornos diferentes.

El proceso de reestructuración generalmente sigue una serie de pasos. En primer lugar, se realiza un análisis exhaustivo del sistema existente para identificar los problemas y áreas de mejora. Esto puede incluir la revisión del código, el análisis de la arquitectura y la evaluación de aspectos de calidad como la legibilidad, el rendimiento y la mantenibilidad.

Una vez que se han identificado los problemas, se definen los objetivos específicos de la reestructuración. Estos objetivos pueden incluir la simplificación del diseño, la eliminación de código duplicado, la mejora de la modularidad o la optimización del rendimiento. Es importante establecer metas claras y medibles para guiar el proceso de reestructuración.

12

Posteriormente, se lleva a cabo la implementación de los cambios necesarios. Esto puede implicar la refactorización del código existente, la reorganización de la arquitectura, la introducción de nuevos patrones de diseño o la aplicación de técnicas de optimización. Durante este proceso, es fundamental garantizar la integridad y funcionalidad del sistema, realizando pruebas exhaustivas para verificar que las modificaciones no introduzcan errores o fallos.

Por último, una vez finalizada la reestructuración, se realiza una evaluación de los resultados obtenidos. Se analiza si se han logrado los objetivos establecidos y se evalúa el impacto de las modificaciones en aspectos como la calidad, la eficiencia o la mantenibilidad del software.

DIAGRAMA EXPLICATIVO DE LA REINGENIERIA DEL SOFTWARE

13

CONCLUSIONES

En este e-book hemos explorado temas clave en el desarrollo de software, como la reingeniería, el diseño y la arquitectura, los modelos, el mantenimiento del software, la ingeniería inversa y la reestructuración del software.

Hemos aprendido que la reingeniería es fundamental para mejorar sistemas existentes, simplificándolos y adaptándolos a las necesidades empresariales. El diseño y la arquitectura sólidos son esenciales para construir sistemas flexibles. Los modelos de desarrollo y el mantenimiento del software garantizan su calidad y evolución.

La ingeniería inversa permite comprender sistemas sin acceso a su código fuente original. La reestructuración del software mejora la calidad y la estructura del código.

En conclusión, al adoptar enfoques integrales y estratégicos en el desarrollo de software, podemos mejorar la calidad, la eficiencia y la adaptabilidad de los sistemas existentes, asegurando su éxito a largo plazo.

Como reflexiones final tenemos:

Los conceptos de reingeniería, diseño y arquitectura, mantenimiento del software, ingeniería inversa y reestructuración del software son fundamentales para garantizar la calidad, la eficiencia y la adaptabilidad de los sistemas existentes.

En un entorno empresarial en constante cambio, es esencial utilizar enfoques flexibles y adaptativos. La reingeniería nos permite revitalizar sistemas heredados y adaptarlos a las necesidades cambiantes. Un diseño sólido y una arquitectura bien definida nos ayudan a construir sistemas escalables. El mantenimiento adecuado del software asegura su funcionamiento a largo plazo.

La ingeniería inversa y la reestructuración son herramientas valiosas para comprender y mejorar sistemas existentes. Estas prácticas nos permiten aprovechar al máximo la inversión en software y mantenernos actualizados con las últimas tecnologías.

14

Booch, G.(2008), Handbook of Software Architecture. Ducatel, K.(2010), Scenarios for Ambient Intelligence in 2010, ISTAG-European Commission, Menéndez, R. (2014). Ingeniería del Software. Entrada en línea de la Universidad de Murcia. España. Disponible en

https://www.um.es/docencia/barzana/IAGP/IAGP2-Ingenieriasoftware-introduccion.html

Pressman, R. S. (2002). Ingeniería del Software, un enfoque práctico. 5ta edición. MacGraw Hill. Madrid. Pressman, R. 2010. Ingeniería del Software Un Enfoque Práctico. 7ma. Ed. University of Connecticut. McGraw Hill Interamericana. Editores, S.A.

Imagar (2022) ¿Qué Es La Reingeniería De Software Y Cómo La Llevamos A Cabo? Disponible en

https://www.imagar.com/blog-desarrollo-web/que-es-lareingenieria-de-

software/#:~:text=Explicado%20de%20una%20forma%20más%2 0sencilla%20y%20menos%20técnica%2C%20esta,los%20servicios %20que%20previamente%20ofrecían. Consultado el 18 de marzo de 2024

Universidad de Salamanca(2004).METODOLOGÍA DE REINGENIERÍA DEL SOFTWARE PARA LA REMODELACIÓN DE APLICACIONES CIENTÍFICAS HEREDADAS .Disponible en https://gredos.usal.es/bitstream/handle/10366/21762/DPTOIAIT-2004-003.pdf?sequence=1&isAllowed=y .Consultado el 18 de marzo de 2024

González (2010).Reingeniería del software. Disponible en https://epetushuaia.files.wordpress.com/2011/06/reingenieriade-soft.pdf .Consultado el 18 de marzo de 2024

Universidad de Chile (2008).Reingeniería de un Producto de Software Estratégico. Disponible en https://repositorio.uchile.cl/handle/2250/103134 .Consultado el 18 de marzo de 2024

Chema(2020)¿Qué es la ingeniería inversa y cómo funciona? Disponible en https://acentocoop.es/blog/ingenieria-inversa/ .Consultado el 18 de marzo de 2024

Hammer, M., & Champy, J. (1993). Reingeniería: la revolución de la empresa del siglo XXI.

15
BIBLIOGRAFÍA

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.
La reingenieria del software by Juan Manuel Fernández González - Issuu