Projecte Vota - Especificacions

De Wiket
Salta a la navegació Salta a la cerca
Vota3.jpeg

En aquest projecte crearem un portal per a organitzacions que requereixin votacions, típicament (però no només) partits polítics, ajuntaments, etc.

Introducció

Alguns referents:

  • https://loomio.org : sistema molt interessant per debat i presa de decisions.
  • https.//followmyvote.com : utiltizació de la tecnologia blockchain (criptomonedes) per a sistemes de votació.
  • https://nvotes.com : abans Agora Voting, software per a la votació online amb auditoria.


Requeriments

Es vol un sistema de votació que compleixi amb els següents requeriments mínims:

  • Ha de permetre crear consultes.
  • Les consultes poden ser binàries (Si/No), binàries amb abstenció, o amb un nombre finit de respostes tancades.
  • Ha de permetre convidar persones a una consulta via correu electrònic.
  • L'usuari ha de poder veure el vot que ha emès per una consulta, i si vol, canviar-ho.
  • Per seguretat, els administradors poden veure els vots totals però no poden veure qui emet cada vot, ni tan sols si tenen accés a la base de dades. Cal un sistema de protecció de la privacitat.

Requeriments optatius:

  • Implementar un sistema de delegació de vot. Els usuaris convidats a una consulta poden delegar el seu vot en una tercera persona de confiança. El vot del convidat serà, doncs, el mateix que el de la persona sobre la que es delega.


