- Table of Contents
- Docs & Downloads
- Screenshots VoteServer
- Screenshots VoteClient
- Third Party Library
Vote (without exclamation mark) was a project which I did back in high school in the winter holidays 2008 (most of the planning and pre development) and in early 2009. This project was an opportunity, offered at my school, to replace a »normal« written exam (or »Klausur«) by a project work. The German name for this is »Facharbeit« and in English the best matching term might be skilled work or research paper. The skilled work comprised a practial project with a written document where the result is presented.
Because my computer science teacher proposed that it would be nice to have an application to perform quick surveys in class at the computer room, I decided to implement this idea. The title of my project was:
Entwicklung und Evaluation eines Systems zur Durchführung von Umfragen in lokalen Netzwerken und Intranets auf Basis des Client-Server-Modells
Development and evaluation of a system to perform surveys in local area networks and intranets based on the client-server-model As expressed by the title the goal of my project was to build a two-fold application which allows to perform surveys by using sockets and a custom protocol between the different instances of the application (client and server). Since we did everything with Java back in the day at school I took this opportunity to explore the Java Networking API with this project. Since I was crazy about GUIs at this time I also required me to build a really nice looking GUI (at least at that time) using the Java SWING framework. At the end of this article (Screenshots VoteServer and Screenshots VoteClient) you can take a look at the result. By the way: the GUI I built is a 100-% handmade - I used no GUI desinger tool, because I really wanted to get the feel of building GUIs by hand compared to using a WYSIWYG GUI editor. Till nowadays I do most of my Java projects with SWING GUIs by hand because I got used to it.
The UML Use Case diagram below shows all actions implemented by the Vote system through the VoteServer and VoteClient application. The VoteClient enables users to participate at surveys and the VoteServer serves these surveys, maintains them and provides a graphical editor to create surveys with questions.
The main focus during development of Vote was - obviously - the GUI and the custom network protocol which was desgined by myself completely from scratch. Back in the day I experimented around with network programming (in Java) which you can see in anohter project: neptune - a network game. And I was very satisfied when I ran Vote for the first time, on two physical distributed machines, that it worked without any problems.
To make things more interesting, and to take care for the word »evaluation« in the title, I actually performed a full beta test of the application with test questions and evaluated them in my final paper (see next section). For this purpose my computer science teacher allowed me to take a regular double lesson of computer science class (90 minutes) to let my classmates judge about Vote. The beta test asked the participants to grade how well Vote fulfills the different functional (actual functions a system has) and non-functional (how well a system fulfills a functional requirement, e.g. Vote should provide an easy to use GUI) requirements. The result is shown in the following picture:
The complete final skilled work submission which was examined by my supervisor and graded can be downloaded in the following. It contains a full description of the architecture and the definition of the custom network protocol for Vote (specification at the end of the document). Furthermore it shows the details of the beta test and evaluates the results.
Download the PDF file (1.6 MB) SHA-1 8c346ccf475dddb70f470a3e547410ad4fef6175
The executable JAR files of Vote require at least Java 1.6 and should run with the most recent Java version (tested with Oracle Java SE
1.8.0_101). If not, please contact me.
VoteServer executable JAR file (210 KB) SHA-1 c839017013a2eececd293eeea11c8f844696f851
VoteClient executable JAR file (87 KB) SHA-1 31c93583445b544a052456a9ef200f6d01dfab9e
Furthermore you can download three sample surveys which can be loaded by the VoteServer by clicking on the little folder icon:
Sample Vote survey: Movies (DE) (1.5 KB) SHA-1 e22f03ddbb3c993db4aea4794aaa9a66cde9d968
Sample Vote survey: Computer Science (DE) (1.8 KB) SHA-1 9c69ece2b789848267f3a29c62be504f8cadd9a0
Sample Vote survey: History USA (EN) (1.3 KB) SHA-1 f1bba83dfc2ee6256e28bf26832d2a246e8453f8
The source code is not available publicly. But if you need it you might want to contact me and ask for it with a rationale.
Vote uses the Java classes
Client.java (source) and
Connection.java (source) developed by Horst Hildebrecht in version 1.0 (16.08.2006) since we got introduced to networking with this classes during the computer science lessons. We needed to know the API for the »Zentralabitur« (might not be possible to translate to English) - our absolutely final examination before graduating.
Since I did not like the fact that Vote depends on third party code and thought that I really should get to the bare basics with sockets I decided only a couple of months later to write my own networking classes. But I never ported Vote to my own classes. Anyway: you can download them here (CC BY-SA 4.0 license).
JAVA_NET_API.zip (5 KB) SHA-1 ed65c836dc3a2f7f4f2023bd8823915eee387e28