王磊,張紅梅
(1.蚌埠學(xué)院 計(jì)算機(jī)與信息工程學(xué)院,安徽 蚌埠233000;2.安徽電子信息職業(yè)技術(shù)學(xué)院,安徽 蚌埠233000)
傳統(tǒng)教育方法暴露出師生之間缺乏互動(dòng)、學(xué)生只能被動(dòng)接受等問(wèn)題,為促進(jìn)師生互動(dòng)、優(yōu)化分配教育資源,利用互聯(lián)網(wǎng)這一信息傳播渠道,架設(shè)一個(gè)課程交流平臺(tái),讓教師和學(xué)生能夠感受WIKI多人協(xié)作的便捷.眾多學(xué)者在此領(lǐng)域進(jìn)行不同探索,文獻(xiàn)[1]提出一種基于語(yǔ)義WIKI構(gòu)建E-Learning平臺(tái)的方案,利用語(yǔ)義技術(shù),讓存儲(chǔ)在平臺(tái)中的資源彼此產(chǎn)生緊密的聯(lián)系,文獻(xiàn)[2]提出一種基于WIKI的汽車(chē)人機(jī)工程學(xué)教學(xué)方法研究.
縱觀國(guó)內(nèi)外同類(lèi)平臺(tái)或網(wǎng)站的發(fā)展現(xiàn)狀,主要缺陷和不足表現(xiàn)在以下幾個(gè)方面:第一,開(kāi)設(shè)在平臺(tái)上的各門(mén)課程之間缺乏緊密聯(lián)系,學(xué)生在選擇課程時(shí)缺乏推薦和引導(dǎo),不能自主構(gòu)建完整的課程體系.第二,老師在面對(duì)龐大的學(xué)生群體時(shí),如何與他們保持良好的交流和互動(dòng),讓學(xué)生向老師反饋學(xué)習(xí)情況,老師也能適時(shí)得到反饋,對(duì)教學(xué)安排做出針對(duì)性的調(diào)整.第三,在課程交流平臺(tái)上學(xué)習(xí)時(shí),由于學(xué)習(xí)時(shí)間和地點(diǎn)不受限制,筆記、作業(yè)、試卷等積累下來(lái)的學(xué)習(xí)材料也變得零散化、碎片化,如何有效地收集整理好這些材料,鞏固學(xué)習(xí)成果,也是一個(gè)難題.
目前,市場(chǎng)上優(yōu)秀的同類(lèi)競(jìng)爭(zhēng)產(chǎn)品有中國(guó)大學(xué)MOOC、學(xué)堂在線、Coursera等.針對(duì)這些產(chǎn)品及其用戶,通過(guò)親自使用產(chǎn)品、發(fā)放網(wǎng)絡(luò)調(diào)查問(wèn)卷、與用戶線上交流等手段完成市場(chǎng)調(diào)研工作,獲取課程交流平臺(tái)用戶需求.調(diào)研發(fā)現(xiàn),學(xué)生希望在該平臺(tái)上瀏覽和搜索課程,找到感興趣的課程進(jìn)行學(xué)習(xí),并且與授課教師保持交流,記錄和整理學(xué)習(xí)成果.教師希望在該平臺(tái)上方便地創(chuàng)建和修改課程,管理參與課程的學(xué)生,及時(shí)掌握學(xué)生的學(xué)習(xí)情況,為學(xué)生解決學(xué)習(xí)過(guò)程中遇到的難題,取得更好的教學(xué)成果.借助PowerDesign工具進(jìn)行建模,設(shè)計(jì)WIKI課程平臺(tái)用例模型,如圖1所示.
圖1 WIKI課程平臺(tái)用例模型
通過(guò)課程學(xué)習(xí)平臺(tái)的建設(shè)與調(diào)研[3],利用現(xiàn)有計(jì)算機(jī)軟硬件資源,設(shè)計(jì)平臺(tái)總體系統(tǒng)架構(gòu),如圖2所示.平臺(tái)設(shè)計(jì)遵循Java EE架構(gòu),表現(xiàn)層負(fù)責(zé)接收客戶端請(qǐng)求和轉(zhuǎn)發(fā)請(qǐng)求;業(yè)務(wù)層主要負(fù)責(zé)處理請(qǐng)求,并同時(shí)封裝事務(wù)管理和日志記錄;持久層負(fù)責(zé)數(shù)據(jù)庫(kù)與實(shí)體之間的操作.
圖2 平臺(tái)的總體系統(tǒng)架構(gòu)
系統(tǒng)采用MySQL 8.0.11版本數(shù)據(jù)庫(kù),編碼為UTF-8,共有11個(gè)表,分別是學(xué)生用戶信息表(tb_students)、教師用戶信息表(tb_teachers)、課程信息表(tb_courses)、學(xué)生興趣表(tb_categories)、消息信息表(tb_notices)、教師課程表(tb_tc)、習(xí)題信息表(tb_questions)、筆記信息表(tb_notes)、學(xué)生課程表(tb_sc)、試卷/作業(yè)信息表(tb_exams)、學(xué)生答題表(tb_sq).平臺(tái)映射到底層數(shù)據(jù)庫(kù)表的實(shí)體類(lèi)共有7種:Teacher類(lèi)、Student類(lèi)、Course類(lèi)、Notice類(lèi)、Question類(lèi)、Note類(lèi)、Exam類(lèi).它們分別對(duì)應(yīng)tb_teachers表、tb_students表、tb_courses表、tb_notices表、tb_questions表、tb_notes表和tb_exams表.使用Power Designer繪制的課程交流平臺(tái)物理數(shù)據(jù)模型如圖3所示.
圖3 平臺(tái)物理數(shù)據(jù)模型
2.3.1 MyBatis框架作用
業(yè)務(wù)數(shù)據(jù)存儲(chǔ)在關(guān)系型數(shù)據(jù)表中,實(shí)現(xiàn)業(yè)務(wù)邏輯的代碼由Java面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言編寫(xiě),使用MyBatis框架在兩者之間構(gòu)建ORM映射關(guān)系.MyBatis框架在原生的JDBC接口基礎(chǔ)上進(jìn)行合理封裝,將SQL語(yǔ)句從業(yè)務(wù)邏輯代碼中剝離出來(lái),在配置文件中集中管理,或以注釋形式分散在DAO層接口.當(dāng)用戶在平臺(tái)上進(jìn)行各項(xiàng)操作時(shí),服務(wù)器內(nèi)部借助DAO對(duì)底層數(shù)據(jù)庫(kù)進(jìn)行相應(yīng)操作.
2.3.2 Spring框架作用
Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架,可以無(wú)縫對(duì)接Spring MVC與MyBatis.在系統(tǒng)開(kāi)發(fā)過(guò)程中,使用AOP技術(shù)對(duì)關(guān)鍵日志進(jìn)行切入.作為本平臺(tái)的核心部分,提供控制反轉(zhuǎn)容器的Spring框架,充當(dāng)控制和產(chǎn)生業(yè)務(wù)邏輯層組件和數(shù)據(jù)庫(kù)訪問(wèn)對(duì)象層組件的實(shí)例工廠.為了降低各組件之間的依賴(lài)程度,Spring框架憑借其依賴(lài)注入的特性,將它們以松耦合的方式組合在一起.采用面向接口編程的方式對(duì)數(shù)據(jù)訪問(wèn)對(duì)象層和業(yè)務(wù)邏輯層進(jìn)行編碼,提高平臺(tái)的可維護(hù)性、可擴(kuò)展性,降低系統(tǒng)重構(gòu)的成本和風(fēng)險(xiǎn).Spring通過(guò)聲明式事務(wù)機(jī)制,在配置文件中聲明事務(wù),實(shí)現(xiàn)業(yè)務(wù)邏輯層代碼與事務(wù)策略的解耦,使業(yè)務(wù)邏輯組件更專(zhuān)注于業(yè)務(wù)功能的實(shí)現(xiàn),方便在不同事務(wù)策略間轉(zhuǎn)換.
2.3.3 Spring MVC框架作用
Spring MVC框架是Java Web應(yīng)用中處理和轉(zhuǎn)發(fā)用戶請(qǐng)求的重要部分.在Spring MVC框架的管理下,對(duì)于平臺(tái)所有用戶的請(qǐng)求,Dispatcher Servlet負(fù)責(zé)攔截,經(jīng)過(guò)URL解析之后,派發(fā)給相應(yīng)的Controller.控制層方法通過(guò)調(diào)用業(yè)務(wù)邏輯層接口處理用戶請(qǐng)求,返回Model And View對(duì)象,Spring MVC框架選擇合適的視圖解析器對(duì)視圖進(jìn)行渲染,最終將結(jié)果返回到用戶端.
劉杰等提出的在線教育平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[4],楊世文等提出學(xué)術(shù)論壇管理系統(tǒng)[5]均以Spring、Spring MVC、MyBatis三大框架為核心進(jìn)行設(shè)計(jì)開(kāi)發(fā).前端使用BootStrap框架進(jìn)行自適應(yīng)布局,利用Ajax異步交互以減輕服務(wù)器壓力.平臺(tái)使用JSP和jQuery技術(shù)構(gòu)建表現(xiàn)層,負(fù)責(zé)收集用戶請(qǐng)求數(shù)據(jù)和動(dòng)態(tài)展示業(yè)務(wù)數(shù)據(jù);使用EL、JSTL表達(dá)式以及Spring標(biāo)簽庫(kù)替代傳統(tǒng)開(kāi)發(fā)中Java腳本.
平臺(tái)主要功能模塊劃分為“注冊(cè)登錄”“課程瀏覽”“我的課程”“消息管理”“學(xué)習(xí)記錄”“課程管理”和“課程發(fā)布”7大部分.平臺(tái)模塊劃分如圖4所示.
圖4 平臺(tái)模塊劃分
“課程瀏覽”模塊分為“所有課程”和“搜索課程”兩個(gè)子模塊.在“所有課程”子模塊中,學(xué)生可以瀏覽所有課程基本信息和課程分類(lèi),根據(jù)課程開(kāi)始日期,挑選尚未開(kāi)始、已經(jīng)結(jié)束或是正在進(jìn)行的課程.
“我的課程”模塊分為“已結(jié)束”“正在進(jìn)行”“即將開(kāi)始”和“推薦課程”4個(gè)子模塊.在“已結(jié)束”模塊中,學(xué)生可以查看到自己過(guò)往所學(xué)的每一門(mén)課程的基本信息,包括總成績(jī)、最高分、最低分、不及格課程數(shù)等信息,以便全面地掌握歷史學(xué)習(xí)情況.在“正在進(jìn)行/即將開(kāi)始”模塊中,學(xué)生可以查看自修課程狀態(tài).在“推薦課程”模塊中,結(jié)合學(xué)生用戶注冊(cè)時(shí)填寫(xiě)的興趣學(xué)科、學(xué)習(xí)過(guò)的課程和對(duì)課程的評(píng)分等特征數(shù)據(jù),利用Weka提供的關(guān)聯(lián)規(guī)則挖掘的推薦算法[6],可以為每一位學(xué)生呈現(xiàn)符合自身個(gè)性化學(xué)習(xí)需要的課程.同時(shí)學(xué)生可以拒絕或接受這些推薦,這一反饋將作為算法模型進(jìn)一步迭代的依據(jù).
“課程發(fā)布”模塊分為“發(fā)布考試”“發(fā)布作業(yè)”和“發(fā)布筆記”3個(gè)子模塊.在“發(fā)布考試”模塊中,教師可以為自己教授的某一門(mén)課程創(chuàng)建一份試卷,包括客觀題和主觀題,設(shè)置考試時(shí)間,也可以審閱每一位學(xué)生考試的答題情況,作出相應(yīng)的判分和回復(fù).
“發(fā)布作業(yè)”模塊的功能與“發(fā)布考試”模塊相近,在此不再贅述.
數(shù)據(jù)字典是描述數(shù)據(jù)的信息集合,在用戶需求分析階段,對(duì)原始數(shù)據(jù)和產(chǎn)出數(shù)據(jù)進(jìn)行描述時(shí),不必注意數(shù)據(jù)在計(jì)算機(jī)中的具體的存儲(chǔ)方式和數(shù)據(jù)處理的系統(tǒng).但隨著設(shè)計(jì)過(guò)程的進(jìn)展,必須將數(shù)據(jù)的概念和邏輯與數(shù)據(jù)模型和實(shí)際的實(shí)現(xiàn)方式聯(lián)系起來(lái).這時(shí),數(shù)據(jù)在系統(tǒng)中的標(biāo)識(shí)符(數(shù)據(jù)項(xiàng)或字段名稱(chēng))、存儲(chǔ)類(lèi)型(數(shù)據(jù)項(xiàng)或字段類(lèi)型)和存儲(chǔ)空間(數(shù)據(jù)項(xiàng)或字段長(zhǎng)度)就需要確定下來(lái),以達(dá)到數(shù)據(jù)輸入、存儲(chǔ)、顯示、交換和處理等功能模塊的需要.下面對(duì)系統(tǒng)涉及的主要數(shù)據(jù)字典進(jìn)行介紹.
3.2.1 學(xué)生用戶數(shù)據(jù)字典
存儲(chǔ)學(xué)生用戶信息的是tb_students表.其中username字段是該表的唯一主鍵,通過(guò)它區(qū)分不同的學(xué)生用戶.password字段存儲(chǔ)學(xué)生用戶的賬號(hào)密碼,realname、age、sex、email、phone、introduction字段分別存儲(chǔ)學(xué)生用戶的真實(shí)姓名、年齡、性別、電子郵箱、手機(jī)號(hào)碼、自我介紹等信息.具體內(nèi)容如表1所示.
表1 學(xué)生用戶信息表
3.2.2 教師用戶數(shù)據(jù)字典
存儲(chǔ)教師用戶信息的是tb_teachers表.其中username字段是該表的唯一主鍵,通過(guò)它區(qū)分不同的教師用戶.password字段存儲(chǔ)教師用戶的賬號(hào)密碼,realname、age、sex、email、phone字段分別存儲(chǔ)學(xué)生用戶的真實(shí)姓名、年齡、性別、電子郵箱、手機(jī)號(hào)碼等信息.具體內(nèi)容如表2所示.
表2 教師用戶信息表
3.2.3 課程信息數(shù)據(jù)字典
存儲(chǔ)課程信息的是tb_courses表.其中id字段是該表的唯一主鍵.coursename 、teacherrealname、category、startdate、enddate、introduction字段分別描述課程名稱(chēng)、授課教師姓名、所屬分類(lèi)、開(kāi)始日期、結(jié)束日期、課程介紹等信息,imagename字段指出了存儲(chǔ)在服務(wù)器中的課程圖標(biāo)文件的文件名.具體內(nèi)容如表3所示.
表3 課程信息表
3.2.4 習(xí)題信息數(shù)據(jù)字典
tb_questions表存儲(chǔ)著習(xí)題信息,表中id字段是該表的唯一主鍵.examId、stem、score、answer字段分別描述習(xí)題所屬試卷/作業(yè)號(hào)、題干、分值、答案等信息,choice_a、choice_b、choice_c、choice_d字段是習(xí)題的4個(gè)選項(xiàng),isObjective字段標(biāo)記習(xí)題是否為客觀題.具體內(nèi)容如表4所示.
表4 習(xí)題信息表
系統(tǒng)其余數(shù)據(jù)字典設(shè)計(jì),可以參照?qǐng)D3平臺(tái)物理數(shù)據(jù)模型進(jìn)行理解.
Tomcat具有優(yōu)先連接傾向,能保持軟件的魯棒性[7].將項(xiàng)目部署在Tomcat服務(wù)器上,使用注冊(cè)教師身份登錄,顯示“新建課程”界面如圖5所示.在該界面中輸入課程名稱(chēng)、授課教師、所屬分類(lèi)、課程介紹,選擇開(kāi)始日期和結(jié)束日期,上傳作為新課程圖標(biāo)的圖片文件,然后點(diǎn)擊“創(chuàng)建”,即可新建一門(mén)課程.
圖5 “新建課程”界面
進(jìn)入“查看/修改課程”界面后,教師用戶教授過(guò)、正在教授或未開(kāi)始教授的課程都會(huì)被羅列出來(lái).通過(guò)點(diǎn)擊警告框里的4個(gè)選項(xiàng),對(duì)這些課程在開(kāi)始時(shí)間上進(jìn)行選擇.羅列出來(lái)的每一項(xiàng)的信息包括課程名稱(chēng)、分類(lèi)、開(kāi)始日期、結(jié)束日期、注冊(cè)人數(shù)和課程介紹,后面伴隨“詳細(xì)介紹”、“修改”和“查看評(píng)論”3個(gè)按鈕.如圖6所示.
圖6 “教師課程”界面
使用學(xué)生身份登錄,進(jìn)入“所有課程”界面后,本平臺(tái)上的全部課程的基本信息將呈現(xiàn)出來(lái),包括課程名稱(chēng)、授課教師、參加人數(shù)、課程介紹和評(píng)分.點(diǎn)擊課程分類(lèi)按鈕組任一按鈕,就可選擇只出現(xiàn)某一分類(lèi)的課程.在選擇完分類(lèi)后,可以進(jìn)一步根據(jù)開(kāi)始日期選擇課程,而且能夠使用按人氣和按評(píng)價(jià)兩種排序方式.如圖7所示.
圖7 學(xué)生“所有課程”界面
系統(tǒng)開(kāi)發(fā)中使用自定義攔截器實(shí)現(xiàn)HandlerInterceptor接口,并在進(jìn)入控制器方法調(diào)用之前進(jìn)行處理,在業(yè)務(wù)代碼中加入U(xiǎn)RI判斷和用戶登錄域信息判斷.注冊(cè)和登錄模塊測(cè)試結(jié)果表明,系統(tǒng)可以攔截異常操作,達(dá)到預(yù)期設(shè)計(jì)效果.測(cè)試情況如表5所示.
表5 注冊(cè)登錄功能測(cè)試
為了實(shí)現(xiàn)上傳附件功能,需要在相關(guān)XML文件中配置MultipartResolver,設(shè)置屬性maxUploadSize值為5242880字節(jié),同時(shí)設(shè)置屬性defaultEncoding編碼為UTF-8.對(duì)系統(tǒng)進(jìn)行文件上傳下載測(cè)試,使用如表6中所示的測(cè)試用例逐一進(jìn)行,測(cè)試結(jié)果均達(dá)到預(yù)期設(shè)計(jì)效果.
表6 上傳下載功能測(cè)試
利用JMeter對(duì)系統(tǒng)進(jìn)行壓力測(cè)試[8],測(cè)試硬件環(huán)境如表7所示.在JMeter中設(shè)置好各種測(cè)試腳本,填入HTTP協(xié)議、IP地址、端口等各項(xiàng)內(nèi)容,設(shè)置線程數(shù)量50,設(shè)置測(cè)試時(shí)間40 s,聚合報(bào)告如表8和表9所示,系統(tǒng)響應(yīng)時(shí)間如圖8所示.
表7 測(cè)試硬件環(huán)境
表8 聚合報(bào)告1
表9 聚合報(bào)告2
圖8 系統(tǒng)響應(yīng)時(shí)間
WIKI課程平臺(tái)中學(xué)生可以瀏覽全部課程,搜索課程,管理已結(jié)束、正在參加或即將開(kāi)始的課程,獲得推薦課程,接收和發(fā)送消息,完成考試和作業(yè),創(chuàng)作和提交筆記.教師用戶可以查詢、新建或修改教授的課程,管理參加自己所教授課程的所有學(xué)生,接收和發(fā)送消息,布置和批改作業(yè)和考試,審閱和發(fā)布筆記.后續(xù)版本迭代中,需要進(jìn)一步考慮數(shù)據(jù)庫(kù)和數(shù)據(jù)表的優(yōu)化和拆分,使得范式級(jí)別變高,冗余更少.面對(duì)高并發(fā)請(qǐng)求響應(yīng)下降問(wèn)題,需考慮微服務(wù)架構(gòu)和分布式服務(wù)器部署.