Arquitectura iMade

iMade propone una arquitectura tecnológica basada en cuatro capas; presentación, lógica, acceso a datos, y modelo. La separación de una aplicación compleja en capas presenta grandes beneficios frente a otras arquitecturas:
Figura. Arquitectura Software de la Aplicación

En la figura se muestran los distintos componentes de la Arquitectura Software Propuesta. Estos componentes interactúan entre sí de una forma lógica y cumplen con una finalidad concreta dentro del conjunto de la arquitectura que se detalla a continuación.

Presentación-control

La capa de presentación representa el interfaz web del usuario con el sistema. Para el interfaz web se usa el estándar JSF con un uso intensivo de tecnologías Ajax. En esta capa se implementan los componentes de interfaz gráfico, que hace uso de componentes de la capa de servicio (lógica) y utiliza los mismos objetos de dominio también conocidos como Data Transfer Objects (DTO) que en el resto de capas. Con el objetivo de hacer más usable el interfaz se usa del estándar JSF y RichFaces para los componentes Ajax. RichFaces es una librería de componentes JSF avanzados con capacidades Ajax desarrollado por la empresa JBoss. Nos proporciona componentes con funcionalidades ya desarrolladas, listos para usar en aplicaciones JSF que facilitan la programación de aplicaciones JavaServer Faces. Además incluye la librería Ajax4JS que permite convertir cualquier interfaz JSF en un interfaz enriquecido con Ajax. RichFaces nos facilita el desarrollo y nos permite la reusabilidad de componentes de una manera estándar y bien documentada, ya que podríamos crear nuestros propios componentes JSF artesanales con funcionalidad Ajax implementada con scripts propios, sin embargo RichFaces nos facilita la vida con un extenso número de componentes listos para utilizarse.

Las principales características de esta capa son:

Capa de Negocio-Servicios

En esta capa se desarrollarán los componentes de servicio que den soporte a la capa de presentación y a la capa de integración con aplicaciones externas (servicio SMTP). En estos componentes se implementará la lógica de la aplicación, procesos de negocio y toda la lógica relacionada con la creación, modificación, actualización y borrado de datos en la base de datos.
Los servicios serán objetos Java que implementan un determinado interfaz que los define, de forma que se pueda utilizar herramientas de IoC tipo Spring si se desea.
Utilizará objetos de dominio (DTO) para comunicar datos al resto de las capas.
Todos estos servicios podrán desarrollarse con interfaces Java estándar o con soporte para WebServices según las necesidades de la aplicación en cuanto a integración con otros sistemas.

Contiene la lógica de la aplicación: reglas de negocio, workflows, operaciones no persistentes... Aislada y encapsulada en Servicios y objetos de apoyo Managers que tienen la siguiente funcionalidad y características:

Persistencia (Acceso a Datos o DAO)

Esta capa tiene la responsabilidad de permitir el acceso a la base de datos. En esta capa se implementa toda la lógica de acceso, el control de las transacciones, etc. Los componentes DAO darán servicio a la capa de lógica de la aplicación y utilizarán objetos de dominio para comunicar datos al resto de las capas. La capa de acceso a datos mediante objetos DAO pretende:

Capa de Modelo (DTO)

No se trata de una capa de la aplicación propiamente dicha, sino que más bien se trata de un conjunto de objetos que almacenan datos (valores) que serán utilizados por todas las capas de la aplicación. Es decir se trata de objetos DTO implementados en JavaBeans que permiten la comunicación de los datos entre capas.