Especificacions funcionals

  1. Els usuaris administradors poden:
    1. Crear consultes (pregunta, opcions de resposta i les dates d'obertura i tancament)
    2. Convidar votants via correu electrònic
    3. Publicar o amagar els resultats de les consultes
    4. Esborrar consultes
    5. Crear agendes de votants (llistes d'emails)
  2. Els usuaris votants:
    1. Rebran una invitació via email quan un administrador els convidi a una consulta
    2. Quan accedeixin per primer cop se'ls crearà un compte de votant associat al correu electrònic
    3. Tindran l'opció de recuperar contrasenya via email
    4. Poden veure les consultes obertes pendents
    5. Poden veure un historial de les consultes a les que se'ls ha convidat
    6. Poden verificar el vot efectuat
    7. Poden modificar el seu vot sempre i quan no s'hagi tancat la consulta
  3. Extra (afegits)
    1. Es podran visualitzar estadístiques de les votacions: % de votació de cada opció, nombre de vots, etc.
    2. L'administrador podrà publicar o amagar els resultats de les votacions.
    3. Home page: llistat de les votacions públiques en curs i/o finalitzades (l'administrador decideix si la seva votació és pública o no)


Especificacions no-funcionals

El projecte es realitzarà amb PHP i llibreries PDO.


Valoració

Recordeu que part de la nota d'aquest projecte es entregar la documentació asociada a la gestió del projecte amb SCRUM.

  1. Actes de les Daily Scrum Meeting (reunions diaries per respodre a les preguntes: ¿Què he fet el dia anterior?, ¿Què faré avui?, ¿Quins problemes em puc trobar?
  2. Taula de representació del moviment dels post-its que representen les tasques i les persones
  3. Retrospectiva, explicació y valoració global del projecte. Coses que hem fet bé, coses que hem fet malament, que hem de fer per millorar.

Sprint 1

  • M6 : programació client (prohibit utilitzar jQuery)
    • En l'apartat creació de consulta s'han d'implementar les validacions següents:
      • La pregunta no pot ser buida
      • Al menys han d'existir 2 opcions de resposta
      • Cap opció de resposta pot ser buida
      • La data de obertura no pot ser buida
      • La data de tancament no pot ser buida
      • La data d'obertura ha de ser posterior al dia actual
      • La data d'obertura ha de ser anterior a la data de tancament
      • El temps de votació ha de ser com a mínim d'un dia
      • Les dates només tindrán en compte dies (no hores, ni minuts)
    • En accedir a la pàgina creació d'una consulta mitjançant un botó crearem un label i una caixa de text per la pregunta i uns labels i caixes de text per introduir la data d'obrtura i de tancament de la consulta
    • Una vegada existeixi el label i la caixa de text de la pregunta es crearà un botó per crear respostes
    • Es creará un botó per esborrar totes les respostes
    • Es creará un botó per enviar les dades al servidor
    • Cada resposta consta de:
      • Label amb la informació resposta "num de la resposta", caixa de text per introduir la resposta
    • Si qualsevol caixa de text en perdre el focus es buida s'ha de enmarcar en vermell amb un text indicatiu
    • En l'apartat de votació:
      • La pregunta ha d'apareixer directament pero les respostes han d'apareixer amb un efecte de deslliçament
  • M7 : programació servidor
    • Veure les especificacions funcionals (més amunt)
    • Per començar a treballar en equip, es recomana començar per aquestes tasques:
      • Fer login/logout i que ens mostri en tot moment quin usuari som
      • Crear consultes i votar
  • M9 : disseny d'interfície
    • Afegir un "logo" fet per vosaltres (gràfic vectorial o no).
    • Crear un "banner" dissenyat per vosaltres.
    • Afegir un efecte dinàmic a la pàgina (neu que cau, etc. Indicar si s'ha fet amb CSS3 o amb Javascript).
    • NOTA: recordeu anar desant els diferents fitxers en format original .xcf, .svg, etc). Es valorarà positivament l'ús d'un disseny responsive en aquest sprint.

Sprint 2 (11/12/2017 - 19/12/2017)

Recorda: el dia 19/12/2017 de 17h-18h Sprint Reiew, de 18:30h - 19:30h Sprint Retrospective, de 19:30h a 20:30h Sprint Planning

  • M6 : programació client (prohibit utilitzar jQuery)
    • Crear botó de esborrar resposta / Crear botó de esborrar TOTES les respostes
    • Crear botó per pujar una resposta
    • Crear botó per baixar una resposta
    • Les dates d'obertura i tancament ara han de contemplar hores
    • Un consulta como a mínim ha de durar 4 hores
    • Comentar el codi seguint el següent esquema:
      • Fitxer: Al principi de cada fitxer ha d'haver un comentari amb
        • Nom del fitxer
        • Data de creació
        • Nom del creador
        • Descripció de la funcionalitat
      • Funcions
        • Descripció de la funció
        • parámetres d'entrada (nom, tipus, si son opcionals o no)
        • valor de retorn ( si no retorna res indicar valor de retorn null )
      • Codi
        • En cas de que algun algoritme sigui una mica complex o no quedi clar que estem fent feu servir els comentaris per aclarir el codi
  • M7 : programació de servidor
    • Crear usuaris standart (només poden votar a les consultes). Crear usuaris admin que poden crear consultes i veure el resultat de les votacions
    • Crear una pàgina on es mostrin totes les consultes que te disponibles l'usuari, en clicar a una consulta accedirem a l'apartat per realitzar la votació
    • En la pàgina de visualització de consultes diferenciar les consultes en les que l'usuari ha realitzat la votació i les que no
    • Encriptació de dades
  • Extras
    • Permitir crear consultes amb respostes múltiples o respostes úniques
    • Botón extra ++


  • M9 : disseny d'interfície

Per avaluar el M9 cal que la web sigui accessible per la web per poder-la validar (p.ex passar el test de usabilitat browsers, encoratjar-vos a veure en diferents dispositius, etc.). Enviar un document de text amb les dades del grup, i la URL de la pàgina a on teniu la site.

Afegiu un usuari alumne per testejar-ho i un d'administrador:

alumne/alumne
admin/admin

1) Formalització del Disseny (25%) - Site com a conjunt. La formalització és molt destecable, codi de color, composició, tipografia i disseny d'imatges/logos.

2) Visualització (25%). . La pàgina es vegi correctament en browsers moderns (test) i grau de d'adaptació a diferents terminals.

3) Bona accessibilitat i funcionalitat (35%) en general.

Funcionalitat de la pàgina - Usabilitat . S'han escollit elements d'interfície web (botons, links, ..) adients per moure't per l'entorn-, missatges d'error es visualitzen adequadament, etc.

Per accessibilitat: - Logotip associat a la pàgina principal. - facilitat navegació. - Quan entro com administrador o usuari, canvia alguna cosa de la site que indiqui que entro amb un o altre rol? (p.ex aparegui usuari, color de fons, etc.). - Ús de calendari per afegir dates. - Les imatges amb descripció alt. - En un formulari utilitzar "focus" en els elements d'introducció de dades. - Ús adequat de text per informar de com funciona a la web (imagineu que ve un usuari nou a la vostra web... sabria de que va?). - registre d'entrada. -etc.


4) Cura en els detalls (15%) d'instal·lació. Facilitat per instal·lar projecte (README del projecte concís, explicant com instal·lar la web, automatisme : executant .sql es carrega correctament, etc.)