李宏升LI Hong-sheng;宋三華SONG San-hua;陳中良CHEN Zhong-liang
(黃淮學(xué)院信息工程學(xué)院,駐馬店 463000)
(College of Information Engineering,Huanghuai University,Zhumadian 463000,China)
近年來(lái),由于無(wú)線互聯(lián)網(wǎng)及嵌入式移動(dòng)平臺(tái)的飛速發(fā)展,國(guó)內(nèi)各高校紛紛開(kāi)設(shè)嵌入式系統(tǒng)開(kāi)發(fā)課程,特別是學(xué)習(xí)門(mén)檻較低的安卓系統(tǒng)應(yīng)用開(kāi)發(fā)。由于安卓系統(tǒng)開(kāi)發(fā)的SDK 涉及到JAVA、Ecilpse、ADT、Linux 等多種開(kāi)發(fā)環(huán)境,如何構(gòu)建一套全功能、高效率、易操作的實(shí)驗(yàn)?zāi)M環(huán)境,成為目前安卓教學(xué)培訓(xùn)及實(shí)驗(yàn)實(shí)踐過(guò)程中所急需的平臺(tái)。本文所述的在線實(shí)驗(yàn)平臺(tái)就是利用Eclipse 開(kāi)發(fā)環(huán)境中功能強(qiáng)大的插件功能實(shí)現(xiàn)從教師和學(xué)生管理、實(shí)驗(yàn)內(nèi)容庫(kù)管理、作業(yè)上傳及成績(jī)批改、登錄認(rèn)證等多種功能于一體的安卓在線實(shí)驗(yàn)平臺(tái)。[1]
根據(jù)筆者所在高校安卓課程培養(yǎng)方案的要求,對(duì)本教學(xué)平臺(tái)進(jìn)行了詳細(xì)的需求分析。主要需解決如下幾方面的問(wèn)題:
①系統(tǒng)交互性設(shè)計(jì):在實(shí)驗(yàn)活動(dòng)中,要有實(shí)驗(yàn)任務(wù)發(fā)布、實(shí)驗(yàn)內(nèi)容查看、用戶(hù)注冊(cè)登錄等交互性環(huán)節(jié)。
②實(shí)驗(yàn)課程管理:在課程組織與管理方面,要有設(shè)計(jì)、安排及維護(hù)實(shí)驗(yàn)項(xiàng)目的功能。
③實(shí)驗(yàn)案例難度劃分:針對(duì)于本專(zhuān)科學(xué)生、成教及短期培訓(xùn)學(xué)生的教學(xué)要求,將實(shí)驗(yàn)項(xiàng)目按難度、應(yīng)用方向、硬件來(lái)分類(lèi),以便于針對(duì)不同的學(xué)生群體安排相應(yīng)的實(shí)驗(yàn)計(jì)劃。
④文件上傳及管理:利用登錄認(rèn)證過(guò)程來(lái)規(guī)范用戶(hù)上傳和更新相應(yīng)的作業(yè)及文件,以用戶(hù)ID、實(shí)驗(yàn)項(xiàng)目編號(hào)、上傳時(shí)間來(lái)標(biāo)示附件的內(nèi)容、時(shí)間、來(lái)源,較好的解決了上傳文件的查閱和管理。[2]
根據(jù)上述分析,本系統(tǒng)應(yīng)包含以下幾個(gè)模塊,其業(yè)務(wù)流程如圖1 所示。
其系統(tǒng)用例流程圖如圖1 所示。

