Specifying the Danish Voting System

Olavur Kjolbro is now working on this project for MSc thesis at IT University of Copenhagen

Write a formal specification of the Danish Voting System using formal BON and JML. Show the refinement from Danish electoral law through BON and to JML. Outline the Java architecture which would be needed to implement the system. Generate unit tests from the JML specification and write unit tests for the BON scenarios. Compare and contrast with existing specifications of the Irish and Dutch voting systems. A full implementation of the specification is *not* expected. Use of the Mobius PVE is required. Ideally, you would help to identify a standard methodology for formal specification of voting systems.

  • Supervisor Dermot Cochran
  • Subject Area software engineering
  • Pre-requisites strong knowledge of Java and strong programming skills
  • Co-requisites (things you must learn along the way) Danish voting system and law, the Java Modeling Language, the JML tool suite, ESC/Java2
  • Subject Coverage software engineering with applied formal methods
  • Project Type formal system design and specification
  • Hardware/Software PC, laptop or workstation capable of running Java and Eclipse

Description

Using a verification-centric software process, perform an analysis of the Danish voting system law and design and formally specify an architecture to realize this voting system. Note that a full implementation of the specification is not required.

Mandatory Goals

  1. Become familiar with the Danish voting system law.
  2. Perform a requirements analysis of the Danish voting system by careful analysis of the legal text.
  3. Design and formally specify, using BON with refinement JML-annotated Java, the Danish voting system according to the aforementioned requirements analysis.

Discretionary Goals

  1. Check the soundness of the formal specification using ESC/Java.
  2. Compare and contrast with existing specifications of the Irish and Dutch voting systems.
  3. Coauthor, submit, and publish a paper on this work.

Exceptional Goals

  1. Specify and prove some (behavioral and security) properties about the specification.
  2. Propose a standard methodology for formal specification of voting systems.

Sources of Information and Preparatory Reading

  1. The KindSoftware Coding Standard
  2. The JML tool suite
  3. The Extended Static Checker for Java, ESC/Java2
  4. Design by Contract
  5. The Danish Electoral System