Está en la página 1de 6

Ensayo de Ingeniería de Software

Docente

Oswaldo Vélez

Autores

Kevin Gallego Jiménez

Fary Urriaga

Universidad de Córdoba

Facultad de Ingeniería

Ingeniería de Sistemas

2021
Ensayo.

Reingeniería de software Se originó a finales de la década de 1980 aunque se


popularizó en la década de 1990. La reingeniería es un proceso que trata de dar
respuesta a una interrogante. Estamos acaso haciendo las cosas bien o podríamos
hacerlas mejor, Es el rediseño o cambio drástico de un proceso en un negocio,
deriva hacia el producto. Es comenzar de cero, cambio de todo o nada.

La reingeniería de software es costosa y consumidora de tiempo. La reingeniería es


una actividad de reconstrucción, preferible de realizar antes de que se “derrumbe”
la obra. Antes de derribar una casa, quizás se necesita corroborar que está mal.
Reingeniería del Software

La reingeniería es un proceso que altera los elementos internos de toda obra, no es


una sola remodelación de la fallada. La reingeniería ayuda a la evolución y
mantenimiento del software Generalmente se siguen los siguientes pasos para
aplicar reingeniería: Reingeniería del Software

Refactoring (Reestructuración) es modificar el comportamiento interno


(generalmente código fuente) sin modificar su comportamiento externo (apariencia,
funcionalidad). Un cambio al sistema que deja su comportamiento inalterable (sin
cambios), pero aumenta alguna cualidad no funcional como simplicidad, flexibilidad,
comprensión

Reducir Reusar Reciclar 80% Desarrollo de Software es para mantenimiento. Por lo


tanto se necesita de un código simple, legible y bien diseñado para que en un futuro
pueda ser extensible. Software Sustentable

Las técnicas de ingeniería de software impulsada por modelos de sistemas


heredados no solo son útiles en escenarios de ingeniería avanzada, sino que
también se pueden aplicar con éxito para hacer evolucionar los sistemas
existentes. Los modelos son muy apropiados para representar información
involucrada en tareas de evolución en un nivel más alto de abstracción (por ejemplo,
información recolectada en un proceso de ingeniería inversa). Además, se han
desarrollado tecnologías de transformación de modelos para facilitar la
automatización de tales tareas.

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.

Los enfoques de reingeniería es impulsada por modelos, para migrar código


heredado monolítico a arquitecturas de 3 niveles se han presentado en Sánchez
Ramón et al. (2011) y Heckel et al. (2008) . Estos trabajos se centran
especialmente en la etapa de ingeniería inversa. Además, no prestan atención al
proceso de desarrollo aplicado para implementar la reingeniería. En lo personal, no
se aborda cómo se validaron cada transformación del modelo y la solución final.

Escribir transformaciones de modelos se reconoce como una tarea desafiante en el


desarrollo de transformaciones de modelos ( Baudry et al., 2010 ), y se han
propuesto algunos enfoques para desarrollar cadenas de transformación ( Küster et
al., 2009 ) o transformaciones individuales ( Varró, 2006 ). Sin embargo, las
experiencias sobre proyectos reales en el desarrollo de transformaciones de
modelos no se publican hasta donde sabemos. El desarrollo impulsado por pruebas
también es una idea que aún no se ha explorado lo suficiente para las
transformaciones individuales, aunque se ha propuesto para el desarrollo
incremental de cadenas de transformación ( Küster et al., 2009 ).

Hasta ahora se ha informado de un número limitado de experiencias industriales de


modernización impulsada por modelos. Esto se evidencia por el bajo número de
trabajos de ingeniería inversa basados en modelos obtenidos en la revisión
sistemática de la literatura presentada en Raibulet et al. (2017) . Además, solo tres
de los once artículos considerados en esa revisión utilizaron el meta modelo
estándar de KDM. Hasta donde sabemos, hasta ahora no se ha publicado ningún
trabajo sobre una conversión de fuente a fuente basada en KDM. Esto puede llevar
a pensar que existe un desinterés por aplicar técnicas MDE en la modernización del
software. La difusión del conocimiento sobre experiencias reales puede favorecer
un crecimiento en el uso de la modernización impulsada por modelos si se reportan
los beneficios.