圖1 在線實(shí)驗(yàn)室的業(yè)務(wù)流程圖
教師操作功能:?jiǎn)?dòng)窗戶(hù)端后,通過(guò)用戶(hù)名和密碼啟動(dòng)、登錄到客戶(hù)端,沒(méi)有賬號(hào)注冊(cè)賬號(hào)。注冊(cè)過(guò)程中可輸入用戶(hù)名、密碼,可選擇老師的分組及其他信息,注冊(cè)后即可用賬號(hào)和密碼登錄。
編輯實(shí)驗(yàn)項(xiàng)目?jī)?nèi)容:新增或編輯各實(shí)驗(yàn)項(xiàng)目的名稱(chēng)及具體內(nèi)容、選擇實(shí)驗(yàn)類(lèi)別、上傳實(shí)驗(yàn)案例代碼。
安排實(shí)驗(yàn)計(jì)劃:進(jìn)入實(shí)驗(yàn)計(jì)劃菜單,新增實(shí)驗(yàn)計(jì)劃,制定實(shí)驗(yàn)項(xiàng)目時(shí)間表、實(shí)驗(yàn)班級(jí)、周次、考核方式等具體內(nèi)容。在客戶(hù)端運(yùn)行學(xué)生上傳作業(yè)代碼:可以把學(xué)生上傳的實(shí)驗(yàn)代碼包導(dǎo)入客戶(hù)端模擬運(yùn)行,對(duì)學(xué)生的實(shí)驗(yàn)效果進(jìn)行評(píng)價(jià)。
批改學(xué)生實(shí)驗(yàn)作業(yè):根據(jù)學(xué)生上交的實(shí)驗(yàn)報(bào)告及上傳的代碼包,根據(jù)培養(yǎng)方案對(duì)學(xué)生進(jìn)行評(píng)價(jià)打分。
學(xué)生操作功能:從客戶(hù)端登錄后,可以以B/S 的方式訪問(wèn)實(shí)驗(yàn)計(jì)劃,查看實(shí)驗(yàn)內(nèi)容、下載實(shí)驗(yàn)代碼,在客戶(hù)端上進(jìn)行實(shí)驗(yàn),提交實(shí)驗(yàn)報(bào)告,上傳作業(yè)代碼包,查看實(shí)驗(yàn)成績(jī)等。瀏覽課程實(shí)驗(yàn)信息:進(jìn)入瀏覽器登錄后,可以查看本專(zhuān)業(yè)相應(yīng)的實(shí)驗(yàn)開(kāi)課計(jì)劃,進(jìn)入具體的實(shí)驗(yàn)項(xiàng)目,可以瀏覽實(shí)驗(yàn)內(nèi)容和相關(guān)知識(shí)。
根據(jù)實(shí)驗(yàn)計(jì)劃完成實(shí)驗(yàn):學(xué)生可通過(guò)B/S 模式查看、下載實(shí)驗(yàn)項(xiàng)目?jī)?nèi)容,根據(jù)實(shí)驗(yàn)內(nèi)容要求,按照步驟和實(shí)驗(yàn)代碼包完成實(shí)驗(yàn)項(xiàng)目,并撰寫(xiě)實(shí)驗(yàn)報(bào)告提交。
上傳實(shí)驗(yàn)代碼包:學(xué)生可根據(jù)實(shí)驗(yàn)要求調(diào)試好的實(shí)驗(yàn)代碼包上傳至自己在服務(wù)器上的存儲(chǔ)空間,并以特定的名稱(chēng)命名(格式為:用戶(hù)ID、實(shí)驗(yàn)項(xiàng)目編號(hào)、上傳時(shí)間)。
提交實(shí)驗(yàn)報(bào)告:學(xué)生完成實(shí)驗(yàn)后,可將按照模板撰寫(xiě)的實(shí)驗(yàn)報(bào)告文檔提交到系統(tǒng),并以特定的名稱(chēng)命名(與代碼包規(guī)則相同)。
查看成績(jī):教師可在實(shí)驗(yàn)完成后,對(duì)學(xué)生的實(shí)驗(yàn)代碼和實(shí)驗(yàn)報(bào)告批改評(píng)價(jià)后,對(duì)學(xué)生的實(shí)驗(yàn)項(xiàng)目進(jìn)行打分,學(xué)生可登錄系統(tǒng)后,查詢(xún)各實(shí)驗(yàn)項(xiàng)目的成績(jī)。[3][4]
3.1 系統(tǒng)總體架構(gòu)設(shè)計(jì)

