Les
risques inhérents à la technologie peuvent être minimisés de trois façons :
en vérifiant le système, en le testant et en l’entretenant. Toutes les facettes
d’un système informatique (matériel, logiciel et communications) devraient être
vérifiées et testées en profondeur avant que celui-ci ne soit utilisé pour des
élections. Après un test réussi, le système devra être régulièrement entretenu
pour veiller à ce qu’il fonctionne efficacement lorsque nécessaire.
L’importance
d’une technologie influe sur la rigueur avec laquelle elle est vérifiée, testée
et entretenue. Par exemple, quand une fonction est vitale pour les élections
(comme le vote), les composantes du système (matériel, logiciel et
communications) devraient être régulièrement entretenues puis adéquatement
vérifiées et testées avant de servir pour les élections.
Vérification
du système
Pour les
systèmes cruciaux comme ceux du vote électronique, il est conseillé de confier
la vérification à une organisation indépendante. Pour tout autre système par
contre, les procédures de vérification et d’essai peuvent être élaborées et mises
en œuvre à l’interne.
Les tests
de vérification ou de qualification des systèmes peuvent comprendre les
éléments suivants :
- vérifier que toutes les
composantes du système (matériel, logiciel, communications) peuvent
fonctionner dans des conditions tant normales qu’inhabituelles, y compris
s’il y a lieu en cas de transport, d’entreposage, d’utilisation et d’entretien;
- vérifier que le matériel convient
aux conditions environnementales locales, y compris les bâtiments, les espaces
de rangement, le mobilier, les installations, l’alimentation électrique,
les variations de température et d’humidité, et le niveau de pollution;
- tester le matériel, les
logiciels et les communications pour s’assurer qu’ils respectent les normes
pertinentes et qu’ils exécutent les fonctions voulues;
- vérifier le code des
programmes;
- réviser la documentation du
système pour s’assurer qu’elle est adéquate et complète;
- tester les mesures de
sécurité du système pour s’assurer qu’elles sont en place, qu’elles sont
adéquates et qu’elles sont conformes aux normes;
- vérifier que les mesures d’assurance
qualité appropriées sont en place.
De plus,
l’audit du code des logiciels peut comprendre les mesures suivantes :
- vérifier la cohérence logique
du code;
- vérifier la modularité du
code (s’il est formé de portions pouvant être testées et évaluées
séparément);
- vérifier l’absence de code caché
destiné à effectuer des fonctions non autorisées;
- vérifier que le programme est
simple, facile à comprendre et commenté, pour en faciliter la modification
par d’autres employés;
- vérifier que le code est conçu
de façon à faciliter les essais, c’est-à-dire qu’il comprend du code
permettant des essais d’échanges de données entre modules;
- vérifier que le code est
robuste, qu’il contient des routines de traitement des erreurs (pour
éviter les pertes de données), des mécanismes pour reconnaître les erreurs,
les consigner dans un journal et en faire rapport (pour en accélérer la
détection et la correction);
- vérifier que le code
incorpore des mécanismes de sécurité qui empêchent les accès non autorisés,
les détectent et les gèrent;
- vérifier que le système est
facile à utiliser et ne nécessite pas des procédures compliquées ou
obscures qui sont difficiles à suivre;
- vérifier que le logiciel peut
facilement être installé dans un environnement de production;
- vérifier que le logiciel est facile
à entretenir, que les erreurs ou failles sont faciles à repérer et à
corriger, et qu’il est facile de valider le logiciel après installation;
- vérifier la facilité d’ajout
de nouvelles fonctions au programme.
Une fois
que toutes les composantes du système ont été vérifiées, un rapport est produit
et des mesures sont prises pour apporter les corrections nécessaires. Une fois
terminée, une autre vérification est effectuée.
Test
du système
Après la
vérification, le système doit être testé en profondeur pour s’assurer que ses
composantes fonctionnent selon les normes et qu’il réagit correctement quand
des fonctions inappropriées sont exécutées ou que des données non valides sont
introduites.
Les essais
consistent à définir un ensemble de critères, soit pour l’ensemble du système,
soit pour des composantes spécifiques (matériel, logiciel ou communications).
Lorsqu’il s’agit d’un système aussi vital que celui de vote électronique, un
programme d’essai structuré peut être créé pour veiller à ce que tous les
aspects du système soient testés rigoureusement.
Les
essais peuvent comprendre les mesures suivantes :
·
mener des tests fonctionnels
pour déterminer si les critères sont respectés;
·
évaluer qualitativement le
respect des critères;
·
mener des tests en laboratoire,
puis dans une variété de conditions réelles;
·
mener des tests sur une longue
période pour s’assurer que les systèmes peuvent fonctionner de façon uniforme;
·
mener des tests de charge aussi
proches que possible de la réalité, en soumettant au moins le volume de données
qui sera traité dans la réalité.
Les
essais visant plus spécialement le matériel peuvent comprendre les éléments
suivants :
·
s’assurer
que l’équipement résiste au stress physique lié à sa manipulation;
·
tester
le code intégré au matériel, pour s’assurer de sa cohérence et du respect
des normes voulues.
Les
essais visant les logiciels peuvent comprendre les éléments suivants :
·
vérifier
la cohérence logique et le respect des normes de conception, de développement
et de mise en œuvre;
·
mener
des tests de charge aussi proches que possible de la réalité, en soumettant au
moins le volume de données qui sera traité dans la réalité;
·
vérifier
que l’intégrité des données est respectée pendant les manipulations requises.
Entretien
du système
Une fois
les systèmes vérifiés, testés et mis en place, ils doivent être entretenus afin
qu’ils puissent fonctionner correctement et être adaptés au besoin à de
nouvelles exigences.
La
surveillance et l’entretien constants des systèmes devraient être prévus de
façon à ce que les besoins soient reconnus et que les opérations nécessaires
soient effectuées. Si des systèmes sont destinés à être utilisés pendant une
longue période, un mécanisme peut être mis en place pour tenir compte des
commentaires des utilisateurs, ce qui peut aider à déterminer les dates d’entretien
ou de modification des systèmes.
Le type
et la complexité de la technologie employée dans un système influent sur son
calendrier d’entretien. Celui-ci peut être établi par l’OGE selon les indications
du manufacturier ou du fournisseur. Dans certains cas, le contrat d’achat laisse
l’entretien à la charge du manufacturier ou du fournisseur.
Lorsque
des composantes du système (matériel, logiciel ou communications) sont
modifiées pour faire suite à un entretien ou une mise à jour, il peut être
nécessaire de vérifier et de tester de nouveau le système pour s’assurer de sa
conformité aux spécifications pertinentes.