Diferencia entre revisiones de «Almacenamiento»

De Wiki de EGC
Saltar a: navegación, buscar
(Miembros)
(Actas de reunión)
 
(No se muestran 93 ediciones intermedias de 2 usuarios)
Línea 6: Línea 6:
 
*[[Usuario:chrgan|Christopher Ganfornina]] '''<font color="#000000">Ingeniero Software</font>'''
 
*[[Usuario:chrgan|Christopher Ganfornina]] '''<font color="#000000">Ingeniero Software</font>'''
 
== Definición ==
 
== Definición ==
Subsistema de AGORA@US cuya finalidad es el almacenamiento seguro de los votos cifrados.
+
En este proyecto desarrollaremos el subsistema "Almacenamiento de votos" de '''AgoraUs'''. Como su nombre indica, Almacenamiento será el encargado de almacenar todos los datos relacionados con los votos del sistema. Implementaremos una '''API Rest''' para la conexión con el resto de subsitemas.
 +
 
 +
Por otra parte, debido a la falta de asignación del subsistema de '''autentificación''', y a la fuerte dependencia con nuestro subsitema, hemos implementado dicho subsistema junto al nuestro, utilizando el protocolo '''OAuth2'''.
  
 
== Documentación de gestión ==
 
== Documentación de gestión ==
 +
=== Gestión de tareas ===
 +
 +
Para realizar la asignación y seguimiento de tareas, hemos utilizado la herramienta '''Google Drive'''. El coordinador del proyecto ha sido el principal encargado de realizar el reparto de forma equitativa entre todos los miembros del equipo de trabajo.
 +
 
=== Gestión de la documentación ===
 
=== Gestión de la documentación ===
Se usará un documento privado GoogleDocs para realizar la documentación del trabajo https://docs.google.com/document/d/1vro3X971EDEwB6DNpwyN2LayRbwn41KSQzjBz71sn58/edit
+
Para la tarea de gestión de la documentación, hemos utilizado la herramienta de '''Google Drive'''. Mediante una carpeta compartida con todos los miembros del equipo, hemos podido gestionar todo lo relativo a documentación del proyecto, y a su vez llevar un control de las versiones de dichos documentos.
  
 
=== Gestión de la comunicación ===
 
=== Gestión de la comunicación ===
Toda la comunicación se realizará a través de la aplicación Whatsapp, ya que el grupo es reducido y así la comunicación será mas directa
 
  
=== Gestión de tareas ===
+
Hemos considerado varios canales de comunicación, que hemos ido utilizando dependiendo de la urgencia o necesidad de la misma:
La asignación y seguimiento de las tareas se llevará a cabo mediante un proyecto de Projetsii. El equipo tiene experiencia con él y así podremos controlar el número de horas realizadas por cada miembro del grupo
+
 
 +
* '''Whatsapp''': Mediante un grupo con todos los miembros del equipo, hemos utilizado esta aplicación para una comunicación más rápida y directa, exponiendo cualquier consideración oportuna sin necesidad de esperar a reuniones presenciales.
 +
 
 +
*'''Telegram''': Esta herramienta nos ha sido de gran ayuda a la hora de organización conjunta entre los distintos subsistemas de AgoraUS.
 +
 
 +
*'''Reuniones presenciales''': Mediante reuniones presenciales, hemos tratado conjuntamente temas de gran importancia en el desarrollo del proyecto, los cuales hubiesen sido más complejos de tratar con los medios anteriores.
 +
 
 +
*'''Skype''':Frente a dificultades horarias o de localización puntuales, como alternativa a las reuniones presenciales, consideramos usar skype, para tratar temas conjuntamente.
 +
 
 +
=== Gestion de código ===
 +
==== Herramientas ====
 +
 
 +
Para realizar la gestión del código fuente nos hemos basado en el sistema de control de versiones '''Git''', apoyándonos para alojar el código en un repositorio en '''GitHub'''. Por consiguiente, para gestionar dicho repositorio hemos optado por utilizar unas de las mejores herramientas para esta tarea, '''SourceTree'''.
 +
 
 +
Enlace a nuestro repositorio en '''GitHub''':
 +
 
 +
*https://github.com/EGC2016CAJA/G24
 +
 
 +
==== Descripción ====
  
