BackflipSD Modelo de Diseño Historia de revisiones: Fecha Versión Descripción Autor 04/09/2012 1.0 Rodrigo Stecanella 16/09/2012 1.1 Rodrigo Stecanella 1
Contenido Historia de revisiones:...1 Introducción...3 Propósito...3 Alcance...3 Definiciones, siglas y abreviaturas....3 Referencias...3 Visión general...3 Diagrama de distribución:...4 Diagrama de Paquetes:...5 Views...5 Controllers...5 Models...6 Base de Datos...7 Motor de Búsqueda...7 Client-Side Scripts...7 Hojas de Estilo...7 Mapa del Sitio...8 Login:...8 Mi Trabajo:...8 Nuevo Incidente:...8 Ver Incidente:...8 CMDB:...8 Ver elemento de configuración:...8 Clientes:...8 Mi perfil:...8 Resto de las páginas:...10 2
Introducción Propósito En el presente documento se describirá formalmente el diseño del sistema, de forma que resulte útil para los desarrolladores al momento de implementar el mismo, y que facilite las tareas de verificación en las fases posteriores. Alcance El documento está enfocado en el diseño del sistema para que sirva como guía en la implementación del mismo. Este documento no pretende entrar en detalles acerca de la interacción de los objetos en bajo nivel, pero sí cómo se relacionan las diferentes partes del software para dar una visión global acerca del mismo. Definiciones, siglas y abreviaturas. Detalladas en el Glosario. Referencias Glosario. Modelo de Casos de Uso. Especificación de Requerimientos del Sistema. Descripción de la Arquitectura del Sistema. Pautas de Interfaz de Usuario. Visión general Se presentarán en este documento distintos diagramas que permitirán una fácil compresión del sistema y de los casos de uso más relevantes para comprenderlo. 3
Diagrama de distribución: El servidor web consiste de una máquina virtual corriendo dentro de un servidor físico, el cual se encuentra dentro de una red DMZ. En la máquina virtual van a estar corriendo tanto los procesos del Apache Tomcat (con la aplicación web dentro) como del Motor de Búsqueda. En seguridad informática, una zona desmilitarizada (DMZ, demilitarized zone) o red perimetral es una red local que se ubica entre la red interna de una organización y una red externa, generalmente Internet. El objetivo de una DMZ es que las conexiones desde la red interna y la externa a la DMZ estén permitidas, mientras que las conexiones desde la DMZ sólo se permitan a la red externa -- los equipos (hosts) en la DMZ no pueden conectar con la red interna. Esto permite que los equipos (hosts) de la DMZ puedan dar servicios a la red externa a la vez que protegen la red interna en el caso de que intrusos comprometan la seguridad de los equipos (host) situados en la zona desmilitarizada. Para cualquiera de la red externa que quiera conectarse ilegalmente a la red interna, la zona desmilitarizada se convierte en un callejón sin salida. La base de datos va a estar corriendo en un servidor aparte, dentro de la red LAN con el objetivo de proteger los datos. 4
Diagrama de Paquetes: Para modelar el problema se utilizó el patrón de diseño Model-View-Controller. El mismo es un patrón o modelo de abstracción de desarrollo de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de negocio en tres componentes distintos. El patrón de llamada y retorno MVC, se ve frecuentemente en aplicaciones web, donde la vista es la página HTML y el código que provee de datos dinámicos a la página. El modelo es el Sistema de Gestión de Base de Datos y la Lógica de negocio, y el controlador es el responsable de recibir los eventos de entrada desde la vista. Views Para cada caso de uso del sistema, habrá una clase dentro del paquete Views. Cada clase dentro de Views tiene un Controlador asociado el cual es el encargado de actualizar la vista. Controllers A continuación se detalla qué controlador maneja qué vistas: 5
CIncidentes o Alta de Incidente (cliente) o Alta de Incidente (técnico o administrador) o Modificación de Incidente o Alta de Actualización de Incidente o Listado de Incidentes o Ver Incidente (cliente) o Ver Incidente (técnico o administrador) o Alta de Categoría CUsuarios o Alta de Administrador o Alta Usuario (cliente) o Alta Técnico o Baja de Técnicos o Modificación de Técnicos (administrador) o Modificación de Técnicos (técnico) o Alta de Grupo de Técnicos o Modificación de Grupo de Técnicos o Listar Técnicos o Ver Técnico o Listar UsuarioClientes o Ver UsuarioCliente o Listar Grupos de Técnicos CClientes o Alta de Cliente (empresa) o Baja de Cliente (empresa) o Modificación de Cliente o Modificación de SLA o Listar Clientes o Ver Cliente CElementosDeConfiguracion o Alta de Cambio o Alta de Elemento de Configuración o Baja de Elemento de Configuración o Modificación de Elemento de Configuración o Listar Elementos de la Configuración o Ver Elemento de la Configuración CReportes o Generación de reporte de incidentes de un grupo de técnicos o Generación de reporte de incidentes de un técnico o Generación de reporte de incidentes del cliente CBusqueda o Búsqueda de CMDB o Búsqueda en Base de Conocimientos Models Las clases dentro del paquete Models son las expresadas en el modelo de dominio junto con sus relaciones. Estas clases son las que representan a la información en sí misma y se persisten en la base de datos. También, algunas clases se comunican con el motor de búsqueda donde, de una forma similar, se persisten en el índice del motor de búsqueda. 6
Base de Datos Esta es una base de datos relacional donde las tablas son un mapeo directo de lo que se puede ver en el modelo de dominio. Para realizar el mapeo se utiliza la herramienta del playframework. Motor de Búsqueda El motor de búsqueda es un web service Solr corriendo como un proceso separado del resto de la aplicación web. Solr está escrito en Java y se ejecuta como un servidor de búsqueda de texto completo independiente dentro de un contenedor de servlets como Tomcat. Solr Lucene utiliza la biblioteca Java de búsqueda en su base para la indexación de texto completo y de búsqueda, y tiene como REST HTTP / XML y JSON APIs. Nuestro motor de búsqueda consta de dos indices, uno donde se permite realizar búsquedas de los elementos de la configuración y sus cambios y otro donde se permite realizar búsquedas de los incidentes y sus actualizaciones. Client-Side Scripts Aquí van a ubicarse todos los archivos relacionados al manejo dinámico de la interfaz de usuario, es decir, todo lo referente a javascript, ajax, jquery, etc. Estos scripts se ejecutan directamente en el navegador del usuario y no en el servidor. Sirven para que el navegador pueda mantener una comunicación dinámica con el servidor sin que sea necesario recargar las páginas cada vez. Además pueden hacer modificaciones dinámicas sobre el html de la página. Hojas de Estilo Son archivos css (Cascading Style Sheets) para darle estilo a las presentaciones html. Se hace una separación física lógica de la presentación y los estilos para que luego, en caso de que sea necesario cambiar colores, etc. respecto a la interfaz de usuario, sea más sencillo. 7
Mapa del Sitio A continuación se describen las diferentes páginas a las que se puede acceder en el sitio, qué casos de uso implementan y una breve descripción de las mismas. Login: A través de esta página los usuario hacen el login para ingresar al sitio. Tanto técnicos, administradores y usuarios de clientes acceden a esta misma página. Mi Trabajo: Esta es la pagina principal de los técnicos y en ella pueden acceder a información acerca de los incidentes que están atendiendo (pestaña mis incidentes), los que están asignados a su grupo (pestaña mi grupo), los incidentes que no están asignados a nadie (sin asignar), los que están asignados a algún técnico (asignados), y todos los incidentes juntos (pestaña todos). Al realizar la búsqueda en esta página, se accede a la página de Búsqueda en la base de conocimientos. Nuevo Incidente: En esta página se pueden crear nuevos incidentes como está descrito en el caso de uso, una vez creado la página te redirige a "Ver Incidente" donde se puede ver el incidente recién creado. Ver Incidente: Se puede ver en detalle el incidente seleccionado. En esta página también se pueden ver y crear actualizaciones acerca del incidente. Las actualizaciones se muestran en el orden inverso al que fueron creadas (de la más nueva a la más vieja). CMDB: Aquí se pueden ver todos los elementos de la configuración existentes pudiendo opcionalmente filtrarlos por cliente. Cuando se realiza una búsqueda desde esta página, se redirige a Búsqueda de CMDB. Ver elemento de configuración: Se muestra información detallada acerca de un elemento de la configuración, también se pueden ver todos los cambios generados respecto a dicho elemento. Clientes: Aquí se pueden listar tanto los usuarios de los clientes como los clientes en sí mismos (empresas). Mi perfil: Se puede acceder a la información acerca del usuario que está logueado actualmente. 8
9
Resto de las páginas: Realizan los casos de uso que llevan por nombre. 10