¿Qué es la reingeniería de software(SRE)? Definición

La reingeniería de software, o SRE para abreviar, es la revisión fundamental del software o sus subcomponentes. El objetivo es implementar software más eficiente o incluso completamente nuevo con la misma funcionalidad. Con la reingeniería de software, un software existente (Legacy Software) analizado, rediseñado y luego reimplementado. La reingeniería se puede realizar con todo el software o con componentes seleccionados. El objetivo es mejorar la calidad y la capacidad de mantenimiento mediante la reescritura.

¿Por qué es necesaria la reingeniería?

Los sistemas heredados crecen con el tiempo con sus requisitos. El sistema debe trabajarse continuamente para agregar nuevas funciones, establecer compatibilidad con otros sistemas o resolver problemas. Hay varias dificultades que interfieren con el trabajo limpio, por ejemplo, que las conexiones solo surgen más tarde o que la rápida implementación de una solución adecuada tiene prioridad.

En estas circunstancias, los módulos crecen a tamaños innecesarios, el código con exactamente la misma tarea existe en varios lugares independientemente uno del otro, el rendimiento del software disminuye con cada actualización o la separación limpia de las capas se debilita cada vez más. En resumen: con el tiempo, la calidad de software disminuye y se crea un código que es cada vez más difícil de mantener.

Reingeniería vs refactorización

Existen varios enfoques para optimizar la calidad del software. La refactorización y la reingeniería son dos enfoques que parecen estar relacionados, pero que difieren en algunos aspectos.

Refactorización

La intención de la refactorización es seguir buscando estructuras mal hechas en el código y reemplazarlas con soluciones más elegantes. Se intenta mejorar el sistema refactorizando algún tiempo después de la implementación real de los cambios para que se logre el mismo comportamiento de una manera más simple. Esto ayuda a que el software sea fácil de mantener a largo plazo; el código sigue siendo rastreable y se puede expandir o cambiar más fácilmente.

Los cambios son de alcance bastante pequeño y tienden a tener lugar en un contexto local. Puede, por ejemplo, mejorar una sola función o clase mediante la refactorización. La refactorización es un proceso continuo que idealmente se lleva a cabo de forma regular. Sin embargo, la refactorización también significa un esfuerzo adicional para la mejora sostenible del software. Dependiendo del presupuesto y la carga de trabajo de los empleados, esto no es factible en todas partes.

Reingeniería

Se utilizan medidas más drásticas en la reingeniería. Más precisamente, lo antiguo se descarta y se reedita. La reingeniería afecta a grandes partes del software hasta todo el sistema. Por lo tanto, es muy posible que en el curso de la reingeniería del software se produzca una reescritura completa de un sistema con una gama idéntica de funciones. Esto tiene la ventaja de que la nueva solución está limpia y técnicamente al nivel deseado.

En el caso de una reescritura completa, a menudo cuestiona tecnologías más modernas con las que se puede trabajar más cómodamente. Sin embargo, el esfuerzo es alto. La reingeniería del software completo puede llevar mucho tiempo. Esto no es solo un factor de tiempo y costo, sino que también puede significar que parte del equipo debe continuar manteniendo el software heredado en paralelo a la reescritura.

La reingeniería de partes individuales del software es a menudo un compromiso entre costos y beneficios. Un sistema antiguo puede, por ejemplo, ser accesible mediante un contenedor para escenarios más modernos (por ejemplo, una aplicación web). Otro escenario común es que las funcionalidades de uso frecuente o relacionadas se subcontratan a un módulo separado para crear componentes reutilizables y más fáciles de mantener.

¿Cómo funciona la reingeniería de software?

Cómo funciona la reingeniería de software
Cómo funciona la reingeniería de software

La reingeniería de software tiene mucho en común con la ingeniería de software. La forma exacta de las fases del proyecto depende en la práctica de los procedimientos utilizados en la respectiva casa de software.

Análisis y definición de requisitos

En ambos casos, primero debe analizarse qué debería ser capaz de hacer exactamente el software terminado. Al igual que con el desarrollo regular de software, los requisitos del software se utilizan como base para la concepción. Estos requisitos pueden, por ejemplo, ser la documentación del software existente, de los desarrolladores especializados, de los clientes o del código del propio software heredado. Si los requisitos tienen que derivarse del software antiguo, esto se denomina ingeniería inversa.

La ingeniería inversa también es importante si solo se van a repensar partes del software, porque los nuevos componentes deben funcionar a la perfección con el código existente. Es posible ampliar o modificar el alcance de las funciones en el curso de la reingeniería del software, por ejemplo, cuando ciertas funciones ya no son necesarias, mientras tanto se han desarrollado nuevos requisitos o ciertas cosas de repente se vuelven más económicas de implementar gracias a la nueva tecnología.

Leer: ¿Qué es SAMBA?

Diseño

Cuando todos los requisitos estén claros, trabaja en el concepto. Esto también se puede imaginar como un desarrollo regular. Dependiendo del proyecto, esto incluye, Arquitectura, modelado de datos, etc.

Implementación

A la fase de diseño le sigue la implementación, es decir, la implementación técnica del concepto.

Test

Luego viene la fase de prueba, en la que se asegura la correcta implementación de los requisitos técnicos.

Entrega

Si la nueva pieza de software cumple con los criterios especificados, puedes comenzar la entrega.

Mantenimiento

Luego, el código pasa a la fase de mantenimiento como de costumbre.

Deja un comentario