Logo Studenta

Hacia_una_Arquitectura_de_Software_que_Facilite_el

¡Estudia con miles de materiales!

Vista previa del material en texto

See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/255656384
Hacia una Arquitectura de Software que Facilite el Mantenimiento y Evolución de
los Sistemas Heredados
Article
CITATIONS
0
READS
494
3 authors:
Juan Muñoz López
Instituto Nacional de Estadística y Geografía
11 PUBLICATIONS   6 CITATIONS   
SEE PROFILE
Jaime Muñoz-Arteaga
Autonomous University of Aguascalientes
291 PUBLICATIONS   1,146 CITATIONS   
SEE PROFILE
Francisco Alvarez Rodriguez
Autonomous University of Aguascalientes
288 PUBLICATIONS   916 CITATIONS   
SEE PROFILE
All content following this page was uploaded by Francisco Alvarez Rodriguez on 28 May 2014.
The user has requested enhancement of the downloaded file.
https://www.researchgate.net/publication/255656384_Hacia_una_Arquitectura_de_Software_que_Facilite_el_Mantenimiento_y_Evolucion_de_los_Sistemas_Heredados?enrichId=rgreq-57c9ad35106fdf855e860a224fb7ea31-XXX&enrichSource=Y292ZXJQYWdlOzI1NTY1NjM4NDtBUzoxMDY0NTMyMDU1MjAzODhAMTQwMjM5MTgzMDM1Ng%3D%3D&el=1_x_2&_esc=publicationCoverPdf
https://www.researchgate.net/publication/255656384_Hacia_una_Arquitectura_de_Software_que_Facilite_el_Mantenimiento_y_Evolucion_de_los_Sistemas_Heredados?enrichId=rgreq-57c9ad35106fdf855e860a224fb7ea31-XXX&enrichSource=Y292ZXJQYWdlOzI1NTY1NjM4NDtBUzoxMDY0NTMyMDU1MjAzODhAMTQwMjM5MTgzMDM1Ng%3D%3D&el=1_x_3&_esc=publicationCoverPdf
https://www.researchgate.net/?enrichId=rgreq-57c9ad35106fdf855e860a224fb7ea31-XXX&enrichSource=Y292ZXJQYWdlOzI1NTY1NjM4NDtBUzoxMDY0NTMyMDU1MjAzODhAMTQwMjM5MTgzMDM1Ng%3D%3D&el=1_x_1&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Juan-Munoz-Lopez?enrichId=rgreq-57c9ad35106fdf855e860a224fb7ea31-XXX&enrichSource=Y292ZXJQYWdlOzI1NTY1NjM4NDtBUzoxMDY0NTMyMDU1MjAzODhAMTQwMjM5MTgzMDM1Ng%3D%3D&el=1_x_4&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Juan-Munoz-Lopez?enrichId=rgreq-57c9ad35106fdf855e860a224fb7ea31-XXX&enrichSource=Y292ZXJQYWdlOzI1NTY1NjM4NDtBUzoxMDY0NTMyMDU1MjAzODhAMTQwMjM5MTgzMDM1Ng%3D%3D&el=1_x_5&_esc=publicationCoverPdf
https://www.researchgate.net/institution/Instituto_Nacional_de_Estadistica_y_Geografia?enrichId=rgreq-57c9ad35106fdf855e860a224fb7ea31-XXX&enrichSource=Y292ZXJQYWdlOzI1NTY1NjM4NDtBUzoxMDY0NTMyMDU1MjAzODhAMTQwMjM5MTgzMDM1Ng%3D%3D&el=1_x_6&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Juan-Munoz-Lopez?enrichId=rgreq-57c9ad35106fdf855e860a224fb7ea31-XXX&enrichSource=Y292ZXJQYWdlOzI1NTY1NjM4NDtBUzoxMDY0NTMyMDU1MjAzODhAMTQwMjM5MTgzMDM1Ng%3D%3D&el=1_x_7&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Jaime-Munoz-Arteaga?enrichId=rgreq-57c9ad35106fdf855e860a224fb7ea31-XXX&enrichSource=Y292ZXJQYWdlOzI1NTY1NjM4NDtBUzoxMDY0NTMyMDU1MjAzODhAMTQwMjM5MTgzMDM1Ng%3D%3D&el=1_x_4&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Jaime-Munoz-Arteaga?enrichId=rgreq-57c9ad35106fdf855e860a224fb7ea31-XXX&enrichSource=Y292ZXJQYWdlOzI1NTY1NjM4NDtBUzoxMDY0NTMyMDU1MjAzODhAMTQwMjM5MTgzMDM1Ng%3D%3D&el=1_x_5&_esc=publicationCoverPdf
https://www.researchgate.net/institution/Autonomous_University_of_Aguascalientes?enrichId=rgreq-57c9ad35106fdf855e860a224fb7ea31-XXX&enrichSource=Y292ZXJQYWdlOzI1NTY1NjM4NDtBUzoxMDY0NTMyMDU1MjAzODhAMTQwMjM5MTgzMDM1Ng%3D%3D&el=1_x_6&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Jaime-Munoz-Arteaga?enrichId=rgreq-57c9ad35106fdf855e860a224fb7ea31-XXX&enrichSource=Y292ZXJQYWdlOzI1NTY1NjM4NDtBUzoxMDY0NTMyMDU1MjAzODhAMTQwMjM5MTgzMDM1Ng%3D%3D&el=1_x_7&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Francisco-Rodriguez-41?enrichId=rgreq-57c9ad35106fdf855e860a224fb7ea31-XXX&enrichSource=Y292ZXJQYWdlOzI1NTY1NjM4NDtBUzoxMDY0NTMyMDU1MjAzODhAMTQwMjM5MTgzMDM1Ng%3D%3D&el=1_x_4&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Francisco-Rodriguez-41?enrichId=rgreq-57c9ad35106fdf855e860a224fb7ea31-XXX&enrichSource=Y292ZXJQYWdlOzI1NTY1NjM4NDtBUzoxMDY0NTMyMDU1MjAzODhAMTQwMjM5MTgzMDM1Ng%3D%3D&el=1_x_5&_esc=publicationCoverPdf
https://www.researchgate.net/institution/Autonomous_University_of_Aguascalientes?enrichId=rgreq-57c9ad35106fdf855e860a224fb7ea31-XXX&enrichSource=Y292ZXJQYWdlOzI1NTY1NjM4NDtBUzoxMDY0NTMyMDU1MjAzODhAMTQwMjM5MTgzMDM1Ng%3D%3D&el=1_x_6&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Francisco-Rodriguez-41?enrichId=rgreq-57c9ad35106fdf855e860a224fb7ea31-XXX&enrichSource=Y292ZXJQYWdlOzI1NTY1NjM4NDtBUzoxMDY0NTMyMDU1MjAzODhAMTQwMjM5MTgzMDM1Ng%3D%3D&el=1_x_7&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Francisco-Rodriguez-41?enrichId=rgreq-57c9ad35106fdf855e860a224fb7ea31-XXX&enrichSource=Y292ZXJQYWdlOzI1NTY1NjM4NDtBUzoxMDY0NTMyMDU1MjAzODhAMTQwMjM5MTgzMDM1Ng%3D%3D&el=1_x_10&_esc=publicationCoverPdf
Hacia una Arquitectura de Software que Facilite el 
Mantenimiento y Evolución de los Sistemas Heredados 
Juan Muñoz López 1, Jaime Muñoz Arteaga 2 Francisco Javier Álvarez Rodríguez3 
1 Universidad Autónoma de Aguascalientes- Centro de Ciencias Básicas, Av. 
Universidad #940, Fracc. Campestre, Aguascalientes, Ags., 20100. México 
jmunoz@correo.uaa.mx 
2 Universidad Autónoma de Aguascalientes- Centro de Ciencias Básicas, Av. 
Universidad #940, Fracc. Campestre, Aguascalientes, Ags., 20100. México 
jmunozar@correo.uaa.mx 
3 Universidad Autónoma de Aguascalientes- Centro de Ciencias Básicas, Av. 
Universidad #940, Fracc. Campestre, Aguascalientes, Ags., 20100. México 
fjalvar@correo.uaa.mx 
 
 
Resumen. Este trabajo aborda la problemática que representa para las empresas 
evolucionar los sistemas heredados que inhiben su desarrollo y dificultan sus 
estrategias de competitividad. Así mismo, se hace una revisión de las 
estrategias más comunes de mantenimiento y sus principales limitaciones. 
Se propone una solución de arquitectura de software que parte de la aplicación 
de patrones arquitectónicos conocidos y que proporciona las bases para 
establecer un proceso de evolución de software que simplifica las tareas a 
desarrollar y reduce sus costos. 
 
