2d barcodes was a software engineering project by Team Nokkis, made at the Helsinki University Computer Science department during Spring 2009. In this document the product and other included documents are described briefly. There is also a short postmortem analysis of the whole project.
Physical access control to events, such as conferences, workshops and concerts, is logistically a time-consuming task. This project implements a system for access control, based on 2d barcodes. The basic idea is that the customer gets access to an event and gets a access-granting 2d barcode. The printed document with the barcode can then at the physical access control site, be checked with a standard laptop and web-camera. The tickets are based on standard QR code format.
The product is called Nokkis. Nokkis is a distributed ticket system, consisting of client and server parts. The server handles the database requests and the creating of the ticket, which includes the creating of the unique barcode, while the client is responsible of reading the barcode and sending the information to the server. The client then discards or accepts the ticket, depending on the answer from the server. There can be multiple clients communicating with the server at the same time.
Besides this project summary, there are five other documents included with the product.
Project plan describes the time and human resources of the Nokkis project. The project schedule was set from 12.1.2009 to 3.5.2009. In the end of the project the schedule was postponed by one week due to CS department ssh key security breach, otherwise the deadlines were met more or less accurately.
Project plan also lists all the hardware and software requirements, project organization, risk analysis and size estimations.
The software requirements document describes all the requirements the software meets. The client-server model used in the project is set and planned and the software and hardware requirements are now defined clearly. The use cases for a typical Nokkis case are described both from an end-user and admin point of views. The document also describes the system architecture and the system model for Nokkis.
Design document describes Nokkis in detail, including architecture plan, database design, protocol design, component design (both client and server design) - both in UI level and on programming (classes) level. Client virtual server (named simply as cache) was designed so that clients could act also stand-alone without continuous communication with the server. In this document it was also refined that Nokkis is a mere ticket system, and doesn't handle users at all.
On software level, the decision was made to use Java with ZXing library for recognizing the QR codes in the client end, together with OpenCV library for capturing images from the web-camera. For the server end, a MySQL database design is presented together with REST API for communicating with the client.
XML Schema describes the XML file format that is used in the client and server communication.
Server API lists all the commands and URL's the client can use for server requests, as well as expected input and output formats. The error handling is also defined in this document.
Client javadocs are generated straight from the Java source code.
Test plan defines how the testing were conducted. In the end lot of the testing were done while developing Nokkis, instead of having separate test sessions.
User manual and suppord document includes the installation instructions of both client and server parts on all tested platforms. There's a separate section on how to use Nokkis client. In the end of the document, missing features and known issues are listed.
Postmortem in brief:
- The Good:
- From the software point of view, most of the original requirements were met and the surpassed - the client works on all three majos OS's (Linux, Windows, OSX).
- Client performance: It's fast! Starting from OpenCV jni wrapper to ZXing and barcode recognizition. Only communications with the server can be a bottleneck.
- The Bad:
- Lack of testing. Missing unit tests, minimal functional testing. We blame lack of time.
All in all, we feel the project was a success. Even if there are some shortcomings in testing extensiveness, the main goal was achieved: Nokkis reads and interprets 2d barcodes efficiently, the client communicates with the server and can act as a stand-alone application. The product is by no means ready, but with bit more work and testing we could see this used in events with thousands of visitors (like RopeCon). In fact it's interesting that nearly no publicly available ticket systems haven't used 2D barcodes so far. The concept is definitely worth a deeper utilization.