Iteration 2
Overview
This application will allow users to create surveys that can be taken by other users on their Android mobile devices. The completed surveys will be returned to the creator in an easily readable format. While for years, answering surveys has consisted of checking boxes and filling in bubbles, we hope to bring certain new innovative and intuitive methods of form filling to light with our app. We want to take advantage of the fact that this app will be running on an Android phone. Thus we will focus our data entry on speech, multi-touch, and the accelerometer. We also plan to scrape answers from the phone (like GPS location data, contact details, etc.)
Key Features
-
Survey Creation
- Types of Questions - multiple choice, sliding scale, text
- How survey can be found (pushed to server)
- Survey Distribution
- Server stores created surveys
- Sever accepts requests for surveys by takers
- Server sends survey to taker after request
- Survey Taking
- Retrieve survey
- Input text and multiple choice answers
- Submit to server
- Data analysis
- Aggregate text data
- Create statistics from multiple choice data
- Export results to text file in a standard format that can be parsed later
Desired features (if time permits)
- Survey Creation
- Templates
- Types of questions
- Graphics (human body for pointing out pain in medical surveys)
- Add personalized logo to survey
- Address book for sending out survey
- Visibility of the survey (public or private)
- Level of security (encrypted for medical etc.)
- Mailing list for repeated surveys (what the office wants for lunch, etc.)
- How data should be returned (email, app, etc.)
- Expiration
- Survey Taking
- Retrieve a survey to take
- Drop-box situation (takers subscribe to a drop-box and are notified about new surveys)
- Browser
- QR Codes
- Location (if app is on, it recognizes a survey by location)
- Retrieve a survey to take
- Automatically fill out as much of survey as possible (name, number, etc. I.E. data that is already on the phone)
- Input text and multiple-choice answers (by hand or speech)
- Know how much time/how long the survey is
- Give feedback about survey
- Share survey with other parties
- Data Analysis
- Real-time results
- Push results (for updates)
- Aggregate data from multiple surveys
- Display data with graphics, etc
- Keep data separate in confidential situations
- Aggregate data complying with HIPPA rules (for medical usage)
- Export data to PDF or other nice formats
- Account Settings
- Import preferences or profile from facebook/gmail/etc
Use-cases
- Creating a One-Question Survey from a Template
Primary Actor: Creator (the User)
Goal: Creating a survey
1. User chooses the ‘Poll’ template form
2. The application starts a new survey based on the chosen template
3. User enters (types or speaks) the question that he wants answered.
4. User chooses the format for responses (i.e. Multiple Choice, Binary, or Sliding Scale)
5. User adds answer choices
6. User selects configurations for the survey (method of results aggregation (i.e. simple statistics), visibility, expiration, etc.)
7. User selects distribution mode (i.e. a link via email, a QR-code, etc.), and the takers list
a. If user does not have access to Internet, save survey locally
8. User submits and distributes the survey to takers - Taking a One-Question Survey
Primary Actor: Taker (the User)
Goal: Taking and submitting a Survey
1. User retrieves the survey (by clicking a link in an email or snapping a QR-code, etc)
- If the user does not have the survey app, the phone is redirected to the market where the app can be downloaded
3. User submits the survey.
4. User is redirected to a results page (if one exists)
- Creating a Long Survey
Primary Actor: Creator (the User)
Goal: Creating a survey
1. User chooses to make a custom survey
2. User enters (through speech or text) questions
3. User selects what type of answers are acceptable for each question
- If an answer needs clarification, a subset of questions can be
created
If an answer that has a subset is answered in a particular way, the subset may be skipped (skip logic)
5. User selects configurations for the survey (method of results aggregation (i.e. simple statistics), visibility, expiration, etc.)
6. User selects distribution mode (i.e. a link via email, a QR-code, etc), and the takers list
a. If user does not have access to Internet, save survey locally
7. User submits and distributes the survey to takers (or make it a public survey) - If an answer needs clarification, a subset of questions can be
created
- Taking a Long Survey
Primary Actor: Taker (the User)
Goal: Taking a survey
1. User retrieves the survey (by clicking a link in an email or snapping a QR-code)- If the user does not have the survey app, the phone is redirected to the market where the app can be downloaded
- If the question has a subset of questions, depending on the answer the User is either directed to answer these questions or the application automatically skips over them
- User may save answers locally and and complete the rest of the survey later
- If user does not have access to Internet, save the answers locally
- Retrieving the Results of a Survey
Primary Actor: Creator (the User)
Goal: Getting results from a survey that has been taken already
1. User selects which survey to get results for
2. User views results
3. User may manipulate results for easier viewing (Graphs may be changed from bar to pie, etc.)
- Creating a Question
Primary Actor: Creator (the User)
Goal: Create a question
1. The user writes or speaks a question.
2. User chooses which answer format is acceptable for the question (i.e. Multiple Choice, Binary, Sliding Scale, Text Box, Diagram, etc.)
3. User chooses and writes/speaks answers in the acceptable format
4. User reviews question and finalizes it
- Answering a Question
Primary Actor: Taker (the User)
Goal: Answer the question
1. Whenever the user starts a survey, the phone automatically looks for information it can auto-complete (Name, DOB, phone number, location, etc.)
2. User reads the question (or the text-to-speech reads it to the user)
3. The user selects the answer from the format the Creator has specified - Exporting Results
Primary Actor: Creator (the User)
Goal: Make results viewable by other parties
1. In results mode, select export
2. User chooses which format to use (PDF, XLS, etc.)
3. User taps export button and gets file sent to email - Submitting a Survey When Not Online
Primary Actor: Suvey Taker
Goal: Submitting a finished survey when user does not have internet access
1. App checks for internet connectivity
2. If there is no internet connection, app automatically saves the survey locally
3. When phone regains internet connectivity, app sends survey to server
Domain Model
![](images/domain_model.png)
Class diagram
Download the larger version here
![](images/class_diagram.jpg)
Deployment Diagram
![](images/DeploymentDiagram.jpg)
Sequence Diagram
![](images/CreateCustomSurvey_SequenceDiagram.jpg)
Class Design Proposal
Please click here for the JavaDoc documentation.
GUI Sketches
Please click here to download.Activity Diagrams
![](images/CreateLongSurvey.jpg)
![](images/TakeASurvey.jpg)
Architecture
There is a basic
client server interaction. The client is based on an android phone.
The server is running Hibernate, MySQL, and JBoss Web Service. The
surveys, answers, and stats are stored on the server. There will be
two main packages: one for the client and one for the server
Resources
- Android core libraries
- Android accelerometer
- Speech-to-text/Text-to-speech
- MySQL
- JBoss Web Service framework
- Hibernate
- A free stats package (R, or something else)