Palabras clave: Arquitectura de Software, Sistemas Heredados, Evolución de 
Software, Mantenimiento de Software. 
1 Introducción 
Las empresas invierten una gran cantidad de recursos para mantener funcionando los 
sistemas que soportan sus áreas de negocio. De acuerdo con las leyes de Lehman [4], 
los sistemas que resuelven un problema del mundo real deben adaptarse continuamente 
ya que en caso de no hacerlo la solución que aportan será cada vez menos satisfactoria. 
Al añadir código al sistema, las tareas de mantenimiento se encarecen y complican. 
Los cambios en el entorno agravan este problema. Se debe decidir si se siguen 
utilizando tecnologías que salen del mercado o se migra hacia otras nuevas. 
No es recomendable continuar utilizando una tecnología que se ha vuelto obsoleta; 
las partes de hardware se vuelven escasas y es costoso conseguirlas; el software de base 
de los sistemas deja de ser soportado por sus fabricantes y la gente con habilidades para 
realizar ajustes y corregir problemas en él también comienza a escasear. 
 Los sistemas están sujetos a una dinámica de mantenimiento constante, adaptándose 
para satisfacer nuevas necesidades y soportar nuevas tecnologías. Más de la mitad del 
esfuerzo de desarrollo de una organización se destina al mantenimiento [3]. 
El mantenimiento de muchos sistemas heredados llega a ser incosteable y por tanto, 
la organización decide reemplazarlos. En algunas ocasiones el reemplazo de un sistema 
es una labor que no requiere demasiado esfuerzo, ni recursos y la empresa considera 
que tomó una decisión que se había postergado de manera innecesaria. Sin embargo, en 
la mayoría de los casos, no es fácil sustituir un sistema heredado. 
Muchos sistemas heredados son críticos para soportar los procesos de la 
organización y constituyen la única fuente de conocimiento que se tiene de ellos. Es 
posible que ya no se cuente con el personal que desarrolló un sistema que ha estado 
trabajando durante varios años con lenguajes y tecnologíasque resultan desconocidas 
para los nuevos equipos de desarrollo. 
La reingeniería de software puede ayudar a incrementar mantenibilidad y 
funcionalidad de un sistema. Sin embargo, los beneficios de la reingeniería serán 
limitados si no se modifica su arquitectura [1,3]. 
Como se mencionó anteriormente, la evolución arquitectónica permite incrementar 
la capacidad de adaptación del sistema, pero es un proceso complejo y costoso que 
implica riesgos difíciles de afrontar. 
2 Estado del Arte 
Las organizaciones deben evolucionar y adaptarse a la dinámica de su entorno para 
asegurar su permanencia; así mismo, sus sistemas deben evolucionar para satisfacer las 
nuevas necesidades de información y procesamiento que se presentan. 
Si un programa de software no puede adaptarse a un entorno cambiante, entonces 
inhibirá el desarrollo de la organización en lugar de facilitar su labor. Existen diferentes 
estrategias que permiten evolucionar el software, entre las que podemos mencionar el 
mantenimiento de software, la evolución arquitectónica y la reingeniería de software. 
El mantenimiento de software de acuerdo con el Glosario Estándar de Terminología 
de Ingeniería de Software de la IEEE [2] es “la modificación de un producto de 
software después de su entrega al cliente o usuario para corregir defectos, mejorar el 
rendimiento u otras propiedades deseables, o para adaptarlo a un cambio de entorno”. 
Las diferentes razones que originan el mantenimiento permiten establecer una 
clasificación: el mantenimiento correctivo se orienta a eliminar los defectos del sistema 
que se manifiestan en forma de fallas; la finalidad del mantenimiento perfectivo es 
realizar mejoras y adiciones a las características funcionales y a la eficiencia del 
sistema; por último, el mantenimiento adaptativo consiste en modificar el sistema para 
responder a los cambios tecnológicos del medio en el que se ejecuta. 
Normalmente, el mantenimiento estará presente durante toda la vida útil de un 
sistema; la mayor parte de las veces, por la necesidad de agregar funcionalidad a los 
programas, o para adaptarlos a los cambios producidos en el entorno. 
La repetida aplicación de mantenimiento a un sistema introduce cambios que hacen 
que el software evolucione. La evolución tiene un costo, cada vez que se agrega 
funcionalidad al sistema o se le prepara para trabajar con una nueva tecnología, el 
sistema se vuelve más complejo y es más difícil darle mantenimiento. 
La evolución arquitectónica consiste en realizar una serie de cambios que modifican 
la concepción misma del sistema. El cambio de la arquitectura de un sistema 
centralizado a un modelo cliente/Servidor ejemplifica dicha transformación. 
El cambio de arquitectura de un sistema representa un fuerte y costoso reto [1]. El 
equipo de trabajo se encontrará con problemas como: estructuras complejas, 
componentes funcionales entremezclados, falta de documentación y desconocimiento 
de cómo trabaja en su totalidad el sistema. 
La reingeniería de software busca reimplementar los sistemas para aumentar su 
mantenibilidad. Esta estrategia comprende la redocumentación; la organización y 
reestructura; la traducción a un lenguaje de programación más moderno y la 
modificación y actualización de la estructura y los valores de los datos del sistema. No 
cambia ni la funcionalidad del software, ni la arquitectura del sistema [1]. Esta 
estrategia se asocia con alguna forma de mantenimiento preventivo e implica la 
reconstrucción del sistema, es costosa y puede tomar una gran cantidad de tiempo [3]. 
Cada una de las estrategias descritas tiene diferentes propósitos y son 
complementarias entre sí. 
3 Metodología utilizada 
La solución que se propone al problema planteado consiste en crear una arquitectura de 
referencia que permita establecer las bases de diseño para integrar los programas 
heredados a un ambiente de sistemas soportado por nuevas tecnologías. 
Una arquitectura que combine los patrones arquitectónicos de broker y de capas 
podría permitir el reemplazo gradual de los elementos funcionales de los sistemas 
heredados. Sommerville [1] menciona que esta combinación puede servir para 
transformar un sistema centralizado en uno descentralizado. Consideramos que este 
patrón también puede utilizarse para integrar sistemas autónomos, lo que genera una 
sinergia que amplía su alcance individual. 
 
 Fig. 1. Integración de Sistemas Heredados Utilizando el Patrón de Broker 
 