Ingeniería Inversa se refiere a la sofisticación del diseño que es obtenido del código
fuente. Conforme aumenta el nivel se obtiene información que permitirá entender
de mejor manera los diferentes programas. Completitud se refiere al grado de
detalle que se ofrece en un grado de abstracción, lo cual provee de una mejora en
proporción directa con la cantidad de análisis que efectúa quien realiza la ingeniería
inversa. Además tomamos en cuenta la interactividad refiriéndose al grado en que
el humano está integrado con las herramientas para crear un proceso de ingeniería
inversa efectivo. En consecuencia con el aumento de los puntos antes mencionados
se deberá incrementar la completitud. Direccionalidad tiene que ver en dos
sentidos, para el caso de ser unidireccional, la información obtenida del código
fuente servirá en cualquier actividad de mantenimiento. Por otra parte si es
bidireccional, la información alimentara a herramientas de REINGENIERIA que
reestructurara o regenerara el software anterior.

Beneficios de implementar la reingeniería

Algunos beneficios que puede alcanzar una empresa rediseñar son:

 Cambio en los procesos actuales a procesos más eficientes.


 Cambio a procesos que requieran menor control y verificación.
 El comportamiento de los trabajadores se torna activo, aportan ideas, opiniones
y participan en la mejora y avance de los procesos.
 Combinación de tareas, convirtiendo varias en una sola integral.
 Una mejor organización del trabajo.
LA IMPORTANCIA DE APLICAR REINGENIERÍA DE SOFTWARE

Las Viejas Aplicaciones

Mucha gente al ver las grandes y viejas mansiones queda asombrado de su belleza,
pero no se preguntan que tan bien se puede vivir en ellas. Las personas que lo
hacen dicen que es una pesadilla mantenerlas. Todas ellas fueron construidas con
viejas tecnología estándar. Sus paredes externas no tienen aislamiento. El
alambrado eléctrico tiene limitaciones y claramente es inadecuada para las
necesidades de energía de hoy y su cableado decadente crea un severo peligro
eléctrico.

Los viejos sistemas son muy similares a los grandes y viejos edificios. Ellos tienen
los mismos problemas de mantenimiento, un hecho en gran parte irreconocible por
parte de la comunidad corporativa. Muchos de esos edificios son demolidos por que
no son mantenibles y ya no sirven para las necesidades de sus ocupantes.

Las viejas computadoras tal vez se puedan ver solamente en museos. Pero en
muchos casos, software escrito para viejos modelos de computadora están
ejecutándose hoy en día. Un caso extremo es el de un software escrito para una
IBM 1401 Autocoder. Cuando la compañía remplazó la 1401 con una IBM 360/40,
compraron un emulador de la 1401 para poder ejecutar el software. Esa aplicación
hoy día corre en una PC – la compañía compro otro emulador.

Los clientes demandan que las nuevas capacidades sean agregadas al código
escrito en sus viejos sistemas. Casi siempre, las empresas encuentran que no
pueden modificar su código – el programador que lo mantenía murió recientemente
o nadie sabe programar en el lenguaje en el que fue escrito. Por lo que la
funcionalidad de ese programa quedará así para siempre.

La siguiente lista son las razones por las que es aplicable la reingeniería a los
sistemas de información heredados:

 Frecuentes fallas de producción (fiabilidad cuestionable).


 Problemas de rendimiento.
 Tecnología obsoleta.
 Problemas de integración del sistema.
 Código de cálida pobre.
 Dificultad (peligroso) al cambio.
 Dificultad para probar.
 Mantenimiento caro.
 Incremento de problemas del sistema.

Estas razones pueden ser solucionadas al aplicar un proceso de mantenimiento de


software, pero cuando dicho mantenimiento deja de ser viable, entonces se toma la
decisión de aplicar reingeniería.

También podría gustarte