陳岳欣 蔡柳萍
摘要:OES在線考試系統(tǒng)是一個以高校為背景構(gòu)建的在線考試系統(tǒng),意旨為高校提供一套完整的權(quán)限化校園在校考試解決方案,以此降低出卷成本,提高閱卷效率,展現(xiàn)教學(xué)公平性、教研科學(xué)性,實(shí)現(xiàn)教育智能化。系統(tǒng)包含在線考試、成績分析、試題與試卷的信息維護(hù)、權(quán)限指派等功能,實(shí)現(xiàn)了整個考試過程的自動化控制和數(shù)據(jù)信息化、權(quán)限化管理。隨機(jī)抽題組卷(豐富的組卷方式)、每次進(jìn)入隨機(jī)刷新試題順序、主觀題輔助評分并且可由老師復(fù)查主觀題給出最終分?jǐn)?shù)是本系統(tǒng)的三大創(chuàng)新點(diǎn)。該文針對在線考試系統(tǒng)的三大創(chuàng)新點(diǎn)進(jìn)行了深入的研究和分析,最終實(shí)現(xiàn)的系統(tǒng)具備高可用、細(xì)粒度交互、高效率等諸多優(yōu)勢。
關(guān)鍵詞:權(quán)限化;隨機(jī)組卷;輔助評分;高可用
中圖分類號:TP311? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2020)36-0092-03
1 系統(tǒng)介紹
一個符合現(xiàn)代化市場需求的在線考試系統(tǒng),不僅要有完善的權(quán)限管理和過程控制以體現(xiàn)在線考試的優(yōu)勢,同時還要體現(xiàn)關(guān)鍵技術(shù)點(diǎn)和系統(tǒng)性能優(yōu)化,諸如智能評分、多樣化隨機(jī)組卷和系統(tǒng)高可用性等??煽康臋?quán)限管理可以有效限制不同角色用戶的系統(tǒng)模塊操作權(quán),并且細(xì)化到對具體功能的使用;自動評分利用數(shù)學(xué)運(yùn)算帶來高效準(zhǔn)確的分?jǐn)?shù)計(jì)算,同時利用相似系數(shù)算法輔助主觀題評分結(jié)合復(fù)查功能,可以充分發(fā)揮算法便捷性以提升教師閱卷效率;難度可控、題型可控的隨機(jī)組卷功能可以讓教師組合出的試卷不但類型多種多樣,難度也分布適中;在高可用軟件架構(gòu)的加持下,充分利用服務(wù)器與中間件的資源,提高考試排隊(duì)效率,讓更多用戶可以穩(wěn)定地加入考試中來。OES在線考試系統(tǒng)正是以以上需求為基準(zhǔn)進(jìn)行功能規(guī)劃和設(shè)計(jì)的。
1.1 開發(fā)技術(shù)
OES 在線考試系統(tǒng)開發(fā)流程包含服務(wù)端開發(fā)和前端頁面開發(fā)。服務(wù)端使用Spring Boot作為主體支撐框架,內(nèi)置豐富的WEB開發(fā)控件、數(shù)據(jù)交互組件和工具類庫,以此作為服務(wù)基礎(chǔ)能力提供者,數(shù)據(jù)訪問層使用MyBatis輕量ORM框架,實(shí)現(xiàn)服務(wù)層的數(shù)據(jù)讀寫,這兩個重要應(yīng)用技術(shù)的結(jié)合是實(shí)現(xiàn)高可用架構(gòu)的前提之一;數(shù)據(jù)庫使用MySQL進(jìn)行用戶數(shù)據(jù)持久化和基于Redis實(shí)現(xiàn)的分布式會話存儲與相關(guān)數(shù)據(jù)二級緩存功能。前端使用AdminLTE 3作為整體的視圖框架,使用Beetl作為視圖模型控制框架,引入JQuery作為與后端進(jìn)行異步數(shù)據(jù)請求的組件,完成相關(guān)自動化腳本代碼執(zhí)行、數(shù)據(jù)視圖渲染等重要工作。
1.2 軟件架構(gòu)
高可用系統(tǒng)首當(dāng)其沖需由高可用軟件架構(gòu)進(jìn)行驅(qū)動,良好的軟件架構(gòu)是實(shí)現(xiàn)系統(tǒng)高效運(yùn)行以及高度可靠的核心。本系統(tǒng)以B/S架構(gòu)模式作為構(gòu)建的前提,使用業(yè)務(wù)功能層面高度區(qū)分的分層架構(gòu),從視圖模型到業(yè)務(wù)邏輯的數(shù)據(jù)傳輸,從數(shù)據(jù)庫的數(shù)據(jù)訪問交互層級到應(yīng)用信息緩存技術(shù)的綜合應(yīng)用和中間件部署方案,分別做了對應(yīng)層級的開發(fā)工作。
1)前端視圖層實(shí)現(xiàn)視圖全局刷新與局部刷新,同時引入JSON數(shù)據(jù)交互功能,通過JSON完成數(shù)據(jù)交互以實(shí)現(xiàn)相關(guān)數(shù)據(jù)渲染和回顯,實(shí)現(xiàn)視圖與JSON數(shù)據(jù)處理的并存環(huán)境,它們是獨(dú)立的個體,服務(wù)端和客戶端上均不存在數(shù)據(jù)上的直接耦合關(guān)系。
2)業(yè)務(wù)層對各模塊進(jìn)行了細(xì)致的劃分,以角色作為訪問控制端點(diǎn)即RBAC模型,通過拆分細(xì)化業(yè)務(wù)分工,降低業(yè)務(wù)之間的耦合度。這樣的處理方案不但能實(shí)現(xiàn)代碼組件化,提高系統(tǒng)的可維護(hù)性和拓展性,也可以為協(xié)同開發(fā)帶來友好的編碼體驗(yàn)。
3)數(shù)據(jù)層包含相關(guān)讀寫操作的事務(wù)控制,數(shù)據(jù)緩存和相關(guān)業(yè)務(wù)的Mapper文件和與數(shù)據(jù)屬性映射相關(guān)的配置。使用MyBatis ORM框架完成業(yè)務(wù)與數(shù)據(jù)庫間的數(shù)據(jù)交互,建立起業(yè)務(wù)與數(shù)據(jù)之間的溝通橋梁。其中系統(tǒng)的全局權(quán)限管理交由基于動態(tài)代理的前置通知持有,對請求進(jìn)行權(quán)限校驗(yàn),隔離主體業(yè)務(wù),業(yè)務(wù)侵入程度低,是一個非常實(shí)用的系統(tǒng)權(quán)限管控解決方案。
4)數(shù)據(jù)庫方面使用MySQL對系統(tǒng)數(shù)據(jù)進(jìn)行持久化,建立數(shù)據(jù)庫主從同步架構(gòu)以實(shí)現(xiàn)數(shù)據(jù)讀寫分離,數(shù)據(jù)庫讀寫實(shí)現(xiàn)物理級的隔離,從根本上提升系統(tǒng)數(shù)據(jù)庫的讀寫能力,同時,數(shù)據(jù)庫主備架構(gòu)可以為數(shù)據(jù)庫故障帶來降低風(fēng)險(xiǎn)、更完整的備份與恢復(fù)能力等主動容災(zāi)策略,在發(fā)生故障的時候可通過主備切換保證系統(tǒng)能夠持續(xù)運(yùn)行。使用Redis實(shí)現(xiàn)了分布式會話管理,便于集群化部署時能統(tǒng)一接管用戶會話。如圖1所示為本系統(tǒng)的軟件架構(gòu)圖。
2 關(guān)鍵技術(shù)的實(shí)現(xiàn)
OES在線考試系統(tǒng)的關(guān)鍵技術(shù)包含隨機(jī)抽提組卷,隨機(jī)刷新試題順序和主觀題輔助閱卷三項(xiàng),這三項(xiàng)關(guān)鍵功能的實(shí)現(xiàn)所使用的關(guān)鍵技術(shù)和實(shí)現(xiàn)策略各不相同。
2.1 隨機(jī)抽題組卷
隨機(jī)抽題組卷是發(fā)布試卷的方式之一,也是本考試系統(tǒng)的核心功能點(diǎn)之一。依據(jù)設(shè)計(jì)要求實(shí)現(xiàn),對提交的試卷信息根據(jù)指定專業(yè)、指定題型從題目庫中隨機(jī)抽取試題編號,對于指定難度的篩選則會在抽取試題編號之前將指定難度的題目查詢出來。利用隨機(jī)算法組合出題目編號集合,并將試卷信息插入試卷表中。如果試題不夠,則會在進(jìn)行隨機(jī)的時候拋出異常,由試卷控制器捕捉異常,在前端頁面彈出提示。詳細(xì)的隨機(jī)抽取流程是隨機(jī)抽題組卷的實(shí)現(xiàn)策略,首先借助本系統(tǒng)試題庫,使用考試科目編號、試題數(shù)量、試卷題型分布和試題難度這四個可選條件,利用XML標(biāo)簽構(gòu)成一條動態(tài)的SQL查詢語句,通過業(yè)務(wù)請求后獲取符合篩選條件的數(shù)據(jù)集合,按照本系統(tǒng)的隨機(jī)抽題邏輯,首先對查詢后所得到的結(jié)果集合長度與目標(biāo)題目數(shù)量進(jìn)行簡單的長度比較,符合長度的情況下再進(jìn)行一層的判斷,通過Java內(nèi)置的隨機(jī)函數(shù)庫Random,以目標(biāo)數(shù)量為終點(diǎn)索引組成隨機(jī)分布題目編號,目標(biāo)長度與集合長度相等的情況下則不進(jìn)行隨機(jī),此時不啟動隨機(jī)函數(shù)庫進(jìn)行相關(guān)計(jì)算,直接引用集合內(nèi)的試題對象數(shù)作為試卷試題。這樣的預(yù)判邏輯在符合后者的情況下,可以節(jié)省系統(tǒng)隨機(jī)庫啟動帶來的線程資源消耗,也可以減少堆的垃圾回收工作。最后一種情況指題目數(shù)量不夠的,可以直接結(jié)束抽題方法的進(jìn)一步執(zhí)行,直接拋出異常信息,交由系統(tǒng)全局異常處理器進(jìn)行異常響應(yīng)數(shù)據(jù)體的封裝,由前端響應(yīng)“相關(guān)題型的題目數(shù)量不足”的友好回調(diào)信息,讓使用者知曉在其設(shè)置的這種組合條件下無法滿足題庫給出足量的題目進(jìn)行組卷,需要進(jìn)行修改,或者錄入相關(guān)的試題補(bǔ)充該題目在題庫中的數(shù)量。同時,教師可以通過導(dǎo)入的方式進(jìn)行組卷,在導(dǎo)入試題出卷后,在提交試卷信息之前可以選擇是否抽取題庫中任意題型和題量對試卷進(jìn)行題目的補(bǔ)充,提高試卷豐富度。例如,教師可以導(dǎo)入一張只有選擇題、填空題和判斷題的試卷,主觀題和多選題可由教師自己決定是否由系統(tǒng)自動抽取相關(guān)類型題目對試卷題型進(jìn)行題型補(bǔ)充,且可自由決定抽取部分題目的難度,起到對試卷題目的豐富作用,系統(tǒng)的隨機(jī)抽題組卷流程圖如圖2所示。
2.2 隨機(jī)刷新試題順序
隨機(jī)刷新試題順序是本系統(tǒng)的考試反作弊策略之一,不但可以有效防止學(xué)生對答案行為這種作弊行為,而且在題量大的情況下,經(jīng)過打亂后的試題,其題目順序分散程度會更加顯著,防舞弊效果更佳。學(xué)生進(jìn)入考試之后,不同考生之間的試卷題目順序是不一樣的,刷新考試頁面也會導(dǎo)致試題順序重排。這里使用了Java工具集合類內(nèi)的集合隨機(jī)排序算法實(shí)現(xiàn)集合元素的隨機(jī)重排序,實(shí)現(xiàn)題目亂序。其具體的實(shí)現(xiàn)策略是先根據(jù)試卷編號獲取試卷題目信息,接著在題庫中檢索相應(yīng)題目的數(shù)據(jù)集合,通過集合內(nèi)建靜態(tài)方法shuffle打亂集合中所有元素。shuffle使用Random靜態(tài)變量獲取隨機(jī)數(shù)對象,首次使用初次初始化的對象,以此降低該方法的初始化成本,接著會對集合元素進(jìn)行循環(huán),利用內(nèi)建交換元素方法完成隨機(jī)索引位置置換,方法內(nèi)部的具體實(shí)現(xiàn)是使用循環(huán)的方式更替集合內(nèi)的元素,同時維護(hù)著一個有效索引集合,每完成一次循環(huán)便從有效索引集合中移除一個有效索引位置,在該數(shù)組內(nèi)進(jìn)行索引隨機(jī)定位,最后以迭代方式組件出新試題集合,由此達(dá)到打亂集合內(nèi)元素的效果。
2.3 智能閱卷(主觀題輔助評分)
自動閱卷是考試過程自動化控制的重要體現(xiàn)之一,對客觀題而言其答案唯一,而主觀題往往考查考生的知識面。主觀題自動評分利用了相似系數(shù)進(jìn)行文本比較,通過Jaccard相似系數(shù)計(jì)算算法計(jì)算題目得分,當(dāng)文本關(guān)鍵詞匹配越多,相似度就越高;利用相似系數(shù)計(jì)算基礎(chǔ)得分后計(jì)算學(xué)生答案長度,當(dāng)長度與正確答案字?jǐn)?shù)差距達(dá)到設(shè)定閾值時,會在基礎(chǔ)分上扣減分?jǐn)?shù),分?jǐn)?shù)使用小數(shù)格式化對象進(jìn)行計(jì)算和向下類型轉(zhuǎn)換,確保得分精度偏移盡可能最小化,同時使用快速失敗法,率先判斷學(xué)生提交答案是否為空,空值說明未作答直接得零分,反之進(jìn)行計(jì)算。該計(jì)算方法使用了工具類進(jìn)行了獨(dú)立封裝,對外只暴露一個評分靜態(tài)方法,根據(jù)題目對應(yīng)的題型編號,使用switch語法判斷并選擇對應(yīng)的計(jì)算方法進(jìn)行評分,此處體現(xiàn)Java語言封裝特性。完成試卷評分之后會得到考試成績,此時,系統(tǒng)為學(xué)生提供了考試相關(guān)的分?jǐn)?shù)統(tǒng)計(jì)報(bào)表和錯題集等信息,給學(xué)生提供了完整的考試體驗(yàn),學(xué)生查詢到錯題與實(shí)際得分有出入可向老師提出復(fù)查請求,教師可以根據(jù)實(shí)際情況重新進(jìn)行判定,是否修改系統(tǒng)閱卷所得分?jǐn)?shù),并給出的相關(guān)評分理由。
2.4 動態(tài)權(quán)限訪問控制
動態(tài)權(quán)限是系統(tǒng)業(yè)務(wù)權(quán)限化的重要體現(xiàn),既要突出業(yè)務(wù)與權(quán)限之間松耦合,實(shí)現(xiàn)可配置化的靈活的控制,又要實(shí)現(xiàn)權(quán)限與用戶角色間的關(guān)聯(lián)性,突出系統(tǒng)的是圍繞著角色訪問控制(RBAC)這一基礎(chǔ)安全特性來開發(fā)的,權(quán)限化系統(tǒng)使得不同角色的業(yè)務(wù)功能區(qū)別明顯,有明顯的區(qū)分度,這便是RBAC模型所要實(shí)現(xiàn)的事情。權(quán)限管理在本系統(tǒng)中地位十分重要,它區(qū)分了用戶身份,限定了用戶的權(quán)限等級(角色),不同用戶登錄系統(tǒng)能夠獲得不同的權(quán)限,完成各自的功能,保證系統(tǒng)在不同的場景都能夠穩(wěn)定運(yùn)行,系統(tǒng)利用Spring框架優(yōu)秀的面向切面編程思想,使用動態(tài)代理的方式實(shí)現(xiàn)了接口權(quán)限控制,具體的實(shí)現(xiàn)策略是防止執(zhí)行前有一層代理來實(shí)現(xiàn)用戶請求鑒權(quán),配合自定義注解和環(huán)繞通知對用戶發(fā)起的請求做權(quán)限校驗(yàn),同時會緩存用戶權(quán)限以降低數(shù)據(jù)庫的訪問壓力,最終實(shí)現(xiàn)權(quán)限校驗(yàn)對系統(tǒng)業(yè)務(wù)的零入侵。
3 結(jié)束語
本系統(tǒng)綜合多項(xiàng)現(xiàn)代應(yīng)用技術(shù),利用在線考試的優(yōu)勢和核心技術(shù)實(shí)現(xiàn),構(gòu)建出一個更加符合真實(shí)考試和線下閱卷場景的在線考試系統(tǒng),同時引入多方面的反作弊策略,補(bǔ)足傳統(tǒng)在線考試系統(tǒng)在評卷和反作弊等方面的短板,為教師和學(xué)生帶來更加貼近線下考試場景的體驗(yàn),以角色訪問控制作為鑒權(quán)的載體,利用Spring框架提供的諸多特性,為系統(tǒng)的細(xì)粒度權(quán)限控制、數(shù)據(jù)交互等基礎(chǔ)設(shè)施建設(shè)工作帶來更為高效便捷的實(shí)施環(huán)境。
參考文獻(xiàn):
[1] 李繼偉.基于ASP.NET和Ajax技術(shù)的在線考試系統(tǒng)關(guān)鍵技術(shù)研究[J].電子測試,2020(14):74-75,85.
[2] 趙英萍,毛玉萃.基于Java Web的在線考試管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識與技術(shù),2020,16(19):47-48,51.
[3] 龐希愚,王成.高校程序設(shè)計(jì)類課程網(wǎng)上考試自動組卷方法的研究[J].中國教育信息化,2020(14):93-96.
[4] 楊偉凡.基于Java技術(shù)平臺的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].衛(wèi)星電視與寬帶多媒體,2020(3):99-100.
[5] 潘宏.高校學(xué)生考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].信息與電腦(理論版),2020(1):76-78.
【通聯(lián)編輯:謝媛媛】