Download arquitectura de la aplicación
Document related concepts
no text concepts found
Transcript
Título ARQUITECTUA DE M2M Proyecto Monkey to Monkey ( M2M ) Equipo Proyectos Informáticos Código PLAN_M2M_2012_04_01 Fecha 19/04/2012 Autores MIGUEL ÁLVAREZ Y CLARA HERRERO Documento inicial Resumen Este documento presenta una definición de la arquitectura para la Versión Estado aplicación Monkey to Monkey ( M2M ) 1.0 INDICE 1 INTRODUCCIÓN ..................................................................................................................... 3 2 TECNOLOGÍAS ........................................................................................................................ 3 3 ARQUITECTURA POR CAPAS .................................................................................................. 3 3.1 Decisiones sobre la arquitectura 5 4 ESTÁNDARES.......................................................................................................................... 8 5 LENGUAJES ............................................................................................................................ 8 6 DISEÑO................................................................................................................................... 9 7 DIAGRAMAS UML ................................................................................................................ 12 8 BIBLIOGRAFÍA ...................................................................................................................... 12 ARQUITECTUA DE M2M AUTORES: MIGUEL ÁLVAREZ Y CLARA HERRERO 1 INTRODUCCIÓN La aplicación m2m tiene una función clara de difusión entre una amplia comunidad de usuarios, de distintos países y distintos niveles técnicos. Esta aplicación será utilizada a través de los navegadores de los propios usuarios. Por esta razón se va a realizar bajo un modelo que libere al usuario de posibles instalaciones en su equipo, y además tenga en cuenta que pueda ser internacionalizable, así como fácilmente escalable en lo que a interfaz de usuario se refiere. 2 TECNOLOGÍAS Se va a desarrollar sobre la plataforma J2EE (Java 2 Enterprise Edition), que nos proporciona las herramientas que consideramos adecuadas para una aplicación web. El controlador se implementa mediante el framework Struts 1.2.9 de Apache. Proporciona una implementación del patrón MVC basada en un único controlador (ActionServlet) que dirige las peticiones del usuario a clases de acción específicas (Action) mediante un archivo configurable (struts-config.xml) que sería nuestro “mapa” de correspondencias entre peticiones y acciones. De esta manera vamos a delegar la gestión de las peticiones a este controlador. En la decisión de uso de este framework también incurre la posibilidad de internacionalización de mensajes. La lógica de negocio de la aplicación se presenta en clases Java simples (también denominados POJO o Plan Java Objects). Para el acceso a la base de datos se utiliza JDBC, además se ha decidido utilizar persistencia, más concretamente Hibernate. La capa de presentación se implementa mediante tecnología JSP (Java Server Pages) que permite a los programadores generar contenido dinámico para web mezclando HTML estático y el generado de los servlets. Además se posibilita la adaptación a formatos para distintos dispositivos mediante el uso de hojas de estilo CSS. 3 ARQUITECTURA POR CAPAS La aplicación se construye siguiendo una arquitectura basada en el modelo Model View Controller (MVC). Este patrón de diseño establece que los elementos deben situarse en diferentes niveles según su naturaleza (ver figura). 3 ARQUITECTUA DE M2M AUTORES: MIGUEL ÁLVAREZ Y CLARA HERRERO Nivel de modelo (Model). En este nivel se sitúan todos los elementos relacionados con las reglas que rigen el comportamiento. Se divide en dos capas: o Capa de datos: contiene la descripción de los almacenes de datos, así como la lógica que permite el acceso a los mismos para lectura o escritura. o Capa de lógica de negocio: Codifica las reglas de funcionamiento. Nivel de controlador (Controller). Interacción entre la aplicación y el usuario. Nivel de presentación (View). Aspectos de interfaz de usuario de la aplicación, tanto en lo referente a diseño de páginas como las funcionalidades que ofrecen. Esta ha sido una definición general que podríamos aplicar a otras aplicaciones. Particularmente para m2m vamos a tener: - Componente para la gestión del modelo de datos: Paquete DAO - Componente de lógica de negocio: Paquete BL - Componente de controlador: Paquete ACTION - Componente a nivel de presentación: Paquete WEB 4 ARQUITECTUA DE M2M AUTORES: MIGUEL ÁLVAREZ Y CLARA HERRERO 3.1 Decisiones sobre la arquitectura La arquitectura MVC tiene la distribución de componentes que muestra la figura. En primera instancia, se había pensado en una estructura de paquetes que correspondiera con los objetos lógicos de la aplicación (por ejemplo, un paquete mensajes que incluyera la acción, la lógica de negocio, lógica de acceso a datos y POJO). Sin embargo, basándonos en la arquitectura MVC vamos a subdividir cuatro componentes, que son los correspondientes a las capas anteriormente descritas. Si estos a su vez los dividimos en cada ámbito (por ejemplo mensajes, alertas, usuarios…) tendremos prácticamente un paquete por clase. Por lo tanto, no vamos a hacer esta subdivisión. 5 + Ventajas - Desventajas Al obligar a dividir (escalabilidad) facilita la posterior reutilización del código y también Mayor número de clases y por lo tanto de intersecciones la modificación de alguno de los componentes sin perjuicio para el resto Facilita añadir filtros Dificultad para entender el modelo de arquitectura Especialización del código según funciones de la capa, podemos asignar programadores Las posteriores correcciones de bugs pueden resultar según su mayor conocimiento en la capa en cuestión complicadas a la hora de identificar la raíz del problema Simplifica identificación de resultados esperados, lo que facilita la integración con el paquete Junit y creación de Test Unitarios ARQUITECTUA DE M2M AUTORES: MIGUEL ÁLVAREZ Y CLARA HERRERO Para resolver el problema de complejidad, hemos decidido que detallaramos en esta documentación, las clases pertenecientes a cada ámbito (por ejemplo Mensajes, Usuarios, Anuncios…) y en cada componente vamos a tener una clase al menos de este tipo, teniendo por lo tanto n componentes x m al menos. Esto que parece complicado lo vamos a ver de forma sencilla con un ejemplo (nota: es un ejemplo, no corresponde a todo el esquema de la aplicación): Componentes: ACTION, BL, DAO, VISTA Ámbitos: Mensajes, Usuarios Clase resultantes: - ACTION.mensajes - BL.mensajes - DAO.mensajes - VISTA.mensajes Podemos ver estas cuatro clases como un único ente, que se encarga de las operaciones relacionadas con los mensajes. Clases del ámbito usuario. - ACTION.usuarios - BL.usuarios - DAO.usuarios - VISTA.usuarios Dentro del ACTION y relacionadas con usuarios podemos tener, por ejemplo, las clases RegistroAction, LoginAction y ManagerAction. Si a lo largo del desarrollo aparece la necesidad de creación de alguna clase nueva que no se ha descrito en este documento, se evaluará si fuera necesario otro paquete o si la incluimos en alguno de los que ya tenemos, además la incluiremos en los diagramas ya existentes. Otro caso que se puede dar, es que en la acción de un ámbito utilicemos algún método no definido en su BL, pero que se ha desarrollado para otro ámbito y nos sea de utilidad. No vamos a reescribir el método, sino que instanciaremos la clase BL en la acción y utilizaremos el 7 ARQUITECTUA DE M2M AUTORES: MIGUEL ÁLVAREZ Y CLARA HERRERO método oportuno. Por ejemplo, si tenemos MensajesAction y queremos utilizar un método de AnunciosBL. - Restricciones: No saltarse ninguna capa, es decir, aunque parezca obvio hacer una consulta desde el Action para conseguir alguna información sencilla, habrá que hacer un método por capa. Es decir, llamaremos al método del BL que llamara al método del DAO que se encargará de hacer la consulta. 4 ESTÁNDARES - Estándares Java: Cumplir con los estándares de nomenclatura. Si queda alguna duda, consultar el siguiente enlace http://java.sun.com/docs/codeconv/CodeConventions.pdf. - Versiones: Habrá una versión por cada prototipo documentado en el calendario de prototipos (Calendario 1 -> v.1, Calendario 2 –> v.2) 5 LENGUAJES Java. Orientado a Objetos, utilizado en la aplicación. CSS. Para la definición de las hojas de estilos utilizadas en los fuentes HTML. HTML. Para la realización de maquetas y la estructura de las páginas web diseñadas. JavaScript. Como lenguaje interpretado dentro de las páginas web. XML. Para la definición de los ficheros de configuración y tareas Ant. HQL. Para consultas a la base de datos. 8 6 DISEÑO En base al análisis de requisitos y las decisiones sobre la arquitectura tenemos las siguientes clases java y páginas jsp: - Relacionados con ámbitos COMPONENTE > ACTION BL DAO VISTA BaseDao Cabecera.jspf ˅ AMBITO BASE BaseAction BaseForm Pie.jspf Error.jspf menuSup.jspf menuLateral.jspf content.jspf USUARIOS RegistroAction RegistroForm UsuariosBL UsuariosDAO Registro.jsp LoginAction LoginForm Login.jsp AdminUsuariosAction AdminUsuariosForm adminUsuarios.jsp modificarDatosUsuario.jsp PREFERENCIAS PreferenciasAction PreferenciasForm PreferenciasBL PreferenciasDAO verPreferencias.jsp anyadirPreferencia.jsp HORARIOS HorariosAction HorariosForm HorariosBL HorariosDAO verHorarios.jsp modificarHorarios.jsp CONOCIMIENTOS AdminCategoriasAction ConocimientosAction AdminCategoriasFor m CategoriasBL CategoriasDAO adminCategorías.jsp ConocimientosBL ConocimientosDAO adminConocimientos.jsp ConocimientosForm verModificarMisConocimientos.jsp SUGERENCIAS SugerenciasAction SugerenciasForm SugerenciasBL SugerenciasDAO verSugerencias.jsp CONTACTOS ContactosAction ContactosForm ContactosBL ContactosDAO verContactos.jsp ALERTAS AlertasAction AlertasForm AlertasBL AlertasDAO verModificarAlertasGestion.jsp verInstanciasDeAlertas.jsp ANUNCIOS AnunciosAction AnunciosForm AnunciosBL AnunciosDAO verAnuncios.jsp verAnunciosAdmin.jsp INTERCAMBIOS IntercambiosAction IntercambiosForm IntercambiosBL IntercambiosDAO verIntercambios.jsp MENSAJES MensajesAction MensajesForm MensajesBL MensajesDAO verMensajes.jsp enviarMensaje.jsp TUTORIALES TutorialesAction TutorialesForm TutorialesBL TutorialesDAO buscarTutoriales.jsp verTutorial.jsp verMisTutoriales.jsp insertarTutorial.jsp EVALUACIONES EvaluacionesAction EvaluacionesForm EvaluacionBL EvaluacionDAO anyadirEvaluacion.jsp detalleEvaluacion.jsp - Generales COMPONENTE MODELO PAQUETES CLASES Usuario Preferencias Horario Conocimiento Sugerencia Contacto Alerta AlertaGestion Anuncio Intercambio Mensaje Tutorial Evaluacion UTILS Constantes Transformaciones ARQUITECTUA DE M2M AUTORES: MIGUEL ÁLVAREZ Y CLARA HERRERO 7 DIAGRAMAS UML Diagramas de clases: Por la extensión de los diagramas, se han generado mediante Netbeans 6.5 con el plugin UML y se ha generado un reporte visible mediante cualquier navegador que se adjunta comprimido a continuación. Descomprimir y ejecutar “index.html” Report.rar 8 BIBLIOGRAFÍA Como documentar una arquitectura http://www.dosideas.com/noticias/metodologias/298-como-documentar-la-arquitectura-de-software.html Explicación de las clases de struts junto con algunos diagramas UML que merece la pena ver http://rollerjm.free.fr/pro/Struts11.html Curso sobre Jakarta Struts ftp://jano.unicauca.edu.co/Maestria/cursos/AplicacionesInternet/docs/struts.pdf Implementación Creación de un formulario http://netbeans.org/kb/docs/web/quickstart-webapps-struts.html Tutorial for struts internationalization ( I18N ) : http://www.allapplabs.com/struts/struts_internationalization.htm Securing Struts Applications http://www.devarticles.com/c/a/Java/Securing-Struts-Applications/ http://wiki.netbeans.org/ReverseEngineering http://wiki.netbeans.org/HibernateAndWebApp#Reverse_Engineering_.28NetBeans_6.5.29 http://docs.jboss.org/tools/2.1.0.Beta1/hibernatetools/html/reverseengineering.html 12 ARQUITECTUA DE M2M AUTORES: MIGUEL ÁLVAREZ Y CLARA HERRERO Módulos para el manejo de tablas y paginación http://datatables.net/extras/tabletools/ http://www.elwebmaster.com/general/mootols-plugins-para-manejar-y-dar-estilo-a-tus-tablas-html http://www.elwebmaster.com/articulos/15-plugins-jquery-para-manejar-tablas 13