El patrón arquitectónico de broker introduce una capa de servicios de software que 
realiza las operaciones de conversión y acoplamiento necesarias para simplificar el 
intercambio de información entre los sistemas (ver Figura 1). Se estima que gracias a 
las facilidades suministradas por este patrón y utilizando los mecanismos apropiados es 
posible reemplazar gradualmente la funcionalidad del sistema al mismo tiempo que se 
integran los datos que contiene, sin esperar a que esto suceda en una etapa avanzada. 
El nuevo sistema adoptará una arquitectura cliente/servidor en la que el cliente 
terminará sustituyendo al sistema heredado. La arquitectura del nuevo sistema será más 
modular y flexible que la de los sistemas heredados que sustituye. Esta será una 
característica que nacerá con el sistema y formará parte de él conforme evoluciona. 
Al integrarse los sistemas heredados dan lugar a un nuevo sistema separado de los 
mecanismos de integración. Esto trae como ventaja contar con un sistema lógicamente 
centralizado sin que importe si físicamente está distribuido o concentrado. La 
independencia de los mecanismos de integración permitirá que estos sean eliminados 
cuando ya no se requieran y que puedan integrarse nuevos sistemas si es necesario. 
Existen varios puntos de enlace que son críticos para realizar la integración del 
sistema. En la figura 1 se destacan con cuadros punteados las interfaces de entrada y de 
salida hacia los sistemas autónomos y hacia sus estructuras de almacenamiento. Cada 
una de estas interfases debe ser tratada por un mecanismo de integración diferente; sin 
embargo habrá un elemento de integración principal que hará que cada uno de los 
mecanismos individuales se una y en conjunto sean percibidos como uno solo. 
Adicionalmente, el modelo de distribución de capas ayuda a organizar y agrupar las 
tareas de un sistema [5] de forma que son percibidas más claramente y pueden atacarse 
utilizando estrategias especializadas acordes a diferentes niveles de abstracción. 
En el trabajo de Sommerville [1] se presenta una posible configuración de las capas 
arquitectónicas que deberían tomarse en cuenta para visualizar un sistema heredado. En 
ella se describen cinco capas que describen los elementos técnicos del software, desde 
la capa de Base de Datos hasta la de presentación.; sin embargo, es necesario 
considerar también capas más bajas que tomen en cuenta aspectos físicos relacionados 
con el hardware y su distribución. Además, se deben añadir capas superiores que 
consideren las características no funcionales y las reglas de negocio que forman parte 
de los elementos conceptuales del sistema. 
Al principio, ciertas partes del nuevo sistema deberán servir para proporcionar una 
nueva interfase para comunicarse con los programas heredados que se encuentran en 
proceso de reemplazo, pero con el tiempo deberán realizar estas solicitudes a los 
nuevos módulos del sistema que hayan sido implementados. El uso de patrones 
adicionales como el de todo-partes, posiblemente permitirá realizar el encapsulamiento 
e integración de los componentes que compartirán una interfase común hacia su 
funcionalidad. 
4 Resultados Experimentales 
Como caso de estudio del empleo de arquitecturas de referencia para soportar la 
evolución de los sistemas heredados se plantea la integración de sistemas que son 
comunes en las organizaciones, por ejemplo: contabilidad, ventas e inventarios. Estos 
sistemas trabajan autónomamente en áreas separadas, sin embargo, lainformación 
producida por algunos de ellos, es insumo de otros; por ejemplo, la información que 
produce los sistemas de ventas y de inventarios es insumo del sistema de contabilidad. 
Compartir la información entre los sistemas requiere de la aplicación de mucho 
esfuerzo manual para transportar y convertir la información de un sistema al otro. Así 
mismo, es común que a cada sistema se deban agregar nuevos reportes y consultas para 
satisfacer nuevas necesidades. Si se requiere un reporte que integre la información de 
dos o más de estos sistemas, probablemente se deba hacer un trabajo artesanal 
utilizando herramientas como hojas de cálculo y procesadores de texto. 
Si se realiza una transformación arquitectónica bajo la metodología propuesta en 
este documento, se establece un marco de trabajo que facilita la integración de la 
información de los diferentes sistemas en uno solo. Esta integración permite que se 
puedan utilizar los datos de diferentes sistemas para producir los nuevos reportes que 
son requeridos. 
 
