Design
Our application is designed to look like a familiar mobile chat application, with the pertinent details about secure communication highlighted and most of the technical details abstracted away. We felt that most of the existing solutions available were not usable by the vast majority of the population, and wanted to design something that would be secure while making encrypted communication more accessible. Thematically, we went for a very minimalist UI to further emphasize our goal to simplify encrypted communication. At a high level, the application is broken into 4 tabs, each of which provides essential functionality to the application.
GUI Section |
Screenshot |
Design Commentary |
---|---|---|
Login |
|
The login screen was designed to ensure the application preserves security. It appears any time the application loses focus, to ensure that anytime the phone changes state, turns off, or otherwise may potentially enter an unsecure state, a password must be entered. The screen was kept simple with just the essential fields and allows the user to quickly enter their password to get into the application. |
Inbox |
|
The Inbox screen is where the user can view and send messages from other users. |
Contacts |
|
The Contacts screen is where users can browse and edit the users to whom they expect to communicate securely with. |
My Identity |
|
'My Identity' is a simple screen that shows the user's profile data, and a large 2d barcode that can be used to physically share their encryption key with another user of the application. |
Settings |
|
This is a basic settings screen with gives a place for the user to modify application settings. This is designed much like any typical settings screen, and as of now only allows the user to edit their password. |
Implementation
Our application was built as an Android application.........
The backend server.......
We used standard toolkit for much of the UI components, such as.....
Individual tabs in the UI were defined as separate Activities, which helped allow the team subdivide tasks across each of screens.
Open Source packages were found and integrated for the barcode reader, numerous icons....
Evaluation
Three user tests were performed in order to investigate the effectiveness of our interface. One developer acted as both facilitator and observer for each test. We located users who we thought we be good targets for the application -- users who were interested in securely communicating with others, but not necessarily those who understood the technicalities of encrypted communication. One user test was performed using the application running on an Android phone, while the others we performed using the Android emulator.
We introduced our application briefly by discussing our intent with an easy to use but secure communicator. We did not perform a demo hoping that the similarity to existing applications would be enough for them to get around. We asked each user to perform the following tasks:
- Log into the Application
- Add the Facilitator as a new Contact via Barcode
- Initiate a Conversation with the Facilitator
- Receive a Message from an Unknown Contact and Add that person as a new Contact
- Remove the newly added contact and all messages they sent
User Test |
Critical Incidents/Quotes |
Design Learnings/Possible Fixes |
---|---|---|
User 1 |
Add Contact |
Add Contact -Since the 'Barcode as my Identity' Concept is not that common, some guidance in the form of help or a tutorial animation could ease learnability. |
User 2 |
|
|
User 3 |
|
|
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.
GR1 - Analysis
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 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.
Also looking back, remembering to focus on very specific user problems and ensuring that our application addresses those is key. We ended up moving the application into different directions and we could have benefited from a simplification effort during implementation to ensure our final application met all of the basic user needs.
GR2 - Design
The design phase went well and we have each member design their own version of the major tasks to be handled. This gave us multiple potential ways to implement the same tasks, and then we were able to directly compare them and discuss which methods would work best in our next prototypes.
At this stage we focused on high level tasks, instead of low level methods to achieve those. f
GR3 - Paper Prototype
The paper prototypes were both fun and informative, as we had not gone through such an exercise before. We learned a lot from having users physically attempt to use the paper version, and vocalizing their thoughts.
GR4 - Computer Prototype
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.
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.
GR6 - User Testing
Even with all the upfront work, user testing still yields new insights.