圖2 系統(tǒng)總體架構(gòu)示意圖
系統(tǒng)各功能模塊的設(shè)計(jì):本實(shí)驗(yàn)教學(xué)平臺(tái)分為實(shí)驗(yàn)代碼運(yùn)行模塊,實(shí)驗(yàn)作業(yè)提交管理模塊。在實(shí)驗(yàn)代碼運(yùn)行模塊中主要采用Eclipse 插件開(kāi)發(fā)的機(jī)制實(shí)現(xiàn)文件的更新上傳下載,在實(shí)驗(yàn)作業(yè)管理模塊,實(shí)現(xiàn)實(shí)驗(yàn)計(jì)劃的編排,發(fā)布,實(shí)驗(yàn)報(bào)告模板的編輯實(shí)驗(yàn)作業(yè)的批改等功能。
實(shí)驗(yàn)項(xiàng)目管理:通過(guò)本模塊對(duì)各實(shí)驗(yàn)項(xiàng)目進(jìn)行增刪查改,可對(duì)實(shí)驗(yàn)項(xiàng)目的名稱(chēng)、類(lèi)別、是否必做、負(fù)責(zé)教師、實(shí)驗(yàn)要求、報(bào)告模板、上傳代碼包名稱(chēng)格式進(jìn)行設(shè)定。
實(shí)驗(yàn)計(jì)劃管理:在實(shí)驗(yàn)計(jì)劃模塊中,教師把設(shè)置好的實(shí)驗(yàn)項(xiàng)目添加到實(shí)驗(yàn)列表中,并設(shè)定開(kāi)課名稱(chēng)、實(shí)驗(yàn)名稱(chēng)、實(shí)驗(yàn)時(shí)間及結(jié)束時(shí)間,形成一個(gè)完整的實(shí)驗(yàn)計(jì)劃。
文件交互管理:學(xué)生可以在登錄后的個(gè)人實(shí)驗(yàn)項(xiàng)目列表中,查看下載相關(guān)的實(shí)驗(yàn)預(yù)習(xí)報(bào)告和代碼包,并導(dǎo)入客戶(hù)端進(jìn)行調(diào)試實(shí)驗(yàn);在完成實(shí)驗(yàn)后,將實(shí)驗(yàn)代碼和實(shí)驗(yàn)報(bào)告以約定的名稱(chēng)上傳至服務(wù)器指定的位置,教師可在課后統(tǒng)一批改,并在客戶(hù)端加載實(shí)驗(yàn)代碼進(jìn)行評(píng)價(jià)。
實(shí)驗(yàn)報(bào)告編輯:學(xué)生在實(shí)驗(yàn)過(guò)程中通過(guò)實(shí)驗(yàn)報(bào)告編輯模塊可以在線撰寫(xiě)實(shí)驗(yàn)報(bào)告,通過(guò)功能強(qiáng)大的圖文編輯器形成內(nèi)容豐富的實(shí)驗(yàn)報(bào)告上交。[5]
用戶(hù)和文件交互設(shè)計(jì):利用Eclipse 插件開(kāi)發(fā)一個(gè)基于XML 文件的透視圖,在此基礎(chǔ)上實(shí)現(xiàn)用戶(hù)交互界面和文件上傳下載界面。
用戶(hù)登錄模塊:利用SWT 和JFace 組件開(kāi)發(fā)插件的應(yīng)用,設(shè)置透視圖的擴(kuò)展點(diǎn)org.eclipse.login.perspectives,在此類(lèi)上實(shí)現(xiàn)Iperspective Factory 接口。
實(shí)驗(yàn)項(xiàng)目的上傳瀏覽:在驗(yàn)證用戶(hù)的登錄狀態(tài)后,就可實(shí)現(xiàn)實(shí)驗(yàn)項(xiàng)目的更新發(fā)布了。將提取的用戶(hù)ID 及其他狀態(tài)信息以XML 文件的形式上傳至服務(wù)器,通過(guò)對(duì)XML文件的解析,獲取當(dāng)前用戶(hù)當(dāng)前操作的實(shí)驗(yàn)的KEY,判斷取得的實(shí)驗(yàn)項(xiàng)目版本號(hào)是否大于與服務(wù)器上的值,來(lái)決定是否更新該項(xiàng)實(shí)驗(yàn)信息。更新實(shí)驗(yàn)信息后,服務(wù)端會(huì)為每個(gè)實(shí)驗(yàn)項(xiàng)目創(chuàng)建一個(gè)配置文件,記錄實(shí)驗(yàn)項(xiàng)目的數(shù)據(jù)并用于用戶(hù)在客戶(hù)端瀏覽該實(shí)驗(yàn)內(nèi)容。[6]
3.2 系統(tǒng)關(guān)鍵模塊的實(shí)現(xiàn)
3.2.1 認(rèn)證模塊
運(yùn)用Eclipse 的startup 擴(kuò)展點(diǎn)實(shí)現(xiàn)登錄認(rèn)證在客戶(hù)端啟動(dòng)時(shí)就隨之加載運(yùn)行,認(rèn)證窗口界面采用Java Swing 設(shè)計(jì),添加Jframe、Jlogin、Jbutton 等組件。為Button 按鈕添加監(jiān)聽(tīng)事件:Jloginbutton.add ActionListener(new ActionListener()),為按鈕添加login Authentiaction()的認(rèn)證方法獲取用戶(hù)名和密碼送給服務(wù)器進(jìn)行認(rèn)證。[7]
3.2.2 服務(wù)器端接口
接收客戶(hù)端登錄信息,運(yùn)用HashMap 類(lèi)接收用戶(hù)名和密碼進(jìn)行服務(wù)端認(rèn)證,成功后返回相應(yīng)的信息。
提交新的實(shí)驗(yàn)項(xiàng)目?jī)?nèi)容,運(yùn)用param Files.put(“expProject”,new File []{file})的方法上傳包含文件名和路徑字串的HashMap 對(duì)象,通過(guò)Http URL Connection 連接上傳文件的StringStream。
實(shí)驗(yàn)項(xiàng)目的下載過(guò)程,設(shè)定srcPath 和destPath 對(duì)象作為下載對(duì)象的源路徑和目的路徑,用connection.getHeaderField (“connection-Disposition”) 方 法 和URL Decoder.decoder 的方法對(duì)文件進(jìn)行URL 編碼,實(shí)現(xiàn)瀏覽器對(duì)中文名稱(chēng)的兼容。最后通過(guò)getInputStream ()和FileOutstream()方法進(jìn)行文件的讀取寫(xiě)入,完成文件下載過(guò)程。[8]
3.3 實(shí)驗(yàn)項(xiàng)目信息的上傳下載及與客戶(hù)端關(guān)聯(lián)
實(shí)驗(yàn)項(xiàng)目信息的上傳過(guò)程是客戶(hù)端功能的重要組成部分,實(shí)驗(yàn)項(xiàng)目相關(guān)信息封裝在Experiments 類(lèi)中,與用戶(hù)類(lèi)UserClient、實(shí)驗(yàn)項(xiàng)目類(lèi)ExpProject 類(lèi)利用experiments屬性相關(guān)聯(lián)。