=== Código ===
+
Una vez concretadas todas las tecnologías y herramientas utilizadas para realizar la gestión de nuestro código, nos centramos en el proceso a seguir. Hemos optado por gestionar nuestro proyecto utilizando tres ramas en nuestro repositorio: '''Master''', '''Dev''' y '''Stage'''.
==== Herramienta ====
 
Para la gestión del código, usaremos un repositorio Git alojado en Github:
 
https://github.com/FraVieMor/EGC-Almacenamiento-de-votos-18-
 
  
==== Gestión de código====
+
En la rama '''master''', alojaremos nuestro código, el cual estará totalmente depurado, testeado y funcionando sin errores. Para realizar la tarea de desarrollo, nos basaremos principalmente en la rama '''dev''', donde iremos modificando parte de nuestro código o añadiendo alguna funcionalidad más a éste. Una vez que hemos concluido con una parte del desarrollo y queremos incluirlo en nuestra última versión estable (versión más reciente de nuestra rama '''master'''), volcaremos dicho código alojado en '''dev''', hacia la rama '''stage''', donde se realizarán las pruebas correspondientes y un proceso de QA para garantizar que este nuevo código está listo para pasar a formar parte de nuestra versión estable. Tras este proceso podemos encontrarnos en dos situaciones:
Tendremos una rama ''master'' que será la que almacene las versiones estables.
 
  
Posteriormente tenemos una rama ''dev'' que será en la que se desarrollará.
+
*'''Pasa correctamente las pruebas y el proceso de QA es exitoso:'''
 +
Si la nueva versión de nuestro software cumple con todos los requisitos, podremos fusionar con la rama '''master''', y por tanto tendremos una nueva versión estable de nuestro proyecto.
  
Se añadirán ramas cuando se vaya a realizar una nueva funcionalidad, la cual se unirá a la rama ''dev''.
+
*'''Se han encontrado errores o no se considera adecuado:'''
 +
Si, por el contrario, hemos encontrado algún error, bug, o cualquier aspecto que mejorar o corregir, se abrirá una '''incidencia''', haciendo referencia a este aspecto, y volveremos a la rama '''dev''' para corregirlo/s.
 +
Una vez se ha corregido todo lo referente al paso previo, se volverá a la rama '''stage''', y se repetirá el mismo proceso hasta que se consigan depurar los errores.
  
Cuando el proyecto este listo para desplegar, se realizara un merge desde la rama ''dev'' a la rama ''master''.
+
==== Diagrama de gestión del código ====
  
Cuando se activa una incidencia, debemos realizar un branch desde la rama ''dev'' a una rama ''patch-IdIncidencia'' en la cual se trabajará en la resolución de la incidencia.
+
El siguiente diagrama describe el proceso de gestión del código seguido para desarrollar nuestro proyecto, descrito de forma textual en el apartado anterior:
  
Una vez arreglada la incidencia se hará un merge a la rama ''dev'', cerrando así la incidencia.
+
[[Archivo:Diagrama_de_gestión_código.PNG|600px|center|Diagrama gestión del código]]
  
=== Incidencias ===
+
=== Gestión de incidencias ===
 
==== Herramienta ====
 
==== Herramienta ====
Usaremos la herramienta que nos ofrece Github para el control de las incidencias.
+
Usaremos la extensión de Chrome '''ZenHub''' para la gestión de incidencias.Para más información del funcionamiento de '''ZenHub''':
Puede emitir sus incidencias en nuestro repositorio github:
+
 
https://github.com/FraVieMor/EGC-Almacenamiento-de-votos-18-/issues
+
*https://www.zenhub.com/product
 +
 
 +
==== Descripción ====
 +
El uso de la herramienta '''ZenHub''' nos permite poder trabajar sobre un conjunto de paneles de trabajo de una forma dinámica, de tal forma que podremos ir cambiando las incidencias de unos paneles a otros según la situación en la que se encuentren, y así poder trabajar de una forma más cómoda y eficiente. Para cambiar una incidencia de estado, basta con arrastrarla del panel en el que se encuentra al panel correspondiente.
  
==== Gestión de incidencias ====
+
Para gestionar las incidencias, trabajamos sobre 6 paneles de trabajo:
Cuando se activa una incidencia, debemos asignar un responsable de la incidencia, que variará en función de los técnicos ya asignados a distintas tareas.
+
* '''New Issues''': En este panel se encontrarán todas las incidencias inicialmente. Aquí se crearán y se asignarán a un miembro del equipo.
 +
