Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
@USB
Documento de Arquitectura: Aplicación Calendario
Versión <0.1>
@USB Versión: <0.1>
Documento de Arquitectura: Aplicación Calendario Fecha: <12-06-2008>
Arquitectura
Historia de Revisión
Fecha Versión Descripción Autor
12-06-2008 0.1 Primera versión del Documento de Beatriz Avila
Arquitectura de la aplicación Calendario Luis Serrano
para el sistema myUSB. Maribel Acosta
Alexander Bustamante
Cristiam Da Silva
Zinahia Querales
07-07-2008 0.5 Versión final del Documento de @USB
Arquitectura de la aplicación Calendario
para el sistema myUSB
Tabla de Contenidos
1. Introducción 5
1.1 Propósito 5
1.2 Alcance 5
1.3 Definiciones, Acrónimos y Abreviaturas 5
1.4 Referencias 5
1.5 Visión General 5
2. Representación Arquitectural 6
5. Vista Lógica 12
5.1 Crear Evento 16
5.2 Eliminar Evento 16
5.3 Editar Evento 17
5.4 Ver eventos en un mes dado 17
5.5 Ver eventos en el mes actual 18
5.6 Ver todos los eventos 18
6. Vista de Implementación 19
6.1 Visión General 19
6.2 Capas 19
6.2.1 Capa de Interfaz 19
6.2.2 Capa de Negocio 20
6.2.3 Capa de Datos y Utilidades 21
7. Vista de Despliegue 22
7.1 Requerimientos 22
7.1.1 Del usuario 22
7.1.2 Del servidor 23
7.2 Limitaciones 23
7.2.1 Disponibilidad del sistema 23
7.2.2 Rendimiento 23
7.3 Suposiciones 23
7.3.1 Acceso a internet 23
8. Vista de Procesos 23
9. Vista de Datos 23
11. Calidad 24
1. Introducción
1.1 Propósito
El presente documento provee una visión inicial para la arquitectura de la aplicación Calendario del sistema
myUSB, a través de la utilización de las 4+1 vistas de RUP. De esta manera, se busca capturar y asentar
las decisiones importantes que serán tomadas en el desarrollo de la misma.
1.2 Alcance
Se muestra a alto nivel el diseño de la arquitectura por vistas de la aplicación Calendario. En cada una, se
presentan los diagramas correspondientes, a saber: modelo conceptual, diagrama de clases, casos de uso,
diagramas de interacción, diagrama de componentes, diagrama de paquetes, entre otros.
Ver Documento de Arquitectura de la Plataforma myUSB. El único concepto importante que cambia es el
de Calendario, que se enuncia a continuación.
1. Calendario
En un calendario se crean eventos y se observan en una tabla que lista los eventos de un mes. Esta tabla
tiene columnas: fecha, descripción, acciones (editar, eliminar). No se representará un calendario con los
días de la semana como columnas. Esta aplicación existe a nivel de estudiante solamente, no a nivel grupal.
1.4 Referencias
Se hace referencia a:
- Documento de Visión.
- Documento de Casos de Uso del sistema myUSB.
- Documento de Arquitectura de la Plataforma.
2. Representación Arquitectural
Para esta entrega del documento, se representarán las vistas utilizando los siguientes recursos:
• Vista Lógica.
Se realizarán varios esquemas a saber: Modelo Conceptual, Diagrama de Clases, Diagrama de
Paquetes, Diagrama de Componentes y Diagramas de Secuencia. Estos permitirán entender el
problema y la solución que se plantea en este Documento de Arquitectura para el caso de la
aplicación Calendario. Se utilizará notación UML y patrones en cada uno de los diagramas.
• Vista de Implementación.
Se explicará la estructura que describe el modelo de implementación de la aplicación, su
composición en capas y cada uno de sus componentes.
• Vista de Despliegue
Se muestra la relación de la aplicación a desarrollar con el hardware requerido para el despliegue
del sistema.
• Vista de Procesos.
Se habla de los procesos, en caso de que existan.
El desarrollo de @USB está orientado a la elaboración de un software de alta calidad, que sea escalable,
sostenible y que aporte facilidades y entretenimiento a los estudiantes de la Universidad Simón Bolívar.
• Portabilidad: Se desea que el sistema cuente con cualidades que lo hagan totalmente independiente
de la plataforma en la que corre ya sea amd64, IA64, x86, etc. De esta manera, el sistema se hace
accesible para una mayor cantidad de usuarios en la red social de la universidad.
• Performance: El desempeño del sistema debe ser eficiente, es nuestro objetivo que el usuario se
sienta cómodo a la hora de utilizar el sistema y que obtenga respuestas relativamente rápidas y
adecuadas a cada uno de los eventos realizados.
• Usabilidad: El sistema no sólo debe ser útil a nivel de funcionalidad sino también usable, lo que
quiere decir que el diseño debe ser orientado por y para la comodidad del usuario, de manera que
la interfaz sea intuitiva y fácil de manejar, al mismo tiempo que se fomente altamente la
interacción entre ambos. De la misma forma, el usuario debe tener la capacidad de equivocarse y
regresar a un estado seguro en el que se le permita cumplir con su objetivo original sin que se le
haga tedioso o complicado el proceso para llegar a dicho fin.
• Alta disponibilidad: Nuestro objetivo es que todas y cada una de las funcionalidades estén
disponibles las 24 horas al día, de manera tal que el usuario no se sienta limitado o presionado por
restricciones de tiempo.
a) Restricciones de contenido: debido a que el sistema está basado y propuesto para los estudiantes
de la Universidad Simón Bolívar, el mismo debe estar de acuerdo con el reglamento de la
institución, por lo que ciertos contenidos deben ser excluidos, por ejemplo, no se pueden discutir
temas de carácter ilícito o de índole sexual, ya que éstos van en contra de los principios de la
institución que está siendo representada.
En esta vista se mostrarán los actores del sistema y sus relaciones entre sí, los diagramas de casos de uso y
la lista de los Casos de Usos de la plataforma en formato breve.
Actor Descripción
Estudiante de la Universidad Simón Bolívar que tiene
Usuario Registrado
carnet asociado (usbid) y está registrado en el sistema.
El usuario se posiciona en el recuadro titulado “Agregar Nuevo Evento”. Allí introduce la fecha y
descripción del evento en los campos respectivos, y presiona “Agregar”. Esto hará que el nuevo evento se muestre
en el tope de la lista de eventos del usuario.
El usuario marca el check box de o de los eventos que desea eliminar. Luego hace click en “Eliminar”. El
sistema le pregunta si está seguro que desea eliminar los eventos, el usuario confirma y ocurre la eliminación.
Luego, el usuario podrá ver la lista de eventos, sin los que fueron eliminados.
El usuario hace click en el icono al final de la fila que tiene el evento que desea editar. Luego se permite al
usuario modificar la fecha o la descripción del mismo. A continuación, presiona “Actualizar”. Se muestra la lista de
eventos al usuario con las modificaciones hechas.
El usuario despliega un drop-down list con los meses del año y escoge uno. Realiza el mismo
procedimiento con otro menú que corresponde a los años. Luego presiona “Ver eventos”. El sistema mostrará la lista
de eventos del mes y año escogidos.
Este es un link que representa un “shortcut” del sistema que permite llevar al usuario a ver los eventos del
mes actual, sin que tenga que solicitarlo explícitamente utilizando el caso de uso anterior (4.3.5). Con sólo
seleccionar el link, se muestra la lista de eventos del mes y año en curso.
Cuando el usuario presiona este link, se muestra la lista de todos los eventos de su calendario, sin importar
el mes o año en que hayan sido agregados.
5. Vista Lógica
En esta primera aproximación a la aplicación Calendario, se propone el siguiente Modelo Conceptual para
comprender y profundizar en el dominio del problema. El mismo explica cuáles son las asociaciones pertinentes
entre los conceptos más relevantes en un nivel abstracto.
A continuación, se presentan los diagramas de secuencia a alto nivel de los casos de uso:
6. Vista de Implementación
Para el desarrollo de la aplicación Calendario se definió una estructuración en capas, con el objetivo de
lograr la independencia entre los distintos componentes. Definir un sistema en capas ofrece numerosas ventajas,
entre ellas:
Para lograr esta serie de objetivos se utilizará JSF, un framework de desarrollo basado en el patrón MVC
(Modelo Vista-Controlador) que permite un manejo adecuado para las tres capas definidas para la aplicación.
- Capa de Interfaz.
- Capa de Negocio.
- Capa de Datos y Utilidades.
6.2 Capas
A continuación se explican cada una de las capas que conforman la plataforma de @USB.
La capa de interfaz del usuario cubre muchas bases. Más que un conjunto de estándares para la ubicación
de las unidades gráficas en la pantalla, se envuelven también aspectos de la selección de la tecnología.
Estilos de Layout y Usabilidad 1. Cada layout que se presenta en las distintas secciones Web presentará un
estilo consistente y será amigable al usuario, de manera que éste pueda
interactuar fácilmente con el sistema.
2. Todas las funcionalidades son utilizadas a través de un navegador web o
browser.
Herramientas de Construcción:
Lenguajes 1. Java Server Pages (JSP) será utilizado como vehículo de presentación
primaria para las soluciones basadas en Java. Es imprescindible para la
generación de la interfaz en las páginas de contenido dinámico.
2.- Java Server Faces (JSF) será utilizado para mantener correspondencia
entre lo presentado en la interfaz y los objetos de la capa de negocio.
En la capa de negocio se deben especificar el lenguaje y las herramientas para la implementación del
sistema. Además, puntualizar patrones y componentes pre-construidos si están disponibles.
Componentes:
Lenguajes Java 1.6.
Ambiente de Desarrollo Integrado NetBeans 6.1 con conexión a SVN.
Uso de Patrones:
A tiempo de corrida la aplicación Patrón de Construcción – Este patrón debe ser utilizado por aquellos
no sabe exactamente qué tipo de recursos creados dinámicamente por la aplicación. Un ejemplo es que el
instancia debe crear. Calendario crea Eventos cuando se agrega un nuevo evento al Calendario.
El sistema requiere comunicarse de Patrón Adaptador – Se necesita comunicación entre las aplicaciones con el
manera efectiva con aplicaciones sistema principal. Mediante este patrón se logra la independencia entre
que proveen distintos servicio para ambas partes y da flexibilidad para poder agregar nuevas aplicaciones en el
el usuario futuro.
Se necesita recorrer colecciones de Patrón Iterador – Este patrón se usa cuando se busca recorrer un conjunto de
objetos para mostrar información elementos sin exponer su representación. Ejemplo: el conjunto de Eventos
sobre ellos en la interfaz. del calendario de un usuario.
Componentes de Servicio:
Enrutamiento de solicitudes desde Cada fachada de los casos de uso se encarga de llamar a los métodos
la interfaz del usuario hasta la capa adecuados de una clase para procesar la solicitud proveniente de la interfaz y
de negocios devolver la información requerida.
Componentes de Acceso a Datos
La capa de datos y utilidades es la última capa, en la que residen todos los datos que deben ser almacenados
de manera persistente.
Componentes:
Lenguajes 1. Java 1.6
2. MySQL.
Se utilizará Hibernate como framework de manejo de Datos.
Conexión Conector JDBC.
Ambiente de Desarrollo Integrado NetBeans 6.1 conexión a servidor GlassFish.
Uso de Patrones:
Cada Caso de Uso representa Patrón de Fachada – Más específicamente, el patrón de diseño de Fachada de
varios caminos de trabajo y el Base de Datos debe ser utilizado. Cada acceso a la Base de Datos debe tener
sistema debe ser altamente un método que funcione como enlace entre la capa de Negocios y la Base de
cohesivo en su implementación Datos.
para facilitar la reutilización.
7. Vista de Despliegue
A continuación se muestra un diagrama de despliegue que modela, a alto nivel, la distribución de las piezas
de software de la aplicación Calendario sobre los elementos de hardware que se usarán para ejecutarla, indicando las
asociaciones entre nodos con caminos de comunicación, que indican la tecnología requerida para que ésta se lleve a
cabo exitosamente.
En el diagrama podemos ver que para que el cliente pueda visualizar la aplicación Calendario, debe tener
en su máquina un browser, que le permitirá conectarse con el Servidor de la Plataforma myUSB, se conecta con el
Servidor Web donde se encuentra un compilado correspondiente a la aplicación Calendario. Este servidor se conecta
a través de una LAN y usando JDBC al DBServer, que contiene la base de datos del sistema, manejada con MySQL.
También
7.1 Requerimientos
• Servidor HTTP GlassFish que soporte JSP 2.0 y JSF 1.0 o superior
• Manejador de Base de Datos relacionales MySQL instalado
7.2 Limitaciones
7.2.2 Rendimiento
El sistema está diseñado para ser lo más eficiente posible y dar respuesta relativamente rápidas y adecuadas
a cada uno de los eventos. Es evidente que el rendimiento, a la vista del usuario, está limitado de las especificaciones
de su máquina, además de la capacidad de los servidores asignados al sistema para soportar alta demanda de
usuarios.
7.3 Suposiciones
8. Vista de Procesos
Debido a que el sistema para la comunidad estudiantil de la Universidad Simón Bolívar es Web y se cuenta
con un servidor GlassFish, la implementación no requiere de la creación de procesos ni hilos para la ejecución de la
plataforma.
La comunicación entre los hilos y procesos para el manejo de concurrencias y sincronía es transparente
para el sistema y será realizada por el servidor Web.
9. Vista de Datos
Estudiante
Evento (idEvento, fecha, nombre, descripción, idPerfil)
1. Estudiante:
2. Evento
Una característica a tomar en cuenta para dimensionar el sistema es que éste se encuentra limitado a los
estudiantes de la Universidad Simón Bolívar, lo que restringe su tamaño y su curva de crecimiento, pues la entrada
de estudiantes cada año es limitada.
En cuanto al rendimiento del sistema, los tiempos de carga y descarga de páginas deben mantenerse lo más
bajo posible para incentivar el uso del programa. No debe ocurrir que el tiempo para cargar la página expire.
11. Calidad
La arquitectura del software se ha diseñado para ser independiente de la plataforma en la que el sistema se
utilice. Esto le ofrece al sistema la capacidad de ser portable.
El sistema será desarrollado por capas, de manera que las capas más superficiales como la de interfaz no
afectarán a la capa lógica del sistema. Cada capa se comunicará con las capas que estén directamente por encima o
por debajo de ellas, no existirán saltos de acceso entre capas de manera tal que se mantenga una eficiente
comunicación entre ellas.
En el desarrollo de un sistema es importante crear una buena política de manejo de errores de tal manera
que se cubran la mayoría de los posibles casos de mal funcionamiento durante el uso de todas las funciones que
ofrece el sistema. Además, la información que puede ofrecer una buena política de manejo de excepciones es muy
valiosa a la hora de depurar el sistema y por lo tanto, el mantenimiento puede simplificarse a gran escala.
- Encapsulamiento: en el caso de que una excepción viaje a través de las capas del sistema y se cree alguna
otra a partir de la primera generada, se guarda toda la información del primer error a través del
encapsulamiento en el momento de la creación de la nueva excepción. De esta forma, no se pierde
información debido a la propagación de la excepción o de la sustitución a través de las capas del sistema.
- Lanzar temprano: las excepciones son lanzadas en el preciso instante en el que ocurre el error. Así se tiene
un mejor control a la hora de depurar y de buscar el origen de la falla.
- Atrapar tarde: las excepciones se atraparán cuando se tenga la mayor cantidad de información posible y
cuando se esté en la capa correspondiente del sistema que tenga las herramientas necesarias para manejar
correctamente el error.
- Obtener y desplegar la mayor cantidad de información : a la hora de generar un error, la mayor cantidad de
información debe ser desplegada de tal manera que se pueda ubicar fácilmente el origen y por lo tanto, se
depure rápidamente el sistema.
Para el manejo de errores se definirá una gran variedad de clases (excepciones) para el control de todos los
casos posibles de fallo. Para capa del sistema aplica una política distinta que permitirá que las excepciones puedan
manejar la mayor cantidad de errores.
Capa Lógica
Para la capa lógica se aplicará una política de sustitución y encapsulamiento. Se sustituye la
excepción proveniente de la capa inferior de tal manera que se cree alguna otra más específica a la causa
del error y que, por consiguiente, brinde información más específica a la capa superior.
En el caso de las aplicaciones, las clases encargadas de la comunicación con las mismas tendrán la
responsabilidad de sustituir y encapsular las excepciones consideradas para el caso. Las políticas aplicadas en este
caso serán las mismas que las aplicadas para la capa lógica.
Para representar el manejo de errores a medida que se desarrolle el sistema usaremos el siguiente tipo de
diagrama propuesto en UML 2: