...
Our application was built as an Android application coded in Java. It leverages a SQLite database to manage all contact information, messages, etc. It makes use of a data connection in order to communicate with other parties. We chose Android as it's a rapidly growing, already very common platform with good flexibility. (And it's more pleasant to code for than the iPhone!) Mobile platforms offer interesting use cases, due to limited screen size and the use of touch screen interaction.
We used standard toolkit for much many of the UI components. This was done for ease of development as well as usability reasons. Using standard components that users are used to seeing will help to decrease the learning curve and help prevent misunderstands, errors, etc.
We created custom colored images to represent different ideas throughout our interface. This was done with freely available images which were then colored, scaled and composed to give the desired resources. Doing this right was very important to our usability. I believe the icons we created and used added a lot the the user interface. They were good at conveying their contained concepts (trust, warnings) in a concise fashion. Also, they gave indications without relying solely on color, so that color blind users would still be able to use the interface effectively.
Individual tabs in the UI were defined as separate Activities, which helped allow the team subdivide tasks across each of screens. This is a robust part of Android and so is very responsive and usable. The icons have large click areas to prevent errors, and their icons are good indicators of their contents.
Open Source packages were found and integrated for the barcode reader and QR code generator. This package also deals with ensuring the user can get access to a barcode reader if they do not already have one. This ensure setup of the additional dependencies is as easy as possible for the user.
The backend server handles all the routing of messages between clients. It is coded in PHP with a MySql database backing it. Android devices will be able to communicate directly with each other without any setup besides adding someone as a contact. This simplifies the setup and use for the end user. This was intentionally designed such that the server could be untrusted. Therefore, there is no authentication; all verification is done through encryption. The underlying protocol is HTTP.
...
User Test | Critical Incidents/Quotes | Design Learnings/Possible Fixes | ||
---|---|---|---|---|
User 1 | Add Contact | Add Contact | ||
User 2 | Add Contact | Add Contact | ||
User 3 |
| Add Contact | Add Contact |
Reflection
Going through the design process in a methodical way was very educational, and we could see the design evolving throughout. We reflect on the evolution of this design through each stage.
...
During the initial Analysis, it was instructive to think concretely about the tasks we wanted users to be able to complete. We ended up going back to you the task list multiple times for updates because the actual tasks necessary to achieve a users goals were simplified over time. We did a good job targeting specific user needs, but perhaps took on too much total scope for the purpose of this class looking back on it.
...
For the computer prototype we were attempting to get the barebones functionality working, as this was the first Android application any of us had worked on. It was a bit of a learning process, but it helped us get comfortable with standard design elements in Android, that were most likely created with usability in mind.
GR5 - Implementation
Architecting the application such that multiple people can work independently on certain sections is a huge help. Separating the UI from the backend allows both to be developed in parallel, and dividing the application into distinct section allows each one to be created independently.
...
Even with all the upfront work, user testing still yields new insights. We are not yet able to translate from English into Given the feedback we have received, we have located areas where we can definitely improve. This definitely highlights how usability design is an iterative process that can go on indefinitely.