Arquitectura del sistema
La arquitectura de la aplicación se puede dividir en tres módulos completamente diferenciados:
-
Núcleo de la aplicación: Este módulo es el que contiene toda la lógica del sistema. Sobre este módulo se apoyan los dos restantes. En el caso de que se quieran incluir nuevos componentes (o tipos de componentes), este módulo deberá ser ampliado, siempre manteniendo lo desarrollado hasta el momento.
-
Interfaz Standalone: Este módulo proporciona una interfaz gráfica que permite utilizar la aplicación en modo standalone, es decir, en la propia máquina sin necesidad de ningún tipo de comunicación con otros sistemas. Este módulo, en el caso de que se desarrollen nuevos tipos de componentes (o componentes, en algún caso determinado), habrá que ampliarlo para proporcionar una interfaz gráfica que permita visualizar las nuevas funcionalidades.
-
Interfaz Webservices: Este módulo permite utilizar la aplicación de forma distribuida, es decir, proporciona la funcionalidad necesaria para que la aplicación se comporte como un servidor, permitiendo que un cliente, a través de servicios Web, utilice la funcionalidad proporcionada. En principio, este módulo no habría que modificarlo si se introducen nuevos componentes (o tipos de componentes). Tan sólo habría que modificarlo en el caso de que se quieran ofrecer más funcionalidades a los clientes.
La arquitectura del sistema se puede ver en la siguiente figura:
Como cabe esperar, los módulos de nivel superior se apoyan en los módulos de nivel inferior, pero nunca en los módulos del mismo nivel ni en los de nivel superior. De esta forma se consigue que la aplicación sea fácilmente escalable, ya que se podría modificar un módulo (respetando las interfaces que ofrece a los demás módulos) sin que influyese en el resto de la aplicación. Además, cada módulo se ha diseñado de forma que el modificarlos o ampliarlos no implique tener que reescribir el módulo entero. Podemos decir que toda la aplicación se ha diseñado utilizando, en la medida de lo posible, algunos de los más importantes patrones de Ingeniería del Software [7] como son "Solitario (Singleton)", "Polimorfismo", "Alta cohesión" y "Bajo acoplamiento".
Por último, hay que destacar que todos los posibles errores que se pueden dar en la aplicación son volcados a ficheros de logs haciendo uso de la herramienta de logging Log4J.
A continuación se explican los distintos módulos de la aplicación de forma detallada.