Propuesta de arquitectura de software para el desarrollo de aplicaciones empresariales basadas en JEE - Hinojosa Tinoco, Diego Andrés (2013)
La arquitectura de software es una pieza central en el desarrollo de productos de software modernos. El objetivo de la arquitectura consiste en desarrollar sistemas grandes de forma eficiente, estructurada y con capacidad de reúso. La arquitectura forma parte del proceso de diseño de software el cual también forma parte del proceso de desarrollo de software que comprende, requerimientos, diseño, implementación, prueba y mantenimiento. Debido a la complejidad de las aplicaciones empresariales, la fase de diseño, donde se define la arquitectura de estos sistemas, es fundamental para garantizar que cumpla con los principios de cohesión y acoplamiento. Las aplicaciones Web empresariales pueden desarrollarse utilizando cualquier arquitectura posible. Es por tal razón que existe una gran variedad de patrones de diseño y construcción de software. Es aquí donde las propuestas arquitectónicas se confunden en un lazo al igual que la enorme cantidad de herramientas y frameworks que al final terminan confundiendo al arquitecto de software sobre qué camino tomar para diseñar su sistema, como por ejemplo cuántas capas se ha de utilizar, la relación entre éstas, si se trabajará o no a base de frameworks, etc. Sería desastroso pensar que, una vez teniendo construido la arquitectura del sistema empresarial, en el momento de la fase de desarrollo el arquitecto y los programadores se den cuenta que no es posible relacionar los componentes de las diversas capas y peor aún, que los frameworks que se escogieron no son compatibles entre sí y en fin, un sin número más de complicaciones que terminará llevando al arquitecto a rediseñar la estructura del sistema. Para combatir esta problemática, el presente trabajo sugiere una arquitectura genérica basada en JEE como plataforma de desarrollo empresarial, con la integración de frameworks, como alternativa ya sea de base para, a partir de ésta, generar arquitecturas más complejas de acuerdo con las características del sistema