Project Document V.6

 David     (Interface Desgin)
Lu            (Codeing, & Documentation)
Jeremiah (Core Design & Codeing)
 

I. Essence of Delphi
II. User Interview
III. Target Audience
IV. Fuctional Description
V. Design Specification
VI. Architectural Style
VII. Response to Logged Comments
VII. User Interface
VIII. Functional Specifications
IX. Design Specifications
X. Testing
XI. Developmental Methodology
 

I. Essence of Delphi

 Delphi creates an open ended dialogue between people, facilitated by software.
Centered around anonymity, it frees users to communicate openly, expressing new ideas
and commenting on others ideas publicly without the burden of identity and ego. Users of
Delphi are able to give and receive immediate feedback on answers, comments and
questions without the restriction of time or location. Any Delphi user can access Delphi
from any location on the Internet anywhere in the world at any time. Customizable limits
on length of answers, and comments can force the user to form their answers and
comments in a concise manner causing them to think carefully about what they write.
Simplicity itself is an important aspect of Delphi. The simple structure of
(Question -> Answer -> Comment) organizes interaction to useful degree without
constricting the user. Simplicity in the user interface is also crucial.
Functionality in a familiar and simple context is our goal. Highly nested functionality and
complicated navigation are to be avoided. The goal is simple "one click" interactions
where in the context of the main Delphi screen, most essential functions are no more that
one mouse click away.
Ease of configuration is also an aspect of the essence of Delphi. 15 to 30
minutes should be the maximum amount of time needed to fully configure a Delphi
session for a group of users. High expandability is another aspect of the essence. Delphi
should operate the same with 15 and 1500 users.

 

II. User Interviews
For our user interview we interviewed a student grader who had graded answers using Delphi but who had never answered questions using Delphi.

1. Subject matter excluded, do you consider using Delphi a positive or negative experience?

2. What do you enjoy most about using Delphi. 3. What do you enjoy least about using Delphi. 4. Do you notice a difference in the way you answer questions on Delphi? 5. What is this difference and is it positive or negative for you. 6. When commenting on other responses, do you comment the same way you might when talking to the person face to face. If not, how is it different. 7. What would you change about Delphi to better suit your needs. 8. If you had the choice of taking your next exam either on paper or using Delphi, which would you chose. 9. Do you find the anonymity of Delphi beneficial or detrimental to the learning atmosphere?  
 
 
 

IV. Target Audience
Naturally the main target for this product will be higher education. Its intended use is to supplement the classroom. But we can see this product being used in other educational areas also, such as high school, and among teachers. Another possible audience lies in the business field. We can see this product being used to aid in problem solving among businesses and corporations. Any group testing situation or structured dialog.

 
 

V. Functional Description

 Supported Transactions-
Under our specifications, there will exist four different types of entities. These different entities will have different privileges to transact question, comment, answer, configuration, and grade information. The entities and the data they can send and receive are listed below.

 Anybody-
Submit login.
Receive list of classes

Administration-
Adds professors.
assigns classes.
Receive current lists of professors and classes.

Professors-
Submit grades, users, questions, comments, configuration settings.
Receive answers, questions, comments, grades, current configuration settings.

Graders-
Submit comments and grades.
Receive answers, questions, comments.

Students-
Submit answers and comments.
Receive questions, comments, answers.
 
 
 
 
 
 
 
 
 
 
 
 

VII. Architectural Style

 We are designing HTML CGI script that retrieves data and displays it in an HTML format.The PERL scripts will handle the retrieval of requested data from the database, parse the retrieved data and then use that data to generate HTML for the browser.
The architectural style will fall under the Data Sharing method. There will be a client interface connected to a data store. All comments, answers, grades and configuration data will be able to be edited until submition. After submition, only users with enough access privileges will be able to edit the information.
 
 
 

VIII. Response to Logged Comments:

 1. Emphasis on anomitity.
Anomitity was one of the key issues address by the grader in improving grading fairness. She thought it was what really separated electronic grading from paper grading.

 2. Emphasis on Icons.
It was a part of the assignment, plus improves user friendliness and necessary aesthetics.

 3. Interview with grader not user.
The grader interview was more valuable in our structuring of the project. Most of the users comment were complaints about the unfriendliness of the software and the general arcane feel to it.

 4. User interface one click away but did not describe how to do that specifically.
Check the prototype.

 5. Target Users. What is the expectation of the user? How literate do they have to be?
We expect users to be able to point click, read and write (type).

 6. Security issues.
This is a server side problem. It will be handled by the database. Some SQL code will be needed to link the software and the database.

 7. How do users get their grades?
The grade fairy comes down and... Just kidding, in the graders comments.

 8. List of future features.
