Detailed-Design-Document-current

advertisement
High-Level Design Document
Design Document – Smart-phones for Community project
"Scripto"
Group 6
Noaa Barber 038695102 noaabar@gmail.com
Jasmine Tamuz 015685175 jasmnt@yahoo.com
Yuval Peleg 066479296 yuval.pelegg@gmail.com
Table of Contents
Design Document – Smart-phones for Community project .......................................................................... 1
Introduction – this section specifies what you are actually implement
(usually subset of the
top-level design) ................................................................................................................................... 2
2
3
4
5
6
1.1
Overview ....................................................................................................................................................2
1.2
Design Goals and Non-Goals .........................................................................................................................4
1.2.1
Goals ..................................................................................................................................................4
1.2.2
Non-Goals ............................................................................................................................................6
1.3
Dependencies ..............................................................................................................................................6
1.3.1
Feature Dependencies ...........................................................................................................................6
1.4
Audience ....................................................................................................................................................6
1.5
Assumptions and Design Constraints List ........................................................................................................6
1.6
Issues List ..................................................................................................................................................6
1.7
To-do List + Expected time-tables .................................................................................................................7
Logical Architecture ......................................................................................................................... 8
2.1
Application Context (may be same as Top Level) .............................................................................................8
Design ........................................................................................................................................... 9
3.1
Classes .......................................................................................................................................................9
3.1.1
Class Diagram ......................................................................................................................................9
3.1.2
Class details ....................................................................................................................................... 16
3.2
Flows ....................................................................................................................................................... 18
3.3
Synchronization and Protection Mechanisms.................................................................................................. 20
3.4
Setup ....................................................................................................................................................... 20
Physical Architecture ...................................................................................................................... 20
References – to external papers/packages ........................................................................................ 20
Revision History ............................................................................................................................ 20
High-Level Design Document
Introduction
– this section specifies what you are actually implement
(usually subset of the top-level design)
1.1 Overview
Our goal is to make the touch-screen mobile phone more accessible to people whose vision is
severely impaired and/or are partially blind. One of this population's main difficulties is distinguishing
between different shades, and seeing small details on the screen. We offer the following Windows
Phone 7 applications which are designed with attention to the aforementioned difficulties.
I. Alternative keyboard cell-phone application and tutorial.
We came to realize that people with these kinds of disabilities have a hard time using one of the
main tools that the phone's touch screen has to offer – the virtual keyboard. The virtual keyboard
consists of small icons which require a fair amount of accuracy in order to be efficiently used.
We offer two types of alternative keyboards which present a solution to the difficulties mentioned
above.
Scripto6: A self-explanatory, easy-to-use keyboard in which the characters are shown on the screen
at all times. The characters are divided into 5 groups of 8-15 characters each. The main screen
consists of 6 buttons representing the 5 groups and a caps lock button. Pressing one of these
buttons transfers the user to another, similar page, with 8 buttons, each one represents the
character written on it. Pressing one of these buttons adds a character to the text (in some cases
one of these buttons transfers the user to a third page with more characters.) On the main page
there is also a space bar button and a small text box which shows the last few letters typed by the
user. Erasing is also possible. The use of this keyboard requires no training, but typing speed is
slower than that of Scripto4.
Scripto4: This keyboard requires some amount of training which can be done with the help of the
Scripto Tutorial (see below). The main screen has 4 buttons. Each character has a unique gesture
(tap, double tap, hold or slide) that is preformed on the squares in order to add the character to the
text. There is also a space bar and a text box (as in Scripto6). On the bottom left hand side there is
a "query" button which sends the user to the Scripto6 keyboard, there the user can find a specific
character and be reminded of the gesture that correlates with it. Choosing the desired character
adds it to the text and also gives the user vocal instructions of its gesture in Scripto4.
In both keyboards, a tilt to landscape mode displays the full text to the user and reads the text outloud.
Both keyboards have large icons with high contrast and read the letters that were entered back to
the user.
Scripto Tutorial ("Learn Scripto"): This feature teaches the user how to use Scripto4. It offers a
general introduction and familiarity with the buttons. Teaching is done in six lessons. In each lesson
8-10 characters are taught. First, by offering a short instruction of the characters’ gestures. Then, a
practice session which randomly presents the user with letters from the current lesson and from
previous lessons. Each session gives the user feedback of his/her success.
II. Graphic user interface designed for the visually impaired.
SpeakerBox:
We came to realize that visually impaired people cannot fulfill the full potential of their touch-screen
mobile device. In order to make websites and applications more accessible to the visually impaired,
High-Level Design Document
we offer a highly portable graphic user interface with full text-to-speech capabilities. This interface is
extremely user-friendly and requires a minimal ability to see.
Our GUI is built on the notion of dividing information into different levels. For example a newspaper
will have 2 levels. The first level will be headlines and the second level will be the actual article
associated with the headline from the previous level. (Alternatively, it could also be divided into 3
levels: sections in the newspaper, headlines and articles)
In any given time the user interface displays a single item (e.g. headline) from a menu on the
screen, transition between menu items on the same level (e.g. headlines) is done by horizontal
flicks, transition to another level (e.g. articles) is done by vertical flicks. Every menu item has
instructions which the user can listen to or read by pressing a button on the screen. Text input to
the menu items is done via Scripto4 or Scripto6 (up to the user).
All the text displayed on the screen (e.g. the headline itself) is read via a TTS engine powered by
Bing.
We have built SpeakerBox to be extremely portable in order to allow 3 rd party developers to our GUI
and the notions it encapsulates.
The UI can be operated with very poor sight since a small amount of accuracy is need for operating
it. The screen itself is composed of a help button, a button for getting input from the Scripto4 or
Scripto6 keyboards, arrows for showing available flick directions and a large scrollable text block to
display the data of the current menu item.
We offer an example dictionary class, however lots of other implementations are possible (Twitter
reader, newspapers, text-message box and more).
High-Level Design Document
1.2 Design Goals and Non-Goals
1.2.1 Goals
I. Write two keyboards: Scripto4 and Scripto6. Write a tutorial for Scripto4.
Our two models are:
1. Scripto6:
Figure 1 (a) describes the first screen that opens when this keyboard is called. One touch on
the top right square will result in the appearance of the second screen (b). One touch on the
appropriate square here will result in an audio instance of the letter "m" and the first screen
will reappear, along with the last character that was chosen, as seen in (c).
Figure 1
(a)
(b)
(c)
High-Level Design Document
2. Scripto4:
Figure 1 (a) describes the first screen that opens when this keyboard is called. A slide of the
finder from the bottom left square to the bottom right square will result in an audio instance
the letter "d" and it's appearance on the top of the screen as seen in figure (2). A double tap
on the top left square will result in an audio instance of the letter "s" along with its
appearance alongside the previous letter that was entered, as seen in (c).
Figure 2
(a)
(b)
(c)
3. Scripto4 Tutorial:
The first screen offers first-time users a short and general introduction to Scripto4. It
introduces each element and its function
The tutorial is divided into 6 lessons which can be accessed through the “Lessons” button on
the first screen. Each lesson is composed of an instruction stage and a practice stage. The
instruction stage introduces the characters that will be learned in the current stage and their
gestures. In the practice stage the user is given a character and has one chance to input it to
the keyboard using the correct gesture. At the end of the practice stage, the user is notified
of his/her success rate.
4. SpeakerBox:
Create a template on which future developers would be able to easily develop apps for the
visually impaired.
High-Level Design Document
The template will require a low level of accuracy, will be in high contrast as support full TTS
capabilities.
5. Vox Verbum:
Create an example application showing the ease of developing apps based on Scripto's
keyboards and SpeakerBox template.
The app will be a simple dictionary that will require downloading from the internet and an
good division of data.
All of the aforementioned applications will use a text-to-speech engine in order to save time and
storage.
1.2.2 Non-Goals
The applications will not serve the completely blind.
The keyboards will not be the phone's default keyboard since this is not possible under this version
of the windows 7 phone.
For now all our code will be exposed to external app developers who want to develop apps based on
our application.
1.3 Dependencies
1.3.1 Feature Dependencies
Bing's text-to-speech engine (for both the keyboards and SpeakerBox)
Google's dictionary API (for the example dictionary implementation)
1.4 Audience
The primary audience for these applications is visually impaired people who are not completely blind.
The keyboards are also suited for fat-fingered individuals who have trouble using the small-icon
standard virtual keyboard.
1.5 Assumptions and Design Constraints List
A constantly available internet access is required, in order to access the text-to-speech engine and
the dictionary database.
1.6 Issues List
High-Level Design Document
1.7 To-do List + Expected time-tables
To-Do
By…
Write Scripto6
20 December 2010
Write Scripto4
31 January 2011
Write SpeakerBox
31 January 2011
Write the tutorial
27 February 2011
Test the keyboard interface
9 March 2011
Test SpeakerBox interface
9 March 2011
High-Level Design Document
2 Logical Architecture
2.1 Application Context (may be same as Top Level)
High-Level Design Document
3 Design
3.1 Classes
3.1.1 Class Diagram
High-Level Design Document
High-Level Design Document
High-Level Design Document
High-Level Design Document
High-Level Design Document
High-Level Design Document
High-Level Design Document
3.1.2 Class details
Namespace: Keyboards
Classes:
MainPage – This class holds the page that opens when the user enters the application. From here
the user can choose to open SpeakerBox, Scripto6, Scripto4, or Learn Scripto.
Scripto6Page – This class manages the one-level keyboard interface, and its different features.
From here a tap on one of the buttons sends the user to the respective page (The following three
classes).
TopLeftPage
BottomLeftPage
Hold character buttons and their handlers.
BottomLeftPage2
Scripto4Page – This class manages the two-level keyboard interface, and its different features.
TutorialMainPage – This class holds the page that opens when the user taps "Learn Scripto" in
MainPage. Gives the user the option of choosing between lessons and introduction and then the
choice between 6 lessons.
IntroductionPage – This class holds a Scripto4 screen, when the user presses any of the buttons,
it turns red and an explanation about that button is hear.
LessonPage – This class holds the page in which the user chooses instructions/practice for a chosen
lesson. This class also handles the lesson itself. It gives the users a letter to enter and gives them
feedback for the way they entered.
InstructionPage – This class holds the page that gives the user instruction on the chosen lesson's
letters.
Lesson – This class holds lessons. When entering the TutorialMainPage 6 instances of this class are
created (one for each lesson) the instance includes the lesson's attributes such as letters in the
lesson and previous lessons.
Text – This class manages the text typed by the user so far. An instance of this class is created
when Scripto4 or Scripto6 is opened. When the user adds or removes a character the instance is
altered respectively.
Square – This class holds the four black-and-white squares on the Scripto4's TouchingArea. Since
the whole area is one element, 4 instances of this class are created when the Scripto4Page is
entered, each instance holds different attributes such as the squares coordinates on the
TouchingArea. These squares are used in order to map the location of the gestures on the
TouchingArea.
Utils – This class holds different static functions that the other classes use. Most of these functions
have to do with the matching of gestures and their characters.
CommonStatics – This class is for the sole purpose of preventing code duplication. It contains
static functions needed by two or more components of the Scripto application.
Namespace: SB
High-Level Design Document
Classes:
App - Base class for all WP7 apps. We added our own back navigation function to it.
HelloVV – A hello world example class for SB
Meanings – class representing of MenuItem's containing meaning of a given word from a dictionary
MenuHelpItem – An input-less MenuItem in which the help for a given a MenuItem is displayed.
MenuItem – The basic building block for a SpeakerBox based app. A MenuItem is a single piece of
data in a menu. for example: if we have a newspaper app which consists of headlines and then
actual article then a single headline is a MenuItem and so is a single article.
TTS – Class representing our TTS service.
SpeakerBox – A template for writing apps for the visually impaired.
VoxVerbum – An example MenuItem class, a dictionary powered by Google's dicionary API.
NoInputUserMenu – A general menu item which receives no input, used to give messages to
menu. Used in "error" and "loading" messages.
High-Level Design Document
3.2 Flows
Scripto4/Scripto6:
*These stages are relevant only for the one-level keyboard
High-Level Design Document
SpeakerBox:
High-Level Design Document
3.3 Synchronization and Protection Mechanisms
We give an invoker and a delegate object to external MenuItem implementing classes in order to
allow for signaling the completion of an async process on their behalf. Before the invoker is
dispatched a "Loading…" message is displayed.
In TTS we cancel any old downloads so no concurrent downloads ever occur.
3.4 Setup
4 Physical Architecture
Irrelevant
5 References – to external papers/packages
TTS – Bing's text-to speech engine.
Google's dictionary API
6 Revision History
Date
Author
Description (include reviews with reviewer lists)
4.12.2010
Noaa Barber,
Yuval Peleg
and Jasmine
Tamuz
The dictionary idea is changed into the SpeakerBox idea
30.12.2011
Noaa Barber,
Yuval Peleg
and Jasmine
Tamuz
5.2.2011
Noaa Barber,
Yuval Peleg
and Jasmine
Tamuz
We decide to implement a dictionary with the SpeakerBox interface in
order to demonstrate how it works.
Preliminary document.
Download