Drupal Survey
Software Requirements Specification
1.0
29/10/2009
Chris Pryor
Principal Project Manager
Software Requirements Specification Survey Module
Revision History
Date
Description
Author
Comments
5/11/2009 Version 1
Chris Pryor
draft
Document Approval
The following Software Requirements Specification has been accepted and approved by the
following:
Signature
Printed Name
Title
Date
Software Requirements Specification Survey Module
Table of Contents
REVISION HISTORY................................................................................................................................................II
DOCUMENT APPROVAL.........................................................................................................................................II
1. INTRODUCTION.....................................................................................................................................................1
1.1 PURPOSE..................................................................................................................................................................1
1.2 SCOPE.....................................................................................................................................................................1
1.3 DEFINITIONS, ACRONYMS, AND ABBREVIATIONS............................................................................................................1
1.4 REFERENCES............................................................................................................................................................1
1.5 OVERVIEW...............................................................................................................................................................1
2. GENERAL DESCRIPTION....................................................................................................................................1
2.1 PRODUCT PERSPECTIVE..............................................................................................................................................1
2.2 PRODUCT FUNCTIONS................................................................................................................................................2
2.3 USER CHARACTERISTICS............................................................................................................................................2
2.4 GENERAL CONSTRAINTS.............................................................................................................................................2
2.5 ASSUMPTIONS AND DEPENDENCIES..............................................................................................................................2
3. SPECIFIC REQUIREMENTS................................................................................................................................2
3.1 EXTERNAL INTERFACE REQUIREMENTS.........................................................................................................................2
3.1.1 User Interfaces.............................................................................................................................................2
3.1.2 Hardware Interfaces....................................................................................................................................2
3.1.3 Software Interfaces......................................................................................................................................2
3.1.4 Communications Interfaces..........................................................................................................................3
3.2 FUNCTIONAL REQUIREMENTS......................................................................................................................................3
3.2.1 Create Drupal Survey Node.........................................................................................................................3
3.2.2 Update Drupal Survey Node........................................................................................................................3
3.2.3 Create Survey Item Node.............................................................................................................................3
3.2.4 Update Survey Item Node.............................................................................................................................4
3.2.5 Add an Item to a Survey...............................................................................................................................4
3.2.6 Reorder an Item in a Survey.........................................................................................................................4
3.2.7 Remove an Item from a Survey.....................................................................................................................4
3.2.8 Add an Item to a Section Item (including derivatives Loop and Compound Page)..................................5
3.2.9 Reorder an Item in a Section Item (including derivatives Loop and Compound Page)............................5
3.2.10 Remove an Item from a Section Item (including derivatives Loop and Compound Page)......................5
3.2.11 Invite Users to a Survey.............................................................................................................................5
3.2.12 Start User Interview...................................................................................................................................6
3.2.13 Process Survey Item...................................................................................................................................6
3.2.14 Go to next Survey Page..............................................................................................................................6
3.2.15 Check Question Progress...........................................................................................................................7
3.2.16 Download Data..........................................................................................................................................7
3.3 USE CASES..............................................................................................................................................................7
3.3.1 Use Case #1..................................................................................................................................................7
3.3.2 Use Case #2..................................................................................................................................................7
3.4 CLASSES / OBJECTS..................................................................................................................................................7
3.4.1 Survey...........................................................................................................................................................7
3.4.2 Item (template).............................................................................................................................................8
3.4.3 Response List................................................................................................................................................8
3.4.4 Response Container (child of Item) (template)............................................................................................9
3.4.5 Question (child of Response Container)......................................................................................................9
Software Requirements Specification Survey Module
3.4.6 Grid Question (child of Question).............................................................................................................10
3.4.7 Text Substitute (child of Response Container)...........................................................................................10
3.4.8 Grid Text Substitute (child of Text Substitute)...........................................................................................10
3.4.9 Mask (child of Text Substitute)...................................................................................................................11
3.4.10 Grid Mask (child of Grid Text Substitute)...............................................................................................11
3.4.11 Skip (child of Text Substitute)..................................................................................................................11
3.4.12 Grid Skip (child of Skip)...........................................................................................................................11
3.4.13 Section (child of Item)..............................................................................................................................11
3.4.13 Loop (child of Section).............................................................................................................................12
3.4.13 Compound Page (child of Section)..........................................................................................................12
3.4.14 Instruction (child of Item)........................................................................................................................12
3.4.15 Clear Mask (child of Item).......................................................................................................................12
3.4.15 Survey End (child of Instruction).............................................................................................................13
3.4.16 Question Mask (child of Mask)................................................................................................................13
3.5 NONFUNCTIONAL REQUIREMENTS............................................................................................................................13
3.5.1 Performance...............................................................................................................................................13
3.5.2 Reliability...................................................................................................................................................13
3.5.3 Availability.................................................................................................................................................13
3.5.4 Security.......................................................................................................................................................13
3.5.5 Maintainability...........................................................................................................................................13
3.5.6 Portability..................................................................................................................................................13
3.6 INVERSE REQUIREMENTS..........................................................................................................................................13
3.7 DESIGN CONSTRAINTS.............................................................................................................................................13
3.8 LOGICAL DATABASE REQUIREMENTS.........................................................................................................................13
3.9 OTHER REQUIREMENTS............................................................................................................................................13
4. CHANGE MANAGEMENT PROCESS..............................................................................................................14
Software Requirements Specification Survey Module
Drupal Survey
1. Introduction
1.1 Purpose
This is a specification of a Drupal Survey Module, used to collect information from the users of a
Drupal site for Psychological, Social or Market Research purpose. The Survey module will
allow privileged users of the site where this module is enabled to create a survey, consisting of
multiple pages and flow control, which other nonprivileged users will complete.
1.2 Scope
Survey Module For Drupal CMS
This module will collect data from Drupal users via an online survey, and provide the means to
either download the data in a format suitable for further offline analysis or provide a mechanism
to manipulate the data further.
This module will not (initially) provide reports beyond that of the frequency of responses to each
question and will not in an of itself provide tools to analyse the data collected.
1.3 Definitions, Acronyms, and Abbreviations
CMS – Content Management System
Rotation – The first displayed response in an answer to a question or item within a container is
moved to the end of the list for the subsequent survey respondent. The 'new' first displayed
response/item will in it's turn be moved to the end and so forth.
1.4 References
None
1.5 Overview
At the moment only high level function requirements and class definitions are included
2. General Description
2.1 Product Perspective
There are a number of commercial and open source solutions for a web based system for
gathering social and research quantitative data via online surveys. Examples of the former are
ConfirmIT and SurveyWriter and an example of the latter is Limesurvey. Most of these have
limitations of one sort or another, such as being too complex for end uses, not flexible enough to
cope with nonstandard survey layouts or problematic GUI work flows.
The Drupal CMS due to is modular nature and open architecture would provide a good basis for
Software Requirements Specification
Page 1
Drupal Survey
the creation of an open, extensible and user friendly alternative to the current survey software in
existence.
As such this is a specification of a Drupal module that will provide survey authoring and data
collection functions for that web platform.
2.2 Product Functions
The module will provide an ability for a user to add a survey to a Drupal site, create questions,
instructions and stimuli presentations for that survey, invite other Drupal users to complete the
survey (via email) and download the data associate with that survey.
The survey will consist of a number of independent pages which the user completing the survey
will move through utilising navigation buttons to move forward and backwards through the
survey, although it should be possible to block the users from moving backwards and allow
timed presentation of stimuli before moving forwards.
It will be possible to alter the flow of the survey, as well as the layout and text of the questions
based upon a users responses to previous questions in the survey.
2.3 User Characteristics
Researcher: The ability to add and edit their own survey.
Respondent: Can only complete surveys.
2.4 General Constraints
Operates as a module within Drupal
2.5 Assumptions and Dependencies
The software will operate in the context of the Drupal CMS, thus a working installation of
Drupal is assumed, independent of platform.
3. Specific Requirements
3.1 External Interface Requirements
3.1.1 User Interfaces
Web Browser
3.1.2 Hardware Interfaces
Desktop
Server
3.1.3 Software Interfaces
Drupal API
Software Requirements Specification
Page 2
Drupal Survey
Sections module to provide custom theme's for each survey
User Import Module to upload Respondents
3.1.4 Communications Interfaces
HTTP
3.2 Functional Requirements
3.2.1 Create Drupal Survey Node
3.2.1.1 Introduction
Privileged users (Researchers) can create a survey node in Drupal. This can contain any number
of survey items which form the questions asked in the survey as well as define the layout of the
survey pages and flow of the survey through the survey questions.
3.2.1.2 Inputs
Signal to create Survey Node
3.2.1.3 Processing
Create Survey node and associated data structures with default values
3.2.1.4 Outputs
Survey Node
3.2.2 Update Drupal Survey Node
3.2.2.1 Introduction
Privileged users (Researchers) can update the configuration values of the survey
3.2.2.2 Inputs
Updated values for Survey Node (Intro Text etc. see survey class)
3.2.2.3 Processing
Update Survey node and associated data structures
3.2.2.4 Outputs
Return code indicating success or failure
3.2.3 Create Survey Item Node
3.2.3.1 Introduction
Privileged users (Researchers) can create a Survey Item node in Drupal. These are the entities
that will form the content of the survey and control the display and flow of the survey. They
are:
Question: Displays a question and defines the data associated with that question.
Skip: Alters the normal flow of the survey jumping either forward of back to a particular item
Mask: Based upon a previous questions data, sets or updates a mask data structure that will alter
the display of subsequent questions so some of the response options do not appear, there is also
an item that will reset this data structure.
Substitute: Sets up some substitution text based upon responses to a previous question. This
will replace marked up text when a question is displayed.
There are also ��Grid�� versions of these Items (I may collapse these back into the base types for
better usability)
Section: An item which contains other items which can be displayed in a random order.
Software Requirements Specification
Page 3
Drupal Survey
Loop: An extension of a section which repeats the items within it.
Compound Page: An extension of Section that displays all the questions within it on the same
page .
Instruction: Displays instructions (including possibly images, video or other Drupal node types).
3.2.3.2 Inputs
Signal to create Survey Item Node
3.2.3.3 Processing
Create Survey Item node and associated data structures with default values
3.2.3.4 Outputs
Survey Item Node
3.2.4 Update Survey Item Node
3.2.4.1 Introduction
Privileged users (Researchers) can update the configuration values of the survey Item.
3.2.4.2 Inputs
Updated values for Survey Item Node.
3.2.4.3 Processing
Update Survey Item node and associated data structures. Response List (lists of Question
Responses and Associated Numeric codes) objects (nodes?) can be created or existing ones
assigned to the item as part of this process (Question, Skip, Mask, Substitute and Loop items)
3.2.4.4 Outputs
Return code indicating success or failure
3.2.5 Add an Item to a Survey
3.2.5.1 Introduction
Privileged users (Researchers) can add a Survey Item to a Survey.
3.2.5.2 Inputs
Survey Item Node ID and list order.
3.2.5.3 Processing
Add the Survey Items ID to the Surveys Items List in the appropriate place.
3.2.5.4 Outputs
Return code indicating success or failure.
3.2.6 Reorder an Item in a Survey
3.2.6.1 Introduction
Privileged users (Researchers) can reorder a Survey Item in a Survey.
3.2.6.2 Inputs
Survey Item Node ID and order.
3.2.6.3 Processing
Move the Survey Items ID to the appropriate place in the List.
3.2.6.4 Outputs
Return code indicating success or failure.
3.2.7 Remove an Item from a Survey
3.2.7.1 Introduction
Privileged users (Researchers) can remove a Survey Item from a Survey.
Software Requirements Specification
Page 4
Drupal Survey
3.2.7.2 Inputs
Survey Item Node ID.
3.2.7.3 Processing
Remove the Survey Items ID from the Surveys Items List.
3.2.7.4 Outputs
Return code indicating success or failure.
3.2.8 Add an Item to a Section Item (including derivatives Loop and Compound Page)
3.2.8.1 Introduction
Privileged users (Researchers) can add a Survey Item to a Section Item.
3.2.8.2 Inputs
Survey Item Node ID and order.
3.2.8.3 Processing
Add the Survey Items ID to the Section Items' ��Section Items List�� in the appropriate place.
3.2.8.4 Outputs
Return code indicating success or failure.
3.2.9 Reorder an Item in a Section Item (including derivatives Loop and Compound Page)
3.2.9.1 Introduction
Privileged users (Researchers) can reorder a Survey Item in a Section Item.
3.2.9.2 Inputs
Survey Item Node ID and order.
3.2.9.3 Processing
Move the Survey Items ID to the appropriate place in the List.
3.2.9.4 Outputs
Return code indicating success or failure.
3.2.10 Remove an Item from a Section Item (including derivatives Loop and Compound
Page)
3.2.10.1 Introduction
Privileged users (Researchers) can remove a Survey Item from a Section Item.
3.2.10.2 Inputs
Survey Item Node ID.
3.2.10.3 Processing
Remove the Survey Items ID from the Section Items' ��Section Items List��.
3.2.10.4 Outputs
Return code indicating success or failure.
3.2.11 Invite Users to a Survey
3.2.11.1 Introduction
Privileged users (Researchers) can invite other users into a survey.
3.2.11.2 Inputs
User Table fields for email and survey qualification.
3.2.11.3 Processing
Send an email to a users email address if they qualify for the survey, this email will include a
Software Requirements Specification
Page 5
Drupal Survey
direct link to the survey including login credentials if necessary.
3.2.11.4 Outputs
Return code indicating success or failure.
3.2.12 Start User Interview
3.2.12.1 Introduction
When an unprivileged user (Respondent) enters the survey the interview is started.
3.2.12.2 Inputs
User ID.
3.2.12.3 Processing
Create state data for user and display introductory text. This page will also allow the users to re
enter previous interviews if that is enabled. If an interview is not completed the user will be
redirected to the latest incomplete Item.
3.2.12.4 Outputs
State Data for interview.
3.2.13 Process Survey Item
3.2.13.1 Introduction
Process the survey item the Respondent is directed to.
3.2.13.2 Inputs
Item ID, Indication if moving backwards through survey.
3.2.13.3 Processing
Process item specific code. This will be:
Question: Display question, Collect Respondent input.
Skip:Redirect to specific Item (or next Item)
Mask:Update state data.
Substitute:Update state data.
Section:Update state data.
Loop:Update state data.
Compound Page:Display all question and Instruction within Compound page and wait for user
input.
Instruction: Display question and wait for user input.
Survey End:Close interview and redirect.
Some operations will have to be reversed if moving backwards through survey
3.2.13.4 Outputs
Next Item ID or signal to go to next/previous survey page.
3.2.14 Go to next Survey Page
3.2.14.1 Introduction
Route Respondents through the Survey.
3.2.14.2 Inputs
Next Item ID or signal to go to next/previous survey page.
3.2.14.3 Processing
Determine the next or previous Item in the survey on appropriate signal. Extra processing at
Section and Loop boundaries, and if skips to an Item within a Compound Page will instead be
Software Requirements Specification
Page 6
Drupal Survey
directed to the Compound Page Item itself.
3.2.14.4 Outputs
Item ID, Indication if moving backwards through survey.
3.2.15 Check Question Progress
3.2.15.1 Introduction
Privileged users (Researchers) can check a Questions progress.
3.2.15.2 Inputs
Signal to check data for Item ID.
3.2.15.3 Processing
Retrieve all Responses to Question in current survey and Display.
3.2.15.4 Outputs
Return code indicating success or failure.
3.2.16 Download Data
3.2.10.1 Introduction
Privileged users (Researchers) can download the data collected by the survey.
3.2.10.2 Inputs
Signal to download data.
3.2.10.3 Processing
Extract survey data from Drupal Database into formatted file (Comma Separated Variable, SPSS
etc.).
3.2.10.4 Outputs
Link to data file.
3.3 Use Cases
3.3.1 Use Case #1
3.3.2 Use Case #2
3.4 Classes / Objects
* designates a function only available to Researchers
3.4.1 Survey
3.4.1.1 Attributes
Active – BOOLEAN – Users can only enter the survey if this is true.
Intro Text – Introductory Survey Text
Items – Ordered list of Items (nodes) in the survey
Repeated – Integer – Indicates how many times the survey can be completed by a respondent
(default 1)
Back Button – BOOLEAN – Indicates if the back button in visible (ie, the respondent can go
backwards through the survey, default TRUE)
Locked – BOOLEAN – Indicates if a user can go into a completed survey and change their
answers (default FALSE)
Software Requirements Specification
Page 7
Drupal Survey
//State data – stored per user/survey instance
Current Loop
Current Container
Current Question
+Current Mask – A list of code values which will be excluded from display in any question or
iterators in a loop
+Current Scale Mask – A list of values which will be excluded from display in any scale
+Current Question Mask – A list of items which will be excluded from display
+Current Substitutions – A list of text substitutions with associated codes which will be done
when a page is being displayed, based upon a marker within the text (say #1# to substitute the
code 1 value, escaped with \#)
3.4.1.2 Functions
+Add Survey Item – Add an item to the item list*
+Remove Survey Item – Remove an item from the item list*
+Reorder Survey Item – Reorder a list item*
+Download Data – Download the data collected by the survey*
+Update Repeated*
+Update Back Button*
+Update Intro Text*
+Start Survey
DisplayPage
The survey object will display each page of the survey by calling appropriate methods in each
item. Respondent users will not see masked questions, skips, masks or text substitutions
however the processes associated with these items will take place and the NextPage function
called automatically. Sections will have to have control passed to them?
NextPage
This handles Forward and Back Button functions
3.4.2 Item (template)
3.4.2.1 Attributes
~Item ID – Unique Identifier
~Timer – If nonzero displays the item for this many seconds before automatically going to the
next item (default 0)
3.4.2.2 Functions
+Update Item ID*
+Update Timer*
+Do Item Processing – Does whatever is needed to be done by this particular item.
3.4.3 Response List
Software Requirements Specification
Page 8
Drupal Survey
3.4.3.1 Attributes
Response List ID – Unique Identifier
List of Possible Responses STRING
Codes List of values associated with each response
3.4.3.2 Functions
Update Response List ID*
Add Response*
Remove Response*
3.4.4 Response Container (child of Item) (template)
3.4.4.1 Attributes
List of Response List – This class contains one or more ��Response List�� classes
3.4.4.2 Functions
+Add Response List – Adds new Response List to list, must ensure unique codes for all
responses (maybe?)
+Remove Response List
+Create Response List – Response List should be created via these objects/pages
3.4.5 Question (child of Response Container)
3.4.5.1 Attributes
Question Text
Required – BOOLEAN – is a response to this question required (default TRUE)
Order – Are the responses in the Response List's presented in order (default TRUE)
Random – BOOLEAN – Are the responses in the Response List's presented in a random or
rotated (default = TRUE)
Text Response – BOOLEAN – Indicates if the responses are open ended text or selected (ie.
Text box or check box/radio button). The letter code 0 or 1 in the database. (default FALSE)
Responses INTEGER– How may responses may be selected or contain a text response(default
= 0 which indicates any number)
//Additional attributes for Responses in response list – these are all compound variables mapped
back to the response codes
Specify – BOOLEAN This response is an ��Other/Specify��. If ��Text Response�� is FALSE and
text box will be displayed next to the response which will need to be filled in if the response is
selected (default FALSE)
Exclusive – BOOLEAN – If this response is selected or answered none of the other responses
may be (default FALSE)
3.4.5.2 Functions
Update/set the various attributes*
Software Requirements Specification
Page 9
Drupal Survey
Show responses* display data collected so far for this question
3.4.6 Grid Question (child of Question)
3.4.6.1 Attributes
Scale – List of ��Response List�� to use as the grid scale
Scale Responses INTEGER– How may scale items may be selected or contain a text response
across a single response(default = 0 which indicates any number)
Orthogonal – BOOLEAN – Normal a scale will appear across the top of the grid, if this is true it
will appear on the right side and the responses across the top (default FALSE)
3.4.6.2 Functions
Update/set the various attributes*
3.4.7 Text Substitute (child of Response Container)
3.4.7.1 Attributes
Base – A reference to the question or loop on which the text substitution is based, if the question
is inside a loop which the Object is not then the reference must include a loop value as well
//Additional attributes for Responses in response list – these are all compound variables mapped
back to the response codes
Update Target – INTEGER – The substitution value to be updated (default to Response List code
value)
Comparator – The value that the responses in base will be compared to
Operator '<' '>' '=' '!=' 'substring' – operator used in the comparison
Result – The string to be substituted (default to Response List text)
3.4.7.2 Functions
Update/set the various attributes*
+Update Current – Updates the Current Substitutions structure for any code : operator :
comparator equations found to be true.
3.4.8 Grid Text Substitute (child of Text Substitute)
3.4.8.1 Attributes
Scale – List of ��Response List�� to reference a grid scale
//Additional attributes for Responses in response list – these are all compound variables mapped
back to the response codes
Scale Value – The scale value the function corresponds to
3.4.8.2 Functions
Update/set the various attributes*
Software Requirements Specification
Page 10
Drupal Survey
+Update Current – Override to include grid values
3.4.9 Mask (child of Text Substitute)
Same as Text Substitute but updates the current mask
3.4.10 Grid Mask (child of Grid Text Substitute)
Ditto
3.4.11 Skip (child of Text Substitute)
3.4.11.1 Attributes
Targets – STRING – the Item ID that will be the next item for a given response in base, if null
string (default) go to next item normally
Result – Override (default to null)
3.4.11.2 Functions
Update Base*
Update Conditions*
Update Targets*
+Update Current – Override, go to item as specified in Targets if any condition resolve to true.
If Result is nonnull display that text at the beginning of the question
3.4.12 Grid Skip (child of Skip)
3.4.12.1 Attributes
Scale – List of ��Response List�� to reference a grid scale
//Additional attributes for Responses in response list – these are all compound variables mapped
back to the response codes
Scale Value – The scale value the function corresponds to
3.4.12.2 Functions
+Update Current – Override to include grid values
3.4.13 Section (child of Item)
3.4.13.1 Attributes
Section Items – Ordered list of Items (nodes) in the Section
Order – Are the items in the Section presented in order (default = TRUE)
Random – BOOLEAN – Are the items in the Section presented in a random or rotated (default =
TRUE)
Rotation Level – INTEGER – If items are rotated, used to determine what item in the rotation is
currently first
Software Requirements Specification
Page 11
Drupal Survey
Respondent Order – The order of items for each respondent
3.4.13.2 Functions
Update Order*
Update Random*
Add Section Item – Add an item to the container item list*
Remove Section Item – Remove an item to the container item list*
Reorder Section Item – Reorder a list item*
Reorder – Randomises or rotates the order of the items for each respondent if appropriate
Exit Section – Processing done when a section finishes
3.4.13 Loop (child of Section)
3.4.13.1 Attributes
Iterations – list of Response List – the codes in the response list will be iterated through
Iteration Order – Are the iterations presented in order (default TRUE)
Iteration Random – BOOLEAN – Are the Iteration presented in a random or rotated (default =
TRUE)
Current Iteration – INTEGER – code value of current iteration
3.4.13.2 Functions
Update/set the various attributes*
3.4.13 Compound Page (child of Section)
3.4.13.1 Attributes
3.4.13.2 Functions
Add Section Item – Override so that Sections, Loops and other pages can not be included in a
page*
3.4.14 Instruction (child of Item)
3.4.14.1 Attributes
Instruction Text
3.4.14.2 Functions
Update Instruction Text*
3.4.15 Clear Mask (child of Item)
3.4.14.1 Attributes
Software Requirements Specification
Page 12
Drupal Survey
3.4.14.2 Functions
3.4.15 Survey End (child of Instruction)
3.4.15.1 Attributes
Redirect – STRING – URL where users are send when they have completed the survey, this will
be the last page they see. It should be possible to include text substitutions and User fields in this
URL if necessary.
3.4.15.2 Functions
3.4.16 Question Mask (child of Mask)
Masks a question instead of a Response list item
3.5 NonFunctional Requirements
3.5.1 Performance
3.5.2 Reliability
3.5.3 Availability
3.5.4 Security
3.5.5 Maintainability
3.5.6 Portability
3.6 Inverse Requirements
Drupal Installation
3.7 Design Constraints
TBA
3.8 Logical Database Requirements
Drupal Supported
3.9 Other Requirements
None
Software Requirements Specification
Page 13
Drupal Survey
4. Change Management Process
Chaotic update via Internet
Software Requirements Specification
Page 14