Fig. 2. Mecanismo de Reemplazo de Módulos en el Sistema Integrado 
 
Los mecanismos de integración permiten reemplazar gradualmente los módulos 
provenientes de los sistemas autónomos. Un modulo de procesamiento podrá utilizar 
los datos y la funcionalidad del sistema heredado y podrá reemplazarlo posteriormente 
con una nueva versión de dicho sistema de manera progresiva (ver figura 2). 
De esta forma el mecanismo propuesto permite hacer una migración gradual de 
datos y funcionalidad en la que los beneficios de una nueva interfase integrada y una 
arquitectura modular se pueden percibir desde el principio. 
5 Conclusiones y Trabajos Futuros de Investigación 
El modelo arquitectónico que se plantea podría proporcionar un alto nivel de 
flexibilidad que podría servir para establecer un proceso que integre diferentes 
estrategias de mantenimiento. 
La dificultad de realizar una evolución arquitectónica del sistema se podría 
simplificar utilizando la combinación de patrones que se plantea, al mismo tiempo que 
se establece un marco de trabajo que permite la evolución gradual de los sistemas 
heredados, con lo que es posible distribuir los costos de manera que puedan ser 
afrontados más fácilmente por la organización. 
Los nuevos módulos del sistema al irse migrando llevarían implícito un trabajo de 
reingeniería que podría continuarse en el futuro gracias a la flexibilidad de la 
arquitectura del sistema resultante. 
Además, gracias a los trabajos de rediseño arquitectónico y de reingeniería que se 
apliquen al sistema, el mantenimiento al sistema se podrá ver beneficiado por una 
simplificación que permitirá integrar nuevas funciones al sistema existente. 
La propuesta que se plantea presenta una arquitectura de software que proporcionará 
las bases para generar un proceso más simple para evolucionar el software. Es 
necesario desarrollar un método que describa en forma concreta la serie ordenada de 
actividades que deberán realizarse. 
Este documento plantea los esbozos iniciales de una arquitectura de referencia, es 
necesario documentarla a partir de modelos estandarizados, como por ejemplo UML, a 
los que habrá que hacer las adaptaciones necesarias para que puedan presentar las 
características funcionales y no funcionales de un sistema. 
 
