ngƣời dùng khi ngƣời dùng đã tham gia và hoàn thành cuộc khảo sát.
3.1. Phân tích và thiết kế
3.1.1. Quy trình tạo công cụ chuẩn hóa dữ liệu câu hỏi theo chuẩn QTI. QTI.
Đầu vào của công cụ: là tập các câu hỏi khảo sát đƣợc soạn thảo trên Microsoft Word (phiên bản Word 2007).
Đầu ra của công cụ: Xuất các câu hỏi khảo sát sang định dạng file .xml theo chuẩn QTI.
Để tạo đƣợc bộ công cụ theo yêu cầu ta cần xác định rõ qua 3 bƣớc sau:
Bƣớc 1: Xác định yêu cầu bài toán:
Để tạo đƣợc công cụ, đầu tiên ta cần phải xác định đƣợc yêu cầu của ngƣời sử dụng. Yêu cầu của ngƣời dùng là cần tạo ra một công cụ chuẩn hóa dữ liệu đáp ứng đƣợc yêu cầu:
+ Soạn thảo câu hỏi nhanh, tiện lợi. + Dễ cài đặt, dễ sử dụng
+ Không cần sử dụng kết nối mạng Internet để soạn thảo câu hỏi cho cuộc khảo sát.
+ Xuất ra đƣợc định dạng file .xml để cập nhật các câu hỏi khảo sát vào hệ thống.
+ Có cơ chế cảnh báo lỗi cho ngƣời dùng khi sử dụng sai định dạng, đảm bảo không bị lỗi khi chạy.
Từ những yêu cầu trên ta tiến hành mô tả sơ lƣợc công cụ mới. Để soạn thảo câu khảo sát nhanh, ta có thể sử dụng trình soạn thảo Microsoft Word. Vì vậy công cụ đƣợc tạo ra nên là add-in của Microsoft Word.
Bƣớc 2: Xác định định dạng file để cập nhật dữ liệu vào hệ thống.
Để có thể cập nhật các câu hỏi khảo sát vào hệ thống khảo sát, hệ thống cần cập nhật với định dạng file .lss.
Để làm đƣợc điều đó từ công cụ mới tạo, ta cần xuất các câu hỏi khảo sát ra định dạng các file .xml. Từ file .xml ta chuyển thành file .lss để cập nhật dữ liệu câu hỏi vào hệ thống cho phù hợp yêu cầu của hệ thống.
Bƣớc 3: Hoàn thành công cụ
Sau khi xác định đƣợc các yêu cầu của bộ công cụ chuẩn hóa dữ liệu câu hỏi, ta tiến hành tạo xây dựng bộ công cụ.
Các bƣớc để thực hiện tạo bộ công cụ chuẩn hóa dữ liệu câu hỏi:
Công cụ đƣợc xây dựng bằng ngôn ngữ Visual Basic và sử dụng IDE Microsoft Visual Basic để phát triển. Bao gồm hai phần:
Phần 1: Là thƣ mục xml-question:
Dùng để chứa các tệp tin .xml gồm có: main.xml, survey.xml, survey_setting.xml, group.xml, question.xml, answer.xml, subquestion.xml,
Bắt đầu Xác định yêu cầu bài toán Tạo thƣ mục .xml question Tạo tệp tin temp.dotm Hoàn thành bộ công cụ
question_attributes_G.xml, question_attributes_L.xml, question_attributes_M.xml, question_attributes_Q.xml, question_attributes_R.xml, question_attributes_S.xml, question_attributes_T.xml, question_attributes_Y.xml, question_lattributes_O.xml
là các định dạng nhằm giúp ta tạo thành một tệp tin .lss hoàn chỉnh tƣơng ứng với khảo sát mà ta muốn tạo.
Phần 2 là: file Template.dotm
Bao gồm các Marco có sẵn để tạo tiêu đề cho khảo sát, các nhóm câu hỏi, câu trả lời, câu hỏi con.
Phần 1. Tạo các tệp tin .xml * Tạo tệp tin mail.xml
Chứa phần khung cho một khảo sát ở định dạng xml có một nút cha (document) và nó bao gồm các nút con: LimeSurveyDocType, DBVersion, languages, answer, groups, question, subquestions, question_attributes, surveys, surveys_languagesettings .
LimeSurveyDocType: chỉ định loại tài liệu. Vì chúng ta muốn tạo khảo sát nên mặc định giá trị ở đây sẽ là Survey (khảo sát).
DBVersion: phiên bản của cơ sở dữ liệu. Mặc định là 155 đối với phiên bản 1.92+ mà ta đang thực hiện.
Languages: ngôn ngữ đƣợc sử dụng cho khảo sát. Lấy hai chữ cái đầu của ngôn ngữ ta chọn. Ví dụ: en (English), vi (Vietnamese).
answers: nút này chứa tất cả các câu trả lời cho mỗi câu hỏi có trong khảo sát. Nó gồm hai nút con fields (các trƣờng) và rows (các hàng).
Fields (các trƣờng) quy định các trƣờng sẽ phải có trong một câu trả lời và nó chứa nhiều nút con fieldname (tên trƣờng). Giá trị của các fieldname (tên trƣờng) lần lƣợt là: qid (mã của câu hỏi chứa câu trả lời này), code (mã
của câu trả lời), answer (câu trả lời), sortorder (thứ tự của câu trả lời trong câu hỏi chứa nó), language (ngôn ngữ sử dụng cho câu trả lời này).
Rows (các hàng) là nút sẽ chứa các row (hàng) tƣơng ứng với từng câu trả lời.
Groups: các nhóm trong khảo sẽ đƣợc lƣu giữ tại nút này. Cũng giống nhƣ nút answers (các câu trả lời) nút groups (các nhóm) chứa hai nút con fields (các trƣờng) và rows (các hàng).
Fields (các trƣờng) quy định các trƣờng sẽ phải có trong cho một nhóm và nó chứa nhiều nút con fieldname (tên trƣờng). Giá trị của các fieldname (tên trƣờng) lần lƣợt là: gid (mã nhóm), sid (mã khảo sát chứa nhóm này), group_name (tên hay tiêu đề của nhóm), group_order (thứ tự của nhóm trong khảo sát), description (mô tả về nhóm), language (ngôn ngữ sử dụng cho nhóm này), randomization_group (tính ngẫu nhiên).
Rows (các hàng) là nút sẽ chứa các row (hàng) tƣơng ứng với từng nhóm.
question: nút lƣu giữ tất cả các câu hỏi có trong khảo sát. Hai nút con của nút này cũng là fields (các trƣờng) và rows (các hàng).
Fields (các trƣờng) chứa các nút con fieldname (tên trƣờng) có giá trị lần lƣợt là:
qid (mã câu hỏi), parent_qid (mã của câu hỏi cha), sid (mã khảo sát chứa câu hỏi), gid (mã nhóm chứa câu hỏi), type (mã kiểu câu hỏi), question (nội dung câu hỏi), help (trợ giúp cho câu hỏi), other (có lựa chọn other (lựa chọn khác) làm câu trả lời hay không), mandatory (câu hỏi có bắt buộc trả lời hay không), question_order (thứ tự câu hỏi trong mỗi nhóm), language (ngôn ngữ sử dụng cho câu hỏi).
subquestions: nút lƣu giữ quy định về thuộc tính cũng nhƣ tất cả các câu hỏi con có trong mỗi câu hỏi trong khảo sát. Hai nút con của nút này cũng là fields (các trƣờng) và rows (các hàng).
Fields (các trƣờng) chứa các nút con fieldname (tên trƣờng) với mỗi nút con đó chứa giá trị qid (mã câu hỏi), parent_qid (mã của câu hỏi cha), sid (mã khảo sát chứa câu hỏi), gid (mã nhóm chứa câu hỏi), type (mã kiểu câu hỏi), question (nội dung câu hỏi), help (trợ giúp cho câu hỏi), other (có lựa chọn other (lựa chọn khác) làm câu trả lời hay không), mandatory (câu hỏi có bắt buộc trả lời hay không), question_order (thứ tự câu hỏi trong mỗi nhóm), language (ngôn ngữ sử dụng cho câu hỏi).
Rows (các hàng) là nút sẽ chứa các row (hàng) tƣơng ứng với từng câu hỏi.
* Tệp tin survey.xml:
Tệp tin có nút row (hàng) chứa các nút con: sid (mã khảo sát), admin (tên của ngƣời quản lý), expires (thời gian mà khảo sát mãn hạn), startdate (ngày bắt đầu khảo sát), adminemail (email của ngƣời quản lý), anonymized (cho phép ẩn danh thực hiện khảo sát hay không), faxto (fax của ngƣời quản lý), template (mã của mẫu thực hiện khảo sát).
*Tệp tin survey_setting.xml
Tệp tin có nút row (hàng) chứa các nút con: surveyls_survey_id(mã khảo sát), surveyls_language (ngôn ngữ sử dụng trong khảo sát), surveyls_title (tiêu đề của khảo sát), surveyls_description (mô tả về khảo sát),
surveyls_welcometext (thông báo chào mừng), surveyls_endtext (thông báo kết thúc khảo sát).
*Tệp tin group.xml: dùng để thiết lập các thông tin về nhóm câu hỏi khảo sát.
Tệp tin có nút row (hàng) chứa các nút con: gid (mã nhóm), sid (mã khảo sát chứa nhóm này), group_name (tên hay tiêu đề của nhóm), group_order (thứ tự của nhóm trong khảo sát), description (mô tả về nhóm), language (ngôn ngữ sử dụng cho nhóm này), randomization_group (tính xuất hiện ngẫu nhiêu của nhóm).
Mã lệnh file group.xml nhƣ sau: <?xml version="1.0"?> <group> <row> <gid> <![CDATA[11]]> </gid> <sid> <![CDATA[64188]]> </sid> <group_name> <![CDATA[Group One]]> </group_name> <group_order> <![CDATA[0]]> </group_order> <description> <![CDATA[]]> </description> <language> <![CDATA[en]]> </language> <randomization_group> <![CDATA[]]> </randomization_group> <grelevance> <![CDATA[]]>
</row> </group>
Tệp tin question.xml
Tệp tin có nút row(hàng) chứa các nút con: qid (mã câu hỏi), parent_qid (mã của câu hỏi cha), sid (mã khảo sát chứa câu hỏi), gid (mã nhóm chứa câu hỏi), type (mã kiểu câu hỏi), question (nội dung câu hỏi), help (trợ giúp cho câu hỏi), other (có lựa chọn other (lựa chọn khác) làm câu trả lời hay không), mandatory (câu hỏi có bắt buộc trả lời hay không), question_order (thứ tự câu hỏi trong mỗi nhóm), language (ngôn ngữ sử dụng cho câu hỏi).
Mã lệnh tệp tin Question.xml: <?xml version="1.0"?> <question> <row> <qid> <![CDATA[41]]> </qid> <parent_qid> <![CDATA[0]]> </parent_qid> <sid> <![CDATA[64188]]> </sid> <gid> <![CDATA[11]]> </gid> <type> <![CDATA[L]]> </type> <title> <![CDATA[1234]]> </title>
<![CDATA[Ban la ai]]> </question> <preg> <![CDATA[]]> </preg> <help> <![CDATA[]]> </help> <other> <![CDATA[N]]> </other> <mandatory> <![CDATA[N]]> </mandatory> <question_order> <![CDATA[0]]> </question_order> <language> <![CDATA[en]]> </language> <scale_id> <![CDATA[0]]> </scale_id> <same_default> <![CDATA[0]]> </same_default> <relevance> <![CDATA[1]]> </relevance> </row> </question>
Tệp tin answer.xml:
Tệp tin có nút row (hàng) chứa các nút con: qid (mã của câu hỏi chứa câu trả lời đƣợc tạo), code (mã của câu trả lời), answer (nội dung câu trả lời), sortorder (thứ tự của câu trả lời trong câu hỏi chứa nó), language (ngôn ngữ sử dụng cho câu trả lời này).
Mã lệnh của tệp answer.xml: <?xml version="1.0"?> <answer> <row> <qid>41></qid> <code>22</code> <answer>Khongbiet</answer> <assessment_value>0</assessment_value> <sortorder>1</sortorder> <language>en</language> <scale_id>0</scale_id> </row> </answer> Tệp tin subquestion.xml:
Tệp tin có nút row (hàng) chứa các nút con: qid (mã câu hỏi), parent_qid (mã của câu hỏi cha), sid (mã khảo sát chứa câu hỏi), gid (mã nhóm chứa câu hỏi), type (mã kiểu câu hỏi), question (nội dung câu hỏi), help (trợ giúp cho câu hỏi), other (có lựa chọn other (lựa chọn khác) làm câu trả lời hay không), mandatory (câu hỏi có bắt buộc trả lời hay không), question_order (thứ tự câu hỏi trong mỗi nhóm), language (ngôn ngữ sử dụng cho câu hỏi).
Mã lệnh tệp tin subquestion.xml nhƣ sau: <?xml version="1.0"?>
<subquestion> <row>
<qid>41</qid> <parent_qid>
<![CDATA[84]]> </parent_qid> <sid>64188</sid> <gid> <![CDATA[34]]> </gid> <type> <![CDATA[T]]> </type> <title> <![CDATA[SQ002]]> </title> <question> <![CDATA[23]]> </question> <preg> <![CDATA[]]> </preg> <help> <![CDATA[]]> </help> <other> <![CDATA[N]]> </other> <mandatory> <![CDATA[]]> </mandatory> <question_order> <![CDATA[1]]> </question_order> <language> <![CDATA[en]]> </language>
</scale_id> <same_default> <![CDATA[0]]> </same_default> <relevance> <![CDATA[]]> </relevance> </row> </subquestion>
Phần 2. Tạo file .dotm để chứa các Marco dùng để tạo tiêu đề khảo sát, các nhóm câu hỏi, câu trả lời, câu hỏi con.
Mở Microsoft Word (ở đây chúng ta sử dụng Microsoft Word 2007). Chọn Save As. Chọn Save as type: Word Marco-Enabled Template (*.dotm). Lƣu file .dotm mới tạo là: Template.dotm
Tạo các Marco giúp tạo tiêu đề khảo sát, các nhóm câu hỏi, câu trả lời, câu hỏi con.
Ví dụ: tạo Marco SurveyTitle:
View chọn hộp thoại Macros/View Macros. Đặt Macro Name là AddSurveyTitle chọn Create. IDE Microsoft Visual Basic đƣợc mở ra.
Thêm vào những dòng mã sau và lƣu lại:
Const Style_SurveyTitle = “SurveyTitle” Sub AddSurveyTitle()
AddParagraphOfStyle Style_SurveyTitle, "Survey Title" End Sub
Nhƣ vậy marco SurveyTitle đã đƣợc tạo. Tƣơng tự nhƣ vậy ta tạo các Marco khác: Answer, Group, Subquestion…
Ngoài các macro trên ta tạo thêm macro Export nhằm xuất tệp tin đã đƣợc soạn thảo trên Word thành tệp tin với định dạng .xml. Ý tƣởng chung về cách tạo macro này nhƣ sau:
Đọc từ đầu đến cuối tệp tin đã đƣợc tạo mà chứa các kiểu đoạn văn bản đƣợc tạo ra nhờ các macro (vừa đƣợc tạo ở trên). Khi gặp đoạn văn bản ta xác định kiểu của đoạn văn bản đó lấy nội dung của nó ghi vào nút:
Surveyls_title của tệp tin survey_setting.xml nếu kiểu của nó là SurveyTitle
Group_name của tệp tin group.xml nếu kiểu của nó là Group.
Question của tệp tin question.xml nếu kiểu của nó là một trong các kiểu câu hỏi.
Question của tệp tin subquestion.xml nếu kiểu của nó là Subquestion. Answer của tệp tin answer.xml nếu kiểu của nó là Answer.
Về ƣu điểm của công cụ mới:
Việc tạo công cụ mới giúp ngƣời dùng có thêm một cách soạn thảo các câu hỏi khảo sát đƣợc thuận lợi hơn, dễ cài đặt, dễ sử dụng hơn so với cách tạo câu hỏi khảo sát cũ.
- Công cụ mới giúp tạo dữ liệu câu hỏi khảo sát nhanh hơn:
Việc thực hiện soạn thảo câu hỏi cho một cuộc khảo sát trực tuyến trên hệ thống Limesurvey ngoài việc phải thiết lập chung cho các cuộc khảo sát mới, ít nhất ta phải thực hiện qua 4 bƣớc là thêm câu hỏi mới, nhập câu hỏi, chọn lựa dạng câu hỏi và các phƣơng án trả lời câu hỏi khảo sát. Việc tạo câu hỏi khảo sát trong Limesurvey còn cần phải kết nối tới hệ thống, các yêu cầu thực hiện đều đƣợc gửi về hệ thống và chờ hệ thống phản hồi lại.
- Công cụ mới thuận lợi, dễ sử dụng hơn các công cụ cũ:
Nhƣ ta đã biết, để tạo trực tiếp các câu hỏi trên Limesurvey cần phải sử dụng Internet để kết nối trực tiếp tới hệ thống. Việc tạo một cuộc khảo sát với số lƣợng câu hỏi khảo sát lớn sẽ gặp nhiều khó khăn. Từ đó đã gây nhiều giới hạn, khó khăn cho ngƣời dùng. Tuy nhiên với công cụ mới việc phụ thuộc
khi đƣa quản trị hệ thống upload các câu hỏi khảo sát lên hệ thống. Ngoài ra, ngƣời dùng có thể tạo nhiều cuộc khảo sát sau đó sẽ tiến hành upload lên hệ thống.
Trong Limesurvey chỉ có một số ngƣời dùng (với phân quyền là Admin, Create Survey) mới có thể tạo các câu hỏi cho một cuộc khảo sát. Việc nhiều ngƣời dùng đƣợc phân quyền này sẽ ảnh hƣớng tới việc đảm bảo an toàn bảo mật của hệ thống.
Sử dụng công cụ mới sẽ giúp ngƣời dùng tạo các câu hỏi một cuộc khảo sát (hoặc nhiều cuộc khảo sát) sau đó gửi cho ngƣời quản trị hệ thống upload lên giúp cho việc đảm bảo và tăng tính bảo mật cho hệ thống hơn.
Công cụ mới sử dụng trình soạn thảo Microsoft Word trong đó sử dụng các marco để tạo tiêu đề của các dạng câu hỏi, câu trả lời cho cuộc khảo sát. Sau khi tạo nội dung câu hỏi khảo sát, việc xuất dữ iệu ra định dạng file .xml tuân theo chuẩn QTI là đơn giản, dễ thực hiện.
3.1.2. Chức năng khảo sát tích điểm thƣởng
Chức năng khảo sát tích điểm thƣởng nhằm khuyến khích ngƣời tham gia khảo sát trả lời tất cả các câu hỏi của cuộc khảo sát, tham gia các cuộc khảo sát khác. Với mỗi một cuộc khảo sát, ngƣời quản trị hệ thống sẽ thiết lập điểm thƣởng cho cuộc khảo sát, tùy vào mục đích, mức độ yêu cầu, kinh phí để thực hiện một cuộc khảo sát mà công ty, tổ chức…cần thu thập thông tin, ý kiến của ngƣời tham gia khảo sát.
Điểm thƣởng của ngƣời tham gia khảo sát chỉ đƣợc tính sau khi ngƣời tham gia khảo sát hoàn thành trả lời các câu hỏi của cuộc khảo sát. Kết thúc một cuộc khảo sát, ngƣời tham gia khảo sát có thể thực hiện tham gia các cuộc khảo sát khác mà hệ thống đang tiến hành khảo sát thông tin.
Khi tích lũy đƣợc một mức điểm thƣởng nào đó, ngƣời tham gia khảo sát thực hiện quy đổi từ điểm thƣởng trong tài khoản của mình để lấy các phần quà, sản phẩm, hay tiền mặt với giá trị tƣơng ứng với điểm thƣởng đã tích lũy. Hệ thống sẽ thực hiện quy đổi theo yêu cầu của ngƣời tham gia và lƣu thông tin, số điểm thƣởng mà ngƣời tham gia khảo sát đã quy đổi. Đồng thời sẽ trừ số điểm thƣởng đã đƣợc quy đổi mà ngƣời tham gia khảo sát đã tích lũy.