View
104
Download
0
Category
Preview:
Citation preview
Vote électronique
Geoffrey ColletJamal El ChooleVincent TedescoJonathan VandeboschLaurent HueHicham Zerouali
Année académique 2007 -2008
Etat fédéral : Régions et communautésElections législatives
Ont lieu tous les 4 ans190 parlementaires élus
Chambre des représentants : 150Sénat : 40
Constitution d’une liste de partiNombre de candidats = Nombre à élireEcart entre candidat d’un même sexe ne peut
être >= 12 premiers candidats de sexe différent
Le vote en Belgique
Conditions pour être candidat – Sénat, Chambre Nationalité Belge Jouir des droits civils et politiques Agé de 21 ans Domicilié en Belgique Signatures de futurs électeurs pour s’inscrire
Chambre : 200 – 500Sénat : 5000
Les votes Tête de liste De préférence ou nominal Vote blanc Vote nul
Le vote en Belgique
Conditions pour être électeur Nationalité Belge Agé de 18 ans Inscrit au registre de la population d’une commune Pas d’exclusion ou suspension des droits électoraux
Certains types d’électeurs Vote par procuration Détenus à peine de prison mineure Malades mentaux, vieillards séniles et aveugles En vacances Déménagement Maison de repos Résidents à l’étranger
Le vote en Belgique
Vote électroniqueContrôles
Comité d’experts informatiques nommés par le gouvernement
Les partis peuvent nommer leurs propres expertsPrésident de bureau peut tester l’urne avant
l’ouvertureElecteur peut réinsérer sa carte à plusieurs
reprises pour visualiser son voteAvantages
Gain de temps du voteRapidité du résultat du dépouillagePlus de vote nulPossibilité de correction
Selon quelle logique est structuré un numéro national ?Le numéro national (NN) se compose de 11 chiffres répartis selon une structure bien spécifique.
6 premiers chiffres = date de naissance au format AAMMJJ
Pour les personnes qui ne sont pas en mesure de prouver par un acte leur date de naissance complète au niveau de l'administration communale et du registre national, seule l'année de naissance est prise en compte avec un ordre de suite (p.ex. 560000, 560001, 560002,…).
3 chiffres suivants = compteur journalier des naissances impair pour le sexe masculin pair pour le sexe féminin
2 derniers chiffres = check digit
Comment effectuer le contrôle d'un numéro national ? Pour contrôler qu'un numéro national est bien correct, il faut en fait
calculer le check digit de ce numéro.Le check digit est une suite de 2 chiffres. Ce nombre est le complément de 97 du modulo 97 du nombre formé :
soit par les 9 premiers chiffres du numéro national pour les personnes nées avant le 01/01/2000 (voir exemple 1)
soit par le chiffre 2 suivi des 9 premiers chiffres du numéro national pour les personnes nées après le 31/12/99 (voir exemple 2)
Le modulo 97 d'un nombre est le reste de la division du nombre par 97. Exemple 1:
NN = 72020290081 : 97 - (modulo 97 de 720202900) = 97 - 16 = 81
Exemple 2:NN = 00012556777: 97 - (modulo 97 de 2000125567) = 97 - 20 = 77
Notre projet gère un vote électronique.La liste des électeurs et la liste des candidats
sont préétablies par les autorités compétentes.Le projet doit :
Permettre la connexion de multiples clients simultanément.
Transmettre la liste des candidats à chaque client.
Assurer le vote de chaque client en l’identifiant pour assurer un vote unique.
Permettre un monitoring des élections par l’administrateur de l’application.
Transmettre le résultat final de l ’élection
Le résultat du vote est transmis au serveur après consultation et vote du client.
Le projet se découpe en 4 grandes étapes :
CONNECTER
CONSULTER
IDENTIFIER VOTER
Chaque client reçoit la liste des candidats et l’application cliente permet de naviguer parmi les listes électorales
Afin de s’assurer qu’une personne ne vote qu’une fois, le client devra transmettre son numéro de registre national en même temps que son vote.
CONNECTER
CONSULTER
VOTERIDENTIFIER
Accusé réceptio
n
Déconnexion
Echec
Diagramme fonctionnel
La liste des candidats sera un tableau ayant la structure suivante : Struct candi {
- int matricule;- char nom [80];- char prenom [80];- char parti [8];- int position;}
Le vote aura la structure suivante : Struct vote {
- int NumNat;- int matricule;}
Les électeurs seront dans un tableau ayant la structure suivante: Struct electeur{
- int NumNat; (Peut être l’indice du tableau)
- boolean A_voter;}
Thread _x
Thread _y
La communication inter thread se fera via l’utilisation de message queue.
Thread_1 : gestion des connexions entrantes, orientation vers la consultation (thread_2) ou le vote (thread_3) via une message queue spécifique.
Thread_2 : prend les demandes depuis la message queue dédiée, gestion du tableaux des candidats, place dans message queue de sortie.
Thread_3 : réception des votes depuis la message queue dédiée, contrôle du numéro national et booléen A_voter , place le vote dans une message queue dédiée avec un pointeur sur l’électeur.
Thread_4 : récupération des votes depuis la message queue dédiée, Sémaphore pour l’enregistrement du vote et validation A_voter, envoi dans la message queue de sortie.
Thread_5 : gestion de la file d’envoi, connexion sortante
Message queue
Structure en arbre.Division de l’ensemble des électeurs en sous-
groupe homogène.Pour connaître le nombre maximum d’étapes
pour la recherche :Base bNombre d’électeur nEtape maximum mb√n * b = m. Si arbre ternaire, m = 45 nombre
optimal.
Structure d’une cellule :• 1er numéro national• dernier numéro national• Pointeur sur la tableau de niveau inférieur.• Pointeur sur la structure candidat
Acteur : l’électeur, l’administrateur de l’applicationHardware : 1 serveur, 1 client, 1 station de monitoring
(administrateur) et 1 pc de test.Monitoring du thread_4 : fichier de sauvegarde permettant de
reconstituer le déroulement du vote en cas de défaillance hardware et/ou software.
Communication : protocole TCP/IP
Diagramme De Déploiement
Application cliente
Application serveur
Log file
Benchmark
Administrateur
Subversion est un logiciel libre de gestion de version
permettant la centralisation du code.Possibilité d’hébergement gratuit sur google project.Accessible via Internet en modification en https pour tout
utilisateur autorisé.Opération de base: checkout, update, commit.
Outils de collaboration: SVN
Monitoring de l’applicationMonitoring du systeme: Monit, récupération
des données systeme comme les I/O ou utilisation du processeur, et interprétation graphique en html, afin d’évaluer les performances
Monitoring de l’application, 3possibilités a évaluer:Syslog:centralisation du logging sur un
serveur, utilisation d’un standard, avantage: archivage des donnée sur un autre serveur que celui ou tourne l’applicatif.
Logging standard sur disque. Création d’un serveur ad hoc distant
réceptionnant les logs.
Profiling de l’application
Permet de mesurer le temps d’exécution de chaque fonction ou procédure.
Utilisation: Génération du log de profiling grâce au switch « -
pg » lors de la compilation avec gcc. Interprétation du log avec gprof.
L’utilisation d’un fichier makefile permet de :
• Simplifier la compilation d’un programme en regroupant les commandes dans un seul fichier•Ne recompiler que les fichiers modifié(gain de temps) automatiquement.
Recommended