Reconocimientos. Los autores agradecemos a los revisores sus comentarios que 
resultaran de gran utilidad para enriquecer este trabajo. Así mismo, agradecemos a la 
UAA y al INEGI por su apoyo en la realización de esta investigación. 
Referencias 
[1] I. Sommerville, Ingeniería de Software, Pearson Education, México, 2002 
[2] ANSI/IEEE, Standard 610: IEEE Standard Glosary of Software Engineering Terminology, 
New York: Institute of Electrical and Electronics Engineers, Inc., 1990 
[3] R. S. Pressman, Software Engineering; A Practitioner’s Approach, Fifth Edition, McGraw 
Hill, USA, 2001 
[4] M. M. Lehman, Laws of Software Evolution Revisited, Department of Computing Imperial 
College, Londres, Inglaterra, 1997, pp 1-11 
[5] F. Buschman, R. Meunier, H. Ronhert, P., Sommerland, M. Stal, Pattern-Oriented Software 
Architecture; A System of Patterns, Willey, USA, 1996 
[6] H. Li, C. Reinke, S. Thompson, Tool Support for Refactoring Functional Programs, 
Haskell’03, ACM, Suecia, Agosto 2003, pp 27-38 
[7] M. O’ Cinnéide, Automated Application of Dessign Patterns: A Reffactoring Approach, 
Doctoral Thesis, University of Dublín, Trinity College, Irlanda, Octubre 2000 
View publication stats
https://www.researchgate.net/publication/255656384

Continuar navegando