袁曉敏,吳德操,萬 君,譚必玉,陳洪余
(1.重慶市教育評估院;2.重慶理工大學(xué) 電氣與電子工程學(xué)院,重慶 400020)
問卷調(diào)查是用于收集資料的一種常用工具,根據(jù)載體不同,可分為紙質(zhì)問卷填答和網(wǎng)絡(luò)問卷調(diào)查兩種形式。傳統(tǒng)紙質(zhì)問卷調(diào)查方式費時費力、效率低。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,網(wǎng)絡(luò)問卷調(diào)查以簡單、快速、跨地域的優(yōu)勢[1]被廣泛應(yīng)用于學(xué)術(shù)研究領(lǐng)域。
為滿足信息采集需求,很多單位和部門研究開發(fā)了問卷調(diào)查系統(tǒng)。例如,王君[2]為及時了解患者需求,為醫(yī)院改善醫(yī)療環(huán)境、提升服務(wù)質(zhì)量提供參考意見,開發(fā)了基于大數(shù)據(jù)技術(shù)的患者滿意度問卷調(diào)查系統(tǒng);李云皓等[3]針對“對分課堂”教學(xué)模式的學(xué)習(xí)效果進行調(diào)查,設(shè)計了基于Web 的在線問卷調(diào)查系統(tǒng),可使教師快速了解學(xué)生對課程的意見或建議;蔣艷華等[4]設(shè)計并實現(xiàn)了基于移動平臺的課程目標(biāo)達成度問卷調(diào)查系統(tǒng),該系統(tǒng)支持教師在線發(fā)布調(diào)查問卷,輕松了解學(xué)生對各知識點的掌握情況,有利于后續(xù)教學(xué)設(shè)計的優(yōu)化;陸毅等[5]從醫(yī)院管理的角度出發(fā)對各類學(xué)會和期刊進行分類,對常見學(xué)術(shù)任職進行整理,并借助問卷星平臺構(gòu)建了一套學(xué)術(shù)任職登記系統(tǒng)。
有別于一般的簡單社會調(diào)查,教育監(jiān)測領(lǐng)域觀察指標(biāo)維度豐富[6-7],調(diào)查對象復(fù)雜多樣,涉及學(xué)科門類眾多,網(wǎng)絡(luò)問卷調(diào)查的開展仍存在諸多難點,以上方法尚無法很好地解決。首先,大規(guī)模監(jiān)測中的教師問卷環(huán)節(jié)涉及角色眾多,且存在一人兼任多種角色的現(xiàn)象,不同角色組合需要完成的題目亦不相同。傳統(tǒng)解決方式是對角色進行各種組合,分別制定不同問卷,人為根據(jù)角色進行分發(fā)。這種方式過于依賴前期采集數(shù)據(jù),存在教師所答問卷與實際基本信息不相符的情況;而且問卷覆蓋范圍局限,容易造成兼任多角色的對象調(diào)查疏漏,這就要求網(wǎng)絡(luò)問卷調(diào)查系統(tǒng)具備問卷分發(fā)功能。此外,教育監(jiān)測問卷題庫按照系列觀測指標(biāo)與維度進行分組設(shè)置。在問卷填寫過程中,理想狀態(tài)是根據(jù)同一類角色的不同答題結(jié)果實時調(diào)整后續(xù)題組,從而實現(xiàn)調(diào)查結(jié)果的準(zhǔn)確性與全面性。以往的系統(tǒng)題組跳轉(zhuǎn)功能不夠完善,通常只能采用不分角色全題庫、多學(xué)科聯(lián)合調(diào)查的方式替代,極易造成受試者疲勞,系統(tǒng)使用滿意度低,短時間、大規(guī)模、多學(xué)科測評的教學(xué)評價難以實現(xiàn)?,F(xiàn)有商用問卷系統(tǒng)不能很好地滿足上述功能需求,且教育監(jiān)測數(shù)據(jù)具有保密性,故亟需設(shè)計一種適用于教育行業(yè)大規(guī)模監(jiān)測的專用問卷調(diào)查系統(tǒng)。
本課題組長期致力于大規(guī)模測試中問卷調(diào)查系統(tǒng)功能的研究,于2013 年提出一種支持邏輯跳轉(zhuǎn)與填答約束的網(wǎng)絡(luò)問卷調(diào)查系統(tǒng)實現(xiàn)方法[8]。該方法于2013-2017 年在重慶市基礎(chǔ)教育質(zhì)量監(jiān)測教師問卷調(diào)查中得到應(yīng)用。隨著計算機技術(shù)的發(fā)展,以及教育行業(yè)監(jiān)測需求及復(fù)雜程度的增加,課題組自2018 年起在已有功能的基礎(chǔ)上對系統(tǒng)進行了重構(gòu),作出以下改進:①基于指標(biāo)與題目之間的邏輯關(guān)系,在系統(tǒng)中根據(jù)指標(biāo)和觀測點對題目進行分類與層級管理;②增加大量新題型,題目和選項均采用富文本編輯,提高其趣味性和互動性;③在指標(biāo)和觀測點上設(shè)置觸發(fā)跳轉(zhuǎn)功能,分角色控制好題目分類。在測試過程中,以觀測點為最小單位,依據(jù)受試者已有的答案組合和觸發(fā)跳轉(zhuǎn)設(shè)置屬性自動邏輯判斷,動態(tài)跳轉(zhuǎn)至后續(xù)題組;④在題目作答校驗中,除提供單題校驗外,還增加多題聯(lián)合約束功能。如此以來,既能保證被試者在合理測試時間內(nèi)完成測驗,又能保證全面采集到有效數(shù)據(jù)。
本文結(jié)合2020 年和2022 年重慶市基礎(chǔ)教育質(zhì)量監(jiān)測教師問卷調(diào)查系統(tǒng)的設(shè)計與實現(xiàn),具體探討如何在網(wǎng)絡(luò)問卷調(diào)查系統(tǒng)中基于Angular 技術(shù)[9]實現(xiàn)多組合邏輯跳轉(zhuǎn)和多題聯(lián)合約束功能。
為方便管理與維護,將整個系統(tǒng)分為管理端和填答端,部分功能結(jié)構(gòu)如圖1 所示。管理端主要功能包括用戶登錄、角色管理、角色授權(quán)、功能管理、機構(gòu)管理、信息修改、項目管理、教師基本信息管理、學(xué)生基本信息管理、指標(biāo)設(shè)計、題目設(shè)計、問卷管理、問卷填答統(tǒng)計等。填答端界面自適應(yīng)手機、平板和電腦客戶端,支持微信認證登錄,主要功能包括發(fā)送驗證碼、用戶登錄、用戶測驗等。
Fig.1 System functional structure(partial)圖1 系統(tǒng)功能結(jié)構(gòu)(部分)
依據(jù)高內(nèi)聚、低耦合的原則,系統(tǒng)采取業(yè)務(wù)邏輯層、顯示層、數(shù)據(jù)層3層架構(gòu)[10]。
1.2.1 業(yè)務(wù)邏輯層
業(yè)務(wù)邏輯層根據(jù)查詢條件、配置項簡單處理返回結(jié)果,從而進行數(shù)據(jù)分發(fā)工作。系統(tǒng)采用C++網(wǎng)絡(luò)服務(wù)框架構(gòu)建了一個輕量級、高性能的 Web 應(yīng)用服務(wù)端程序,在初始化時按需加載維度、題目、約束條件等關(guān)鍵信息,當(dāng)用戶訪問時可以直接從服務(wù)器的緩存中根據(jù)問卷ID 獲取對應(yīng)的關(guān)鍵信息,從而提高系統(tǒng)的并發(fā)性。
1.2.2 顯示層
顯示層基于Angular 框架中豐富的組件庫進行設(shè)計。Angular 是一個應(yīng)用設(shè)計框架與開發(fā)平臺,其將應(yīng)用程序劃分為一系列組件,每個組件負責(zé)處理特定的功能,組件之間可以嵌套使用,形成復(fù)雜的頁面結(jié)構(gòu)。組件化開發(fā)使得代碼模塊化、可重用性高,方便團隊協(xié)作和維護。在具體實現(xiàn)方式中,運用響應(yīng)式布局適配手機、平板、電腦端。基于代碼的可重用性和可讀性考量將指標(biāo)、指標(biāo)層次關(guān)系、每種題型編輯、顯示、填答等封裝成組件,實現(xiàn)顯示與邏輯的分離,化繁為簡。
1.2.3 數(shù)據(jù)層
數(shù)據(jù)訪問層主要負責(zé)數(shù)據(jù)庫的訪問,針對數(shù)據(jù)進行增添、刪除、修改、查找等操作。在重慶市基礎(chǔ)教育質(zhì)量監(jiān)測教師問卷中,每個用戶需要填答的問卷題目不同、數(shù)量不固定、填答類型不固定,且被試者人數(shù)達到10 萬,均需在規(guī)定時間內(nèi)完成?;谶@些特性,本文選擇更為適用的主流非關(guān)系型數(shù)據(jù)庫MongoDB[11-12]。該數(shù)據(jù)庫除支持動態(tài)模式外,還支持海量數(shù)據(jù)存儲并且讀寫速度較快。將用戶填答的數(shù)據(jù)在一條document 中通過JSON[13]格式集中存儲(字段結(jié)構(gòu)如表1 所示),不僅邏輯結(jié)構(gòu)簡單,而且不需要多表查詢操作,可視性較強。
Table 1 Structure of questionnaire response表1 問卷答題字段結(jié)構(gòu)
本文在2013年數(shù)據(jù)庫設(shè)計的基礎(chǔ)上進行了改進,將用戶表和結(jié)果集合成一張表,設(shè)計了以下幾個集合(部分表結(jié)構(gòu)),分別為教師答案表(Q_TEA_ANS)、問卷集合(QSURVEYS)、問卷題目對應(yīng)集合(Q_SURVEY_QUESTIONS)、維度集合(Q_DIMENSIONS)和題目集合(Q_QUESTIONBASE),具體如圖2 所示。教師答案集合主要存儲教師基礎(chǔ)信息(包括教師登錄問卷系統(tǒng)所需的賬號和密碼)和回收的調(diào)查數(shù)據(jù);問卷集合用于存儲問卷基本信息,包括問卷標(biāo)題、問卷指導(dǎo)語、評價對象、微信授權(quán)登錄、開始時間、結(jié)束時間等屬性;問卷題目對應(yīng)集合用于存儲問卷集合與題目集合的對應(yīng)關(guān)系,以及所屬維度信息;維度集合存儲指標(biāo)、觀測點基本信息,包括名稱、所屬階段、所屬對象等及其層級關(guān)系;題目集合用于存儲題目信息,包括標(biāo)題、題目類型、所屬觀測點和維度、填答約束規(guī)則、跳轉(zhuǎn)邏輯設(shè)置等。
Fig.2 Database design圖2 數(shù)據(jù)庫設(shè)計
服務(wù)器具體配置信息如表2所示。
在評估領(lǐng)域,指標(biāo)體系具有評價功能[2]。根據(jù)指標(biāo)體系制定相應(yīng)題目可提高測評的全面性和精準(zhǔn)性,也可使測試內(nèi)容脈絡(luò)清晰,科學(xué)評估既定目標(biāo)的實現(xiàn)程度。評估指標(biāo)體系的構(gòu)建應(yīng)具有層次性,因此本文將指標(biāo)接口返回結(jié)果組裝成樹形結(jié)構(gòu)展示并進行分頁管理。初始化數(shù)據(jù)時在頁面首先加載第一層,通過判斷其是否有子節(jié)點進行迭代遞歸。每一層均具有添加子級、編輯基本信息、刪除功能。在編輯基本信息中設(shè)置以下功能:①為使指導(dǎo)語更醒目、有趣,采用富文本編輯器提供基本文檔格式化功能,以及視頻、圖片、表情等多種多樣的格式;②提供用戶類別、所屬階段、所屬年級設(shè)置功能,以便在組卷功能中進行動態(tài)篩選;③設(shè)置觸發(fā)條件用于問卷答題時進行多組合邏輯跳轉(zhuǎn),支持與、或、非等多種表達式(括號{}內(nèi)為題目唯一標(biāo)識)的組合邏輯;④支持動態(tài)調(diào)整指標(biāo)層級關(guān)系。
基于指標(biāo)體系與題目的邏輯關(guān)系,本文設(shè)計了在觀測點下添加題目的功能,支持評論語、單選、多選、填空、多行文本、多項填空、矩陣填空、星級、矩陣單選、分組多選、滑塊組合題、餅狀組合題、矩陣多選、上傳圖片、多選填空組合題、材料題、時刻題、數(shù)字加減題、矩陣滿意度題、動態(tài)選項題、級聯(lián)選項題、問卷嵌套題等20 余種題型的錄入。每道題增加唯一的變量標(biāo)識,標(biāo)題和選項采用富文本編輯器編輯。該種方式可以設(shè)計出符合學(xué)生年齡特點的題目,增強題目的互動性和趣味性。
為減少后期問卷調(diào)查數(shù)據(jù)清理工作量,需要對用戶填答的數(shù)據(jù)格式進行約束以確?;厥諗?shù)據(jù)格式的統(tǒng)一,因此需要在問卷發(fā)布前設(shè)置好問題的填答規(guī)則[14]。本文采用模塊化思想對用戶填答校驗部分進行設(shè)計,傳入約束規(guī)則、填答結(jié)果以及題目相關(guān)信息即可獲得用戶填答的校驗結(jié)果。
除在單題校驗中提供驗證整數(shù)、小數(shù)、日期、文本、手機格式、密碼、郵件、身份證號、護照等功能,本文系統(tǒng)還支持多道題聯(lián)合約束。以下分別以餅狀組合題、矩陣填空題為例介紹用戶填答約束的實現(xiàn)方法。
(1)在餅狀圖中內(nèi)置校驗,除校驗填答類型為數(shù)字外,還要求各項小題比例總計達到100%。例如在學(xué)校信息化建設(shè)中,各項經(jīng)費包括網(wǎng)絡(luò)建設(shè)與設(shè)備購置費用、數(shù)字資源和平臺開發(fā)費用、培訓(xùn)費用、運行與維護費用、研究與其他費用,總和應(yīng)為100%,當(dāng)用戶填答存在任一小題答案不是數(shù)字類型時,則提示用戶類型錯誤,需要修改,否則繼續(xù)判別其各項總計是否為100%,如果不是,則提示用戶重新填寫,直至填寫正確后才進入下一題。
(2)矩陣填空是一組填空題的組合,除每道題約束填寫格式和范圍外,題目間也可以相互約束。圖2 中的ACONSTRAIN 表示填答校驗約束,主要用于單題校驗規(guī)則設(shè)置。例如某項題目要求填答類型為數(shù)字,且介于14~60之間,則設(shè)置為"{"atype":"number","minvalue":14,"maxvalue":60}",通過解析調(diào)用相關(guān)校驗功能實現(xiàn)對用戶輸入的約束。題目間的規(guī)則約束存儲在字段INTERNAL_RULE 中(見圖2 題目表)。以圖3 的題目為例,有教師資格證的在職教師數(shù)量應(yīng)小于等于在職教師總?cè)藬?shù),填答規(guī)則設(shè)置為{PIASA_09_SC09_3}<={PIASA_09_SC09_1},{}內(nèi)為題目唯一標(biāo)識,同時需要滿足有教師資格證的代課教師數(shù)量應(yīng)小于等于代課教師。兩項規(guī)則以分號(;)隔開,設(shè)置為{PIASA_09_SC09_3}<={PIASA_09_SC09_1};{PIASA_09_SC09_4}<={PIASA_09_SC09_2}。在用戶填答端,系統(tǒng)按照分號自動分解、解析填答規(guī)則,通過正則表達式將{變量名}替換為用戶填答的值,通過eval()函數(shù)判斷每項表達式的值是否正確,如果結(jié)果為false,提示用戶修改。
Fig.3 Multi-topic constraint setting圖3 多題約束設(shè)置
在用戶選擇維度后,系統(tǒng)根據(jù)維度基礎(chǔ)信息自動判定是否與用戶所選階段、評價對象相匹配,若匹配則標(biāo)記為藍色,用戶可拖動至新建問卷中。進入問卷后,系統(tǒng)會自動篩選出符合角色(學(xué)生、教師、家長)要求的題目,并在維度右方標(biāo)記題目數(shù)量。在問卷保存過程中,系統(tǒng)按照拖拽的維度順序?qū)︻}目進行自動排序,且在保存時保持被觸發(fā)的題目位于觸發(fā)題目后方。例如選擇題A 為必答題,題B被觸發(fā)的條件為“題A 選擇a 選項”,則在排序時A 的序列號小于B 的序列號。
為考察被試者是否對測驗項目作出真實反應(yīng),通常會引入測謊題。該類題目需要被打亂順序,因此本文設(shè)計修改題號功能,在調(diào)整某道題題號后自動對其余題目進行排序。題號調(diào)整算法步驟為:
Step1:初始化序號數(shù)組ThArr,記錄當(dāng)前位置index,當(dāng)前序號oldid 以及調(diào)整后的序號newid。
Step2:當(dāng)newid 大于 oid 時,順序循環(huán)數(shù)組ThArr(i 為當(dāng)前題號),找到ThArr[i]介于oid 與newid(包括)的值減1。
Step3:當(dāng)newid 小于 oid 時,順序循環(huán)數(shù)組ThArr(i 為當(dāng)前題號),找到ThArr[i]介于newid(包括)與oid 的值加1。
Step4:將當(dāng)前newid 賦值給ThArr[index]。
隨著教育行業(yè)監(jiān)測需求的增加,調(diào)研題目設(shè)置愈加復(fù)雜,根據(jù)單道題答案邏輯跳轉(zhuǎn)的功能已不能滿足需求[15]。多組合邏輯跳轉(zhuǎn)可在測試過程中以觀測點為最小單位,根據(jù)受試者已有的答案組合和觸發(fā)跳轉(zhuǎn)設(shè)置屬性自動進行邏輯判斷,動態(tài)跳轉(zhuǎn)至后續(xù)題組。相應(yīng)的實現(xiàn)步驟為:
Step1:初始化題目數(shù)組,并根據(jù)題目屬性構(gòu)建數(shù)組paperQuestionShow。如果第i道題必答且不是被觸發(fā)跳轉(zhuǎn)題,則paperQuestionShow[i]為true,其余為false。如果用戶已經(jīng)開始填答,重新遍歷題目數(shù)組,當(dāng)題目i存在答案時,paperQuestionShow[i]設(shè)為true。如果不存在答案,但所屬維度或觀測點存在觸發(fā)條件且解析判斷結(jié)果為真,則設(shè)為true,同時將每道題的頁碼記錄在數(shù)組questionPage中。初始化完畢后,在界面按照排序加載所有題目,只有paper-QuestionShow[i]為true的才顯示出來。
Step2:在作答過程中,首先根據(jù)設(shè)置好的格式要求校驗用戶填答格式,然后處理當(dāng)前題目的單邏輯跳轉(zhuǎn)(同一維度內(nèi)的題目)。以單選題為例解析單選題的單題跳轉(zhuǎn)邏輯屬性jumpRule,存儲格式為JSON。例如題目1 設(shè)置為[{key:’1’,qid:[‘題2ID’,’題3ID’]},{key:’3’,qid:[‘‘題4ID’]}],表示題目選項為1 時,題目2、題目3 出現(xiàn);當(dāng)題目選項為3 時,題目4 出現(xiàn);選擇其余選項時無變化。單題跳轉(zhuǎn)邏輯處理流程如圖4所示。
Fig.4 Single question jump logic processing flow圖4 單題跳轉(zhuǎn)邏輯處理流程
在處理多組合邏輯跳轉(zhuǎn)(跨維度題目)時,由于組卷時保證了被觸發(fā)題目序號始終在觸發(fā)題目序號的后方,系統(tǒng)自動從當(dāng)前題目向后遍歷每一道題目j。若依據(jù)受試者已有的答案組合,題目j的觸發(fā)條件運算結(jié)果為真,則數(shù)組paperQuestionShow[j]設(shè)為true。多組合邏輯跳轉(zhuǎn)處理流程如圖5 所示。觸發(fā)條件設(shè)置支持與(&)、或(;與,)、非(#nin)、表達式(>,>=,<等)等多種操作組合。例如觸發(fā)條件{A}=3,4&{B}=2;{A}=1,2&{C}=7,8,表示若滿足條件一(A 題目選項為3 或4,同時B 題目為2),或滿足條件二(A 題目選項為1 或2,同時C 選項為7 或8),則邏輯處理結(jié)果為真,在數(shù)組paperQuestionShow中對應(yīng)的坐標(biāo)設(shè)為true。
Fig.5 Multi-combination logic jumping processing flow圖5 多組合邏輯跳轉(zhuǎn)處理流程
Step3:當(dāng)用戶完成當(dāng)前頁題目時,系統(tǒng)動態(tài)確定下一頁題目頁碼并跳轉(zhuǎn)至最近存在paperQuestionShow[i]為true的頁碼。
目前,本文系統(tǒng)已成功應(yīng)用于2020 年和2022 年重慶市基礎(chǔ)教育質(zhì)量監(jiān)測工作中,覆蓋10 余萬教師群體,整體規(guī)模位于全國前列,具備了大規(guī)模、多指標(biāo)數(shù)據(jù)采集的能力。實踐結(jié)果表明:①該系統(tǒng)提高了問卷題目設(shè)計效率。以9 個科目測試為例,出卷人的工作量從以往的4 天組卷84 套減少至只需提出跳轉(zhuǎn)邏輯,每個科目共用一套試卷題目,組卷時間縮短至5 h;②該系統(tǒng)極大減輕了多角色受測群體的答題負擔(dān)。表3 為教師問卷中各級各類角色填答題量。以具有“5 年級德育教師”“管理干部”等多角色的班主任為例,紙質(zhì)版需要填寫1 000 余道試題,包含多項重復(fù)及無關(guān)項,平均測試時長為30 min;而使用本系統(tǒng)最多需要完成64 道題,平均測試時長縮短至5 min。據(jù)調(diào)查,教師對問卷系統(tǒng)的滿意度由53.1%提升至97.0%;③在教育資源有限的農(nóng)村等地區(qū)會出現(xiàn)兼任體育老師、德育老師的現(xiàn)象,提前確定角色的問卷分發(fā)形式往往會出現(xiàn)漏采現(xiàn)象。本系統(tǒng)可使答題人自選角色自動組卷,信息采集更加全面精準(zhǔn)。
Table 3 The number of questions filled in at each level of the teacher questionnaire for each role表3 教師問卷中各級各類角色填答題量
本文提出一種以觀測點為最小單位,多組合邏輯跳轉(zhuǎn)與多題聯(lián)合約束的網(wǎng)絡(luò)調(diào)查問卷系統(tǒng)技術(shù)實現(xiàn)方法。該方法通過增加新題型、豐富校驗方式提升題目的趣味性和互動性;通過對題目進行分類歸檔提高篩查效能,大大減輕了后期數(shù)據(jù)清理壓力;通過多組合邏輯跳轉(zhuǎn)至觀測點的方式增強了問卷的靈活性和適應(yīng)性;通過分級分類管理設(shè)置觸發(fā)條件后重復(fù)使用的方式減少下一次問卷屬性設(shè)置時間,減輕了管理人員的組卷和檢查壓力。實踐結(jié)果表明,該系統(tǒng)具有采集過程高效、采集結(jié)果精準(zhǔn)的特點,能夠以最短的時間獲取最全面真實的信息,在大規(guī)模測試中適用性較強。
然而,該系統(tǒng)尚存在一些不足之處,例如在進行數(shù)據(jù)修改時缺乏對題目信息的保存機制。為解決該問題,擬在后期開發(fā)中將指導(dǎo)語、維度、題目等與問卷相關(guān)的信息冗余存儲于一張專用表中。如此以來,用戶在填寫問卷時可減少對維度表和題目中間表數(shù)據(jù)的檢索頻率,從而有效提高系統(tǒng)返回數(shù)據(jù)的效率,為用戶提供更為卓越的使用體驗。