表1 Experiments、ExpProject 類(lèi)的屬性

圖3 客戶(hù)端插件的菜單

圖4 Web 服務(wù)端登錄界面
當(dāng)用戶(hù)提交實(shí)驗(yàn)信息及報(bào)告時(shí),觸發(fā)Experiments 類(lèi)的updateExperimentsAction 方法,根據(jù)用戶(hù)ID、類(lèi)型去更新相應(yīng)的實(shí)驗(yàn)信息數(shù)據(jù)和相應(yīng)的URL 地址,學(xué)生在代碼包的上傳中會(huì)發(fā)生多次上傳的情況,為了簡(jiǎn)化系統(tǒng)復(fù)雜度和減少無(wú)用文件殘留,系統(tǒng)采用固定代碼包的文件名,最后一次上傳的數(shù)據(jù)對(duì)上一次進(jìn)行覆蓋的方法處理。
本實(shí)驗(yàn)平臺(tái)在實(shí)際教學(xué)應(yīng)用過(guò)程中,基本能完成安卓課程教學(xué)計(jì)劃的整個(gè)流程,滿足從實(shí)驗(yàn)項(xiàng)目的編輯管理、實(shí)驗(yàn)計(jì)劃的編排發(fā)布、實(shí)驗(yàn)代碼包的上傳下載、實(shí)驗(yàn)報(bào)告的編輯提交、實(shí)驗(yàn)成績(jī)的批改評(píng)分等所有功能。
本平臺(tái)采用了Eclipse 插件的開(kāi)發(fā)方式,使所有功能均集成在同一個(gè)客戶(hù)端系統(tǒng)中實(shí)現(xiàn),為教學(xué)系統(tǒng)的安裝和移植提供了方便,有利于在基于Eclipse 環(huán)境的開(kāi)發(fā)環(huán)境,如Java,J2EE 中推廣應(yīng)用。
隨著Eclipse 的Web 化進(jìn)程的不斷推進(jìn),基于Eclipse的項(xiàng)目開(kāi)發(fā)將脫離插件技術(shù)的束縛,開(kāi)發(fā)方式將逐漸被采用瀏覽器的B/S 架構(gòu)所取代。圍繞Eclipse 平臺(tái)的強(qiáng)大功能,結(jié)合安卓、Java、J2EE 課程,基于Eclipser 的在線虛擬實(shí)驗(yàn)室的應(yīng)用范圍會(huì)更廣泛、實(shí)現(xiàn)的功能會(huì)更強(qiáng)大、在移動(dòng)互聯(lián)網(wǎng)應(yīng)用及智能手持設(shè)備的應(yīng)用開(kāi)發(fā)方面會(huì)產(chǎn)生更加深遠(yuǎn)的意義。
[1]張躍玲.網(wǎng)絡(luò)教學(xué)交互模式研究[D].西北大學(xué),2011.
[2]余永佳.高職Android 操作系統(tǒng)課程教學(xué)與研究[J].徐州建筑職業(yè)技術(shù)學(xué)院學(xué)報(bào),2011(04):52-54.
[3]于杭路佳.數(shù)據(jù)挖掘在網(wǎng)絡(luò)教學(xué)評(píng)價(jià)中的應(yīng)用[D].北京郵電大學(xué),2010.
[4]成炳花,劉金廣.在B/S 網(wǎng)絡(luò)系統(tǒng)中應(yīng)用XML 技術(shù)的研究[J].武漢理工大學(xué)學(xué)報(bào),2010(22):119-212.
[5]趙林虎.基于Eclipse 富客戶(hù)端軟件測(cè)試管理平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京郵電大學(xué),2010.
[6]米天勝.基于開(kāi)放式插件體系結(jié)構(gòu)的Eclipse 平臺(tái)及其應(yīng)用[J].中國(guó)管理信息化(綜合版),2007(12):29-33.
[7]陳延.基于Eclipse 插件的集成開(kāi)發(fā)環(huán)境擴(kuò)展與改進(jìn)[D].華中科技大學(xué),2012.
[8]欒詠紅.基于Android 的XML 解析器的分析與比較[J].南京曉莊學(xué)院學(xué)報(bào),2011(06):98-100.