Some sort of searching capabilities to get statistics on classes.
On-going discussion page, like news groups.

 
IX. User Interface
The ultimate goal for the user interface is one in which most functions are no more than one level, or one click away regardless of where you are. Another big goal for the interface is one that is aesthetically pleasing, in which the environment, (layout, icons), make the navigation easy and intuitive and thus powerful.
As of now, there will be only 4 to 5 "screens". There will be a login screen accessible to anybody on the web. Then if the user is in more than one class, a selection screen will be generated to allow the user to pick their desired class. The User will then move on to the main page. This main screen will have a series of Icons (listed below)at the top (Header). The functionality and number of icons will differ depending on the rank of the user. A user with the rank of administrator for example will see all of the icons. At the bottom of the screen will be the user's current status and location (Footer). The middle part of the main screen will consist of 4 frames (Questions , Answers, Comments) and will take up the top half of this section. Each of these frames will contain the relevant information ie appropiate questions, answers, comments, depending on the user's last selection. Initially only questions will be displayed. The lower half of the main screen will consist of a large section where the current selected data will be displayed as well as allow the user to submit information when appropriate. There will also be a HELP screen as well as a configuration/maintenance screen. These are as of yet to be designed.

 
Icons-
Configuration- This Icon will take the user to a separate screen with all of the configuration options. It should be clearly marked by an image of some sort of mechanical tool, possibly a wrench.

 Submit question- This Icon will allow the user to submit a new question for the current class. The image of this icon should represent both question and the action of sending. A "Q" with an arrow is what we are using.

Grade- This icon will allow the graders and professors to submit a grade for a question. Its image should depict some sort of common grading theme, possibly an "A+" in red drawn by hand.

 Answer- This icon will allow the user to answer a particular question. It should be depicted by an image of an instrument of answering, possibly a yellow pencil.

Comment- This icon will allow the user to submit a comment to a question or answer. The image would represent some instrument of commenting. Possibly a red pen.

Help- This icon will take you to a general help screen from which the user can receive specific help. The image of this icon should be a clearly recognizable icon of confusion. Possibly a simple question mark.

Configure- This icon is a monkey wrench, when clicked, it will take the user to the configuration screen.

 
X. Functional Specification

 Primary transactions:
Submitting comments.
Submitting answers.
Submitting questions.
Retrieving answers.
Retrieving questions.
Retrieving comments.
Logging out.?
Logging in.

 Administrative transactions:
Deleting classes.
Deleting users.
Adding users.
Adding classes.
Deleting questions.?
Changing password.

 Limits:
The software is best served by short answer questions. However, there are no limites to the type of data that can be entered, except those imposed by a professor or admininstrator.

 .

 login screen
If none of the subroutines contain data then the login screen is displayed The login screen is html displayed via STDOUT.

Sub ReadParse
split is standard perl used for parsing strings. The way that we are using it is to isolate data displayed from the database in columns. ReadParse parses the row and sets up $in to as a matrix to read the parsed data into so that

 split (/=/, $in[4]) will retrieve the fifth item in the array.

 Sub UserQueryParse
The database returns the number of rows retrieve, to isolate this number UserQueryParse splits the result twice. First to get the last item of data (which reads query retrieved _ rows) and again to get the number.

 Sub login
login creates a temporary variable for the first two items of data received from the login screen ($user_name, $user_pass) Then a query is run to select every row where, $user_name matches user_fname and user_pass matches $user_pass.

 Also query is performed to match user_id with the user_id return in the initial query with every class that it is linked to.

 If the user_id is only liked to one class then the init_html (STDOUT) is initiated, otherwise a class_choose_html screen is generated. The screen lists the classes available to the user after the selection a query is performed matching the class selected with the user_id. At which point the init_html is run.

 The init_html sets the parameter for the header the footer and the main complete with header (sub header) and footer (sub footer) information.

Sub footer
Footer displays the users first and last name, their user_id and the class_name.(STDOUT)

 Sub Header
Header displays icons relative to a user's privilege level.
Level S (student privileges): answers, comments and help icons.
Level G (grader privileges): answers, comments, grade and help icons.
Level P (professor privileges): ask question, answers, comments, grade, and help icons.
Level A (administrator privileges): ask question, configure, answer, comment, grade, and help icons.

Sub qhead, ahead, chead
These three processes label the headings, above the scroll windows on the interface.

Sub user_info
User_info stores all of the user information including the class that they are in, in an array called user_info.

 Sub questionf
