KOA and VoComp
Preparing the KOA Platform for Participation in the e-Voting System Competition
- Supervisor Dr. Joseph Kiniry
- Subject Area Software Engineering
- Pre-requisites Good knowledge of Java
- Co-requisites (things you must learn along the way) Knowledge of J2EE, JDBC, web services, encryption and security, JML, BON will be obtained during the course of this project
- Subject Coverage Electronic and Internet Voting Systems, Application (J2EE) and Web Services, Databases, Security
- Project Type Design and Implementation
- Hardware/Software Machine running anything but Windows
Description
The Kiezen op Afstand (KOA) system is the world's first Open Source Internet Voting System. The KOA system was designed, developed, tested, and deployed by LogicaCMG, a Dutch consulting firm, under contract with the Dutch Government. The KOA system was Open Sourced by the Dutch Government under the GPL license in July of 2004, partially due to the influence of my previous research group (the Security of Systems [SoS] Group at the University of Nijmegen). Over the past three years, researchers at UCD and elsewhere have "revived" KOA, validated the verification of the Dutch tally system, written a formal specification of the Irish PR-STV voting system, and implemented that specification.
As widely reported (e.g., in Slashdot), this year, the first International e-Voting Systems Competition "VoComp" took place, sponsored by the ACM, ES&S, and Hewlett-Packard. Four systems entered the event, and each team came home with various prizes, ranging from $10,000 to laptop computers. Next year, it is expected several more systems will enter the contest. UCD wishes to enter the KOAv2 system into the contest, primarily emphasizing the software engineering practices used in the system, particularly verification.
The purpose of this project is to prepare the existing KOA system for VoComp 2008. VoComp stipulates the format of various input and output files, types of demonstrations, required documentation, etc. Thus, the core scientific and engineering tasks of this project entail writing new subsystems for KOAv2 to fulfill VoComp 2008's specifications.
Mandatory Goals
- Gain familiarity with the BON specification language.
- Gain familiarity with JML, basic use of ESC/Java2, and the KOA system.
- Write BON specifications for the full KOA system.
- Write user documentation for the full KOA system.
- Write new subsystem(s) necessary to fulfill VoComp 2008's guidelines.
Discretionary Goals
- Analyzing the system's test code coverage, CPU and memory usage, load capabilities, etc. would all have great utility. We have professional tools for performing such audits.
- Writing formal specification in JML for critical portions of the KOA system would make the system more comprehensible to future users, developers, code reviews, etc. Such specifications would be used to test the system for correctness and security flaws using runtime assertion checking, unit test generation, and extended static checking.
Exceptional Goals
- Write, submit, and publish a paper on the results.
Sources of Information and Preparatory Reading
- The KOA web site
- The JML web site
- The ESC/Java2 web site
- Read the two recent papers available via the JML web page: "An overview of JML tools and applications" and "JML: notations and tools supporting detailed design in Java".
- Read introduction to J2EE technologies.
- Read about Open Source J2EE and web services like JBoss, Tomcat, etc.
- Download, install, and play around with the JML tool suite and ESC/Java2 to get a feel for the technology.
- Download, install, run, play around with the full KOA system and the JML annotated vote counting software available from UCD's KOA web pages