*'''Open''': Una vez se ha asignado una incidencia, y se ha creado correctamente, se cambia a '''Open'''.
 +
*'''In progress''': Aquí podremos encontrar todas las incidencias que se encuentren en fase de desarrollo, y sobre las cuales se esté trabajando.
 +
*'''Pending QA''': Como dijimos anteriormente, una vez se ha desarrollado parte del proyecto, éste se somete a un proceso de QA previo a la fusión con la rama '''master'''. Todas las incidencias que se encuentren en este estado la encontraremos en este panel.
 +
*'''Resolved''' y '''Closed''': Por último encontramos estos dos, en los cuales se encontrarán las incidencias ya solucionadas o que han conseguido pasar con éxito el proceso de QA, y las incidencias ya finalizadas y cerradas respectivamente.
  
Una vez que un técnico tiene asignada una incidencia, debe trabajar en una rama patch-(IdIncidencia) para resolver el error, y finalmente realizar un branch a dev.
+
La siguiente imagen muestra de forma gráfica como hemos realizado la gestión de incidencias, anteriormente descrita:
  
Cuando el error está solucionado se notifica en la incidencia y se cambia el estado a close
+
[[Archivo:GestionIncidencias.PNG|1000px|center|Vista general de paneles de trabajo en GitHub]]
  
=== Gestión de la construcción===
+
*'''Nota:''' Para casos especiales, como incidencias que no afecten directamente al código, o que no influyan fuertemente a este, no será estrictamente necesario el paso por el panel '''Pending QA''', ya que este proceso se podría gestionar desde la fase anterior.
Para la gestión de la construcción usaremos el software PHING, el cual se usa para proyectos PHP
 
  
 
== Documentación técnica ==
 
== Documentación técnica ==
  
* Enlace de la página que aloja el sistema de almacenamiento: http://storage-egc1516.rhcloud.com/
+
=== Sistema desplegado ===
  
=== Subsistemas relacionados ===
+
El siguiente enlace le dirigirá a la documentación de la API del sistema ya desplegado:
  
* Recuento: se deberá proporcionar la lista de todos los votos de una determinada votación.
+
*http://api-almacenamiento.jelastic.cloudhosted.es/public/api/documentation
* Cabina de votación: recibimos del subsistema el voto cifrado para guardarlo en la base de datos.
 
* Autenticación: usamos el sistema de autenticación de este módulo para dar acceso a un admin a estadísticas de las votaciones.
 
  
=== Documentación de integración - API ===
+
=== Subsistemas relacionados ===
  
