Iteración de propuesta de integración (Autenticación 2014-15)
Contenido
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 ha hecho 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