Iteración de propuesta de integración (Autenticación 2014-15)

De Wiki de EGC
Revisión del 23:28 17 nov 2014 de Juarolsal (discusión | contribuciones) (Acuerdo de nombres)
Saltar a: navegación, buscar

Asistentes

Asistió Miembro del grupo
Daniel Ayala Hernández
Daniel de los Reyes Leal
Alejandro Sánchez Medina
Juan Carlos Roldán Salvador
Fidel Mazo Delgado
Fidel Mazo Delgado

Resultado

Se han tomado las siguientes sobre la propuesta de integración de los subsistemas.

Mapa de integración

Realizar una integración "sandwich" es bajo nuestro punto de vista, la opción más viable.

En primer lugar, se ha mirado el espacio de grupos de cada uno de los subsistemas, elaborando esta tabla:

Subsistema Servidor web Base de datos
Autenticación PHP MySQL
Creación/administración de votaciones POJOs (se importarán como un jar) MySQL
Sistema de modificación de resultados Java (servidor web no especificado) MySQL
Almacenamiento de votos Spring MVC MySQL
Deliberaciones Spring MVC MySQL
Recuento Spring MVC MySQL
Creación/Administración de censos Spring MVC MySQL
Frontend de Resultados Spring MVC (antes GWT) MySQL
Visualización de resultados HTML, CSS, JavaScript -
Verificación POJOs (creemos que se importarán como un jar) -
Cabina de votación Python (servidor web no especificado) MySQL

Como podemos observar, todos los subsistemas utilizar MySQL, lo que permite usar una base de datos única realizando un acuerdo de nombres de tablas en la base de datos.

En segundo lugar, se ha observado que la UI se está haciendo por partes, siendo cada grupo el responsable de la vista que le corresponde. Por ello, debemos realizar un acuerdo de clases CSS para evitar posteriores conflictos. Así, cada grupo realizaría su subsistema sin prestar atención al CSS hasta llegada la integración. Hay casos especiales, como Visualización de resultados, cuyo trabajo depende en gran medida del CSS, en tal caso, se deberían definir clases CSS que no entraran en conflicto con las establecidas en el acuerdo.

Dado que la aplicación tendría una serie de vistas que redireccionarían a otras, se propone realizar un acuerdo de URIs, para que los nombres tengan una forma canónica en la medida de lo posible.

La última cuestión de integración a resolver es la creación de un entorno de despliegue conjunto. Para ello, se propone usar una máquina virtual en la que se desplieguen todos los servicios necesarios.

Acuerdo de nombres

Ya se han acordado los nombres de las tablas de la base de datos en el espacio de discusión de ProjEtsii, pero convendría unificarlo para evitar posteriores conflictos.

Acuerdo de clases

Para tener un único aspecto en la aplicación, esta debería compartir el CSS. Para ello, se podría acordar el uso de ciertas clases CSS y etiquetas HTML en los proyectos.

Por ejemplo, una propuesta podría ser:

   <html>
       <head>
           <meta charset="utf-8">
           <link rel="stylesheet" href="layout.css" />
           <title>Agora@US</title>
       </head>
       <body>
           <div class="wrapper">
               <div class="logo">Logo y título de la aplicación</div>
               <div class="menu">Menú de selección de opciones</div>
               <h1>Título de la página</h1>
               <p>Poner aquí el contenido.</p>
               <div class="push"><!-- Div utilizado para poner un footer fijo --></div>
           </div>
           <div class="footer">
               <p>Copyright</p>
           </div>
       </body>
   </html>

Acuerdo de URIs

En la mayoría de los grupos esto se está haciendo de forma descentralizada, lo que puede provocar conflictos entre los subsistemas. Sería conveniente acordar las URIs a usar por cada uno de los grupos para evitar conflictos y tener cierta unidad en la nomenclatura.

Creación de un entorno de despliegue conjunto

Dado que la mayoría de los subsistemas utilizan Spring MVC, y más concretamente la plantilla utilizada el año pasado en Diseño y Pruebas, se podría partir de la máquina virtual Windows que se nos proporcionó en la asignatura. Con esto, los grupos que usaran Spring MVC quedarían integrados.

Los grupos Autenticación y Visualización de resultados se instalarían en un servidor XAMPP.

El grupo Cabina de votación instalaría Python y desplegaría su servidor web.

Los grupos cuyo resultado del proyecto es una librería se importarían a los proyectos (mediante algún método como el uso de un repositorio de dependencias).

En el caso de ser necesaria la instalación de ciertos programas o librerías por alguno de los grupos, estos se instalarían durante su integración.

Antes instalación inicial, hay que resolver algunos problemas:

  • Uso de varios servidores web en una misma máquina: Conflicto de puertos
  • Problemas en las versiones utilizadas: La mayoría de los grupos no especifican la versión del lenguaje, framework y base de datos que usan
  • Cómo realizar pruebas durante la instalación de los subsistemas, para ver que no afecta a los subsistemas ya instalados
  • Comunicar los subsistemas una vez instalados en una misma máquina virtual