{| border="1" style="border-collapse:collapse" class="wikitable sortable"
+
* '''Recuento''': A este subsistema proporcionamos todos los datos necesarios para que puedan realizar sus estadísticas y su recuento de votos.
|-
+
* '''Cabina de votación''': A raíz de cabina de votación, recibimos los datos de los votos emitidos, que posteriormente almacenará nuestro subsistema.
! Método (URL)
+
* '''Autentificación''': Este módulo nos permite darle seguridad a la plataforma de voto. Como citamos en la descripción del proyecto, finalmente hemos optado por desarrollar este subsistema incluido en el nuestro, utilizando para ello el protocolo OAuth2.
! Tipo
 
! Descripción
 
! Parámetros
 
! Respuesta
 
! Ejemplo
 
|-
 
| vote (http://storage-egc1516.rhcloud.com/vote.php)
 
| POST
 
| Permite almacenar un voto para una determinada votación
 
|
 
*vote: voto codificado
 
*votation_id: id de la votación
 
| Json con un mensaje de respuesta que indica si la operación se ha resuelto correctamente. (el mensaje será 1 si todo salió bien y 0 en caso contrario)
 
| http://storage-egc1516.rhcloud.com/vote.php Y con RESTClient ponemos: {"vote":"VotoPrueba","votation_id":"2"}
 
|-
 
| get_votes (http://storage-egc1516.rhcloud.com/get_votes.php)
 
| GET
 
| Devuelve la lista de votos de una determinada votación
 
|
 
* votation_id: id de la votación.
 
| Json con la lista de votos y un campo "msg" que indica si la operación se realizó correctamente.
 
| http://storage-egc1516.rhcloud.com/get_votes.php?votation_id=1
 
|-
 
| get_votations(http://storage-egc1516.rhcloud.com/get_votations.php)
 
| GET
 
| Devuelve los ID de todas las votaciones con al menos un voto.
 
|
 
* Sin parámetros
 
| Json con la lista de IDs de las votaciones y un campo "msg" que indica si la operación se realizó correctamente. (el mensaje será 1 si todo salió bien y 0 en caso contrario)
 
| http://storage-egc1516.rhcloud.com/get_votations.php
 
|-
 
|}
 
  
 
== Actas de reunión ==
 
== Actas de reunión ==
  
*[[12/11/2015 (Grupo 18): Primer taller de integración]]
+
*[[Medio:Acta_Reunion_03_10_2016.pdf]]
*[[18/11/2015 (Grupo 18): Reunión y taller de trabajo]]
+
*[[Medio:Acta_Reunion_10_01_2017.pdf]]
*[[19/11/2015 (Grupo 18): Segundo taller de integración]]
+
*[[Medio:Acta_Reunion_28_01_2017.pdf]]
*[[03/12/2015 (Grupo 18): Tercer taller de integración]]
+
*[[Medio:Acta_Reunion_29_01_2017.pdf]]
*[[10/12/2015 (Grupo 18): Cuarto taller de integración]]
 
*[[17/12/2015 (Grupo 18): Taller de trabajo en clase]]
 
*[[21/12/2015 (Grupo 18): Segunda reunión y taller de trabajo]]
 
 
 
== Talleres ==
 
 
 
*[[Taller 1 (Grupo 18): Planificación de la gestión del proyecto]]
 
*[[Taller 2 (Grupo 18): Definición de los cambios a realizar]]
 

Revisión actual del 19:48 1 feb 2017

Miembros

Definición

En este proyecto desarrollaremos el subsistema "Almacenamiento de votos" de AgoraUs. Como su nombre indica, Almacenamiento será el encargado de almacenar todos los datos relacionados con los votos del sistema. Implementaremos una API Rest para la conexión con el resto de subsitemas.

Por otra parte, debido a la falta de asignación del subsistema de autentificación, y a la fuerte dependencia con nuestro subsitema, hemos implementado dicho subsistema junto al nuestro, utilizando el protocolo OAuth2.

Documentación de gestión

Gestión de tareas

Para realizar la asignación y seguimiento de tareas, hemos utilizado la herramienta Google Drive. El coordinador del proyecto ha sido el principal encargado de realizar el reparto de forma equitativa entre todos los miembros del equipo de trabajo.

Gestión de la documentación

Para la tarea de gestión de la documentación, hemos utilizado la herramienta de Google Drive. Mediante una carpeta compartida con todos los miembros del equipo, hemos podido gestionar todo lo relativo a documentación del proyecto, y a su vez llevar un control de las versiones de dichos documentos.

Gestión de la comunicación

Hemos considerado varios canales de comunicación, que hemos ido utilizando dependiendo de la urgencia o necesidad de la misma:

  • Whatsapp: Mediante un grupo con todos los miembros del equipo, hemos utilizado esta aplicación para una comunicación más rápida y directa, exponiendo cualquier consideración oportuna sin necesidad de esperar a reuniones presenciales.
  • Telegram: Esta herramienta nos ha sido de gran ayuda a la hora de organización conjunta entre los distintos subsistemas de AgoraUS.
  • Reuniones presenciales: Mediante reuniones presenciales, hemos tratado conjuntamente temas de gran importancia en el desarrollo del proyecto, los cuales hubiesen sido más complejos de tratar con los medios anteriores.
  • Skype:Frente a dificultades horarias o de localización puntuales, como alternativa a las reuniones presenciales, consideramos usar skype, para tratar temas conjuntamente.

Gestion de código

Herramientas

Para realizar la gestión del código fuente nos hemos basado en el sistema de control de versiones Git, apoyándonos para alojar el código en un repositorio en GitHub. Por consiguiente, para gestionar dicho repositorio hemos optado por utilizar unas de las mejores herramientas para esta tarea, SourceTree.

Enlace a nuestro repositorio en GitHub:

Descripción

Una vez concretadas todas las tecnologías y herramientas utilizadas para realizar la gestión de nuestro código, nos centramos en el proceso a seguir. Hemos optado por gestionar nuestro proyecto utilizando tres ramas en nuestro repositorio: Master, Dev y Stage.

En la rama master, alojaremos nuestro código, el cual estará totalmente depurado, testeado y funcionando sin errores. Para realizar la tarea de desarrollo, nos basaremos principalmente en la rama dev, donde iremos modificando parte de nuestro código o añadiendo alguna funcionalidad más a éste. Una vez que hemos concluido con una parte del desarrollo y queremos incluirlo en nuestra última versión estable (versión más reciente de nuestra rama master), volcaremos dicho código alojado en dev, hacia la rama stage, donde se realizarán las pruebas correspondientes y un proceso de QA para garantizar que este nuevo código está listo para pasar a formar parte de nuestra versión estable. Tras este proceso podemos encontrarnos en dos situaciones:

  • Pasa correctamente las pruebas y el proceso de QA es exitoso:

Si la nueva versión de nuestro software cumple con todos los requisitos, podremos fusionar con la rama master, y por tanto tendremos una nueva versión estable de nuestro proyecto.

  • Se han encontrado errores o no se considera adecuado:

Si, por el contrario, hemos encontrado algún error, bug, o cualquier aspecto que mejorar o corregir, se abrirá una incidencia, haciendo referencia a este aspecto, y volveremos a la rama dev para corregirlo/s. Una vez se ha corregido todo lo referente al paso previo, se volverá a la rama stage, y se repetirá el mismo proceso hasta que se consigan depurar los errores.

Diagrama de gestión del código

El siguiente diagrama describe el proceso de gestión del código seguido para desarrollar nuestro proyecto, descrito de forma textual en el apartado anterior:

Diagrama gestión del código

Gestión de incidencias

Herramienta

Usaremos la extensión de Chrome ZenHub para la gestión de incidencias.Para más información del funcionamiento de ZenHub:

Descripción

El uso de la herramienta ZenHub nos permite poder trabajar sobre un conjunto de paneles de trabajo de una forma dinámica, de tal forma que podremos ir cambiando las incidencias de unos paneles a otros según la situación en la que se encuentren, y así poder trabajar de una forma más cómoda y eficiente. Para cambiar una incidencia de estado, basta con arrastrarla del panel en el que se encuentra al panel correspondiente.

Para gestionar las incidencias, trabajamos sobre 6 paneles de trabajo:

  • New Issues: En este panel se encontrarán todas las incidencias inicialmente. Aquí se crearán y se asignarán a un miembro del equipo.
  • Open: Una vez se ha asignado una incidencia, y se ha creado correctamente, se cambia a Open.
  • In progress: Aquí podremos encontrar todas las incidencias que se encuentren en fase de desarrollo, y sobre las cuales se esté trabajando.
  • Pending QA: Como dijimos anteriormente, una vez se ha desarrollado parte del proyecto, éste se somete a un proceso de QA previo a la fusión con la rama master. Todas las incidencias que se encuentren en este estado la encontraremos en este panel.
  • Resolved y Closed: Por último encontramos estos dos, en los cuales se encontrarán las incidencias ya solucionadas o que han conseguido pasar con éxito el proceso de QA, y las incidencias ya finalizadas y cerradas respectivamente.

La siguiente imagen muestra de forma gráfica como hemos realizado la gestión de incidencias, anteriormente descrita:

Vista general de paneles de trabajo en GitHub
  • Nota: Para casos especiales, como incidencias que no afecten directamente al código, o que no influyan fuertemente a este, no será estrictamente necesario el paso por el panel Pending QA, ya que este proceso se podría gestionar desde la fase anterior.

Documentación técnica

Sistema desplegado

El siguiente enlace le dirigirá a la documentación de la API del sistema ya desplegado:

Subsistemas relacionados

  • Recuento: A este subsistema proporcionamos todos los datos necesarios para que puedan realizar sus estadísticas y su recuento de votos.
  • Cabina de votación: A raíz de cabina de votación, recibimos los datos de los votos emitidos, que posteriormente almacenará nuestro subsistema.
  • Autentificación: Este módulo nos permite darle seguridad a la plataforma de voto. Como citamos en la descripción del proyecto, finalmente hemos optado por desarrollar este subsistema incluido en el nuestro, utilizando para ello el protocolo OAuth2.

Actas de reunión