The class_name and user_id are taken from user_info. Statement id, Parent id and subject are queried from the info table where class is the $user_class and the statement type is a is Q for question.

 Since the statement id and parent id are not available until a question is selected two slots are reserved for them in the array and removed when they are added.

 A counter is incremented for each row in the questions column that satisfies the is returned by the query. The counter is incremented by one and tagged to a reference. Each question is number in sequence. They are displayed in order to the question frame of the main.html. (STDOUT)

 Sub answerf and commentf
These two functions use the same mechanics as sub questionf they are displayed in their appropriate frames. (STDOUT)

 Sub bodyf
Bodyf works the same as questionf as well, however it is text, that is not tagged to any reference.

 Sub mainf
Mainf is a html code that generates the foundation of frames that question, answer, comment and body use to display their individual data.

 VI. Design Specification.

 We are using Postgres95 for file storage and manipulation, At the moment we only have two tables designed. Depending on whether they are functional or not will let us know what we need in the additional two tables that we forsee.

 This is our User Table:
The use of this table is limited to three occurrences at the moment.The login "sub Routine" uses the table to verify and match a users first and last name with their entered password. It returns all info on a user. If a user is in more than one class it will prompt for them to make a choice. The user information is passed to every cgi script for future verification purposes.When a user submits anything however, this information is used to insure security.

 The footer of the delphi pages uses this info to display the current user/class/and id.The header uses this information to establish valid icons.

 User table:

 
User_Lname User_Fname User_Pass User_ID Class_Name Class_level
Char16 Char16 Char16 Int4 Char16 Char
 

Statement Table:
State_ID Parent_ID State_type Class_name User_ID S_Date Statement
Int4 Int4 Char Char16 Int4 Abstime Text 
Position Table:
User_id Class_name State_id State_type
Int4 Char16 Int4 Char
 
 

login screen
If none of the subroutines contain data then the login screen is displayed The login screen is html displayed via STDOUT.

Sub ReadParse
split is standard perl used for parsing strings. The way that we are using it is to isolate data displayed from the database in columns. ReadParse parses the row and sets up $in to as a matrix to read the parsed data into so that

 split (/=/, $in[4]) will retrieve the fifth item in the array.

Sub UserQueryParse
The database returns the number of rows retrieve, to isolate this number UserQueryParse splits the result twice. First to get the last item of data (which reads "query retrieved _ rows") and again to get the number.

Sub login
login creates a temporary variable for the first two items of data received from the login screen ($user_name, $user_pass) Then a query is run to select every row where, $user_name matches user_fname and user_pass matches $user_pass.

 Also query is performed to match user_id with the user_id return in the initial query with every class that it is linked to.

 If the user_id is only linked to one class then the init_html (STDOUT) is initiated, otherwise a class_choose_html screen is generated. The screen lists the classes available to the user after the selection a query is performed matching the class selected with the user_id. At which point the init_html is run.

 The init_html sets the parameter for the header the footer and the main complete with header (sub header) and footer (sub footer) information.

Sub footer
Footer displays the users first and last name, their user_id and the class_name.(STDOUT)

 Sub Header
Header displays icons relative to a user's privilege level.
Level S (student privileges): answers, comments and help icons.
Level G (grader privileges): answers, comments, grade and help icons.
Level P (professor privileges): ask question, answers, comments, grade, and help icons.
Level A (administrator privileges): ask question, configure, answer, comment, grade, and help icons.

Sub qhead, ahead, chead
These three processes label the headings, above the scroll windows on the interface.

Sub user_info
User_info stores all of the user information including the class that they are in, in an array called user_info.

Sub questionf
The class_name and user_id are taken from user_info. Statement id, Parent id and subject are queried from the info table where class is the $user_class and the statement type is a is Q for question.

 Since the statement id and parent id are not available until a question is selected two slots are reserved for them in the array and removed when they are added.

 A counter is incremented for each row in the questions column that satisfies the is returned by the query. The counter is incremented by one and tagged to a reference. Each question is number in sequence. They are displayed in order to the question frame of the main.html. (STDOUT)

Sub answerf and commentf
These two functions use the same mechanics as sub questionf, except they are displayed in their appropriate frames. (STDOUT)

Sub bodyf
Bodyf works the same as questionf as well, however it is text, that is not tagged to any reference.

 Sub mainf
Mainf is a html code that generates the foundation of frames that question, answer, comment and body use to display their individual data.

 
XI. Testing

 XII. Developmental Methodology

 Our code is written in CGI and perl. The CGI script is only to gather information from the interface at the initial login. All other CGI is contain within a Perl script. The queries are performed in standard SQL. The database that we are using is Posgress. The SQL queries can be performed by any database that supports standard SQL. The software could be tweeked to run faster on a database that supported greater fuctionality. However this would mean serious revamping of the code, the benefit of the code the way that it is written is that, it is not database specific.