徐妍++崔良中++黃佳維
摘 要:針對(duì)目前很多高校對(duì)實(shí)驗(yàn)室管理效率低下、實(shí)驗(yàn)室利用率低等問(wèn)題,文章構(gòu)建了一套管理信息系統(tǒng),解決了實(shí)驗(yàn)課件管理、預(yù)約管理、資源共享等問(wèn)題。系統(tǒng)在設(shè)計(jì)中,充分利用GoF設(shè)計(jì)模式,有效增強(qiáng)了系統(tǒng)的可維護(hù)性和可擴(kuò)展性。系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā),有效提升了高校對(duì)實(shí)驗(yàn)室的管理能力。
關(guān)鍵詞:實(shí)驗(yàn)室管理;系統(tǒng)設(shè)計(jì);GoF設(shè)計(jì)模式
提高學(xué)生的動(dòng)手能力,是學(xué)校的主要工作任務(wù)之一,高校實(shí)驗(yàn)室是提高學(xué)生動(dòng)手能力的重要途徑[1]。學(xué)校實(shí)驗(yàn)室的構(gòu)建目的,一是為學(xué)生創(chuàng)造良好的實(shí)驗(yàn)環(huán)境和條件;二是確保實(shí)驗(yàn)教學(xué)任務(wù)的順利完成;三是為科研工作提供實(shí)驗(yàn)環(huán)境。目前高校實(shí)驗(yàn)室存在的主要問(wèn)題包括以下幾個(gè)方面:(1)缺乏制度化管理,實(shí)驗(yàn)設(shè)備與實(shí)驗(yàn)教學(xué)內(nèi)容脫節(jié);(2)實(shí)驗(yàn)室基本資源管理混亂,實(shí)驗(yàn)器材和原料得不到及時(shí)補(bǔ)充;(3)實(shí)驗(yàn)室資源沒(méi)有得到充分利用,學(xué)生無(wú)法利用課余時(shí)間上機(jī),各高校之間的實(shí)驗(yàn)室也無(wú)法共享資源。
本系統(tǒng)根據(jù)目前高校實(shí)驗(yàn)室存在的問(wèn)題,構(gòu)建了一套實(shí)驗(yàn)室管理系統(tǒng)。該系統(tǒng)能夠?yàn)楦咝W(xué)生提供實(shí)驗(yàn)室預(yù)約、實(shí)驗(yàn)課程教學(xué)等功能;能夠?yàn)楦咝=處熖峁?shí)驗(yàn)課程管理、實(shí)驗(yàn)信息獲取、實(shí)驗(yàn)課件提交等功能;能夠?yàn)閷?shí)驗(yàn)室管理人員提供實(shí)驗(yàn)器材及原料補(bǔ)充管理、實(shí)驗(yàn)室資源共享管理等功能。本系統(tǒng)最大的特點(diǎn),是充分考慮到了實(shí)驗(yàn)室管理業(yè)務(wù)流程的擴(kuò)展,在系統(tǒng)各主要功能的設(shè)計(jì)中,引入了擬合優(yōu)度(Goodness of Fit,GoF)設(shè)計(jì)模式,系統(tǒng)的可擴(kuò)展性和可維護(hù)性得到了大幅提高。
系統(tǒng)投入使用后,解決了實(shí)驗(yàn)室管理過(guò)程中的效率低下的問(wèn)題,教師和學(xué)生可以基于系統(tǒng)實(shí)現(xiàn)對(duì)實(shí)驗(yàn)教學(xué)內(nèi)容的交流;實(shí)驗(yàn)室管理人員能夠及時(shí)根據(jù)實(shí)驗(yàn)課程安排,調(diào)整實(shí)驗(yàn)器具和原料;各高校之間的實(shí)驗(yàn)室資源共享,有效地提高了高校實(shí)驗(yàn)室的利用率。
1 關(guān)鍵技術(shù)研究
本系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā),主要是在面向?qū)ο缶幊淘瓌t的指導(dǎo)下,利用GoF設(shè)計(jì)模式,完成系統(tǒng)的各個(gè)功能模塊。
1.1 面向?qū)ο缶幊碳夹g(shù)
面向?qū)ο缶幊碳夹g(shù),是針對(duì)傳統(tǒng)的面向過(guò)程編程技術(shù)而言,是目前主流的高級(jí)編程語(yǔ)言所采用的編程技術(shù)。面向?qū)ο缶幊碳夹g(shù),主要包括5個(gè)原則[2]:(1)單一職責(zé)原則,類(lèi)中僅包含必要的屬性和方法,且類(lèi)中的方法要求相互關(guān)聯(lián),避免因類(lèi)過(guò)于龐大而導(dǎo)致的破壞封閉性;(2)開(kāi)閉原則,簡(jiǎn)而言之,就是對(duì)擴(kuò)展開(kāi)發(fā),對(duì)修改封閉,在不改變類(lèi)結(jié)構(gòu)的前提下,應(yīng)能夠方便地?cái)U(kuò)展類(lèi)的功能,而在不改變類(lèi)接口的情況下,能夠?qū)︻?lèi)內(nèi)部的功能進(jìn)行修改;(3)Liskov替換原則,該原則要求在面向?qū)ο笤O(shè)計(jì)時(shí),某個(gè)類(lèi)的子類(lèi)可以完全替換其基類(lèi),這一原則是面向?qū)ο笤O(shè)計(jì)中多態(tài)、繼承等應(yīng)用的基礎(chǔ)[3];(4)依賴倒置原則,一般的分層架構(gòu)系統(tǒng),上層構(gòu)件的實(shí)現(xiàn)依賴于下層的構(gòu)件,導(dǎo)致系統(tǒng)模塊之間的耦合性增加,而依賴倒置原則要求各層的實(shí)現(xiàn)都依賴于接口,只要接口不變,可以對(duì)構(gòu)件功能進(jìn)行完善和調(diào)整;(5)接口隔離原則,系統(tǒng)接口的設(shè)計(jì)要求簡(jiǎn)潔明了,同一接口中的各個(gè)方法之間要求相互關(guān)聯(lián)[4]。
1.2 設(shè)計(jì)模式技術(shù)
設(shè)計(jì)模式是軟件工程中的重要組成部分,是對(duì)軟件功能模塊設(shè)計(jì)的經(jīng)驗(yàn)總結(jié)[5]。軟件開(kāi)發(fā)人員在長(zhǎng)期的編程工作中發(fā)現(xiàn),利用面向?qū)ο蟮某绦蜷_(kāi)發(fā)語(yǔ)言,可以構(gòu)建一些固定模式的類(lèi)組織架構(gòu),使所開(kāi)發(fā)的功能具有更好的可擴(kuò)展性和可維護(hù)性,這些模式就被稱為設(shè)計(jì)模式[6]。
設(shè)計(jì)模式的出現(xiàn)是為了解決在面向?qū)ο缶幊踢^(guò)程中存在的問(wèn)題,很多功能邏輯的設(shè)計(jì)實(shí)際上是重復(fù)的,如果用一個(gè)相對(duì)固定的,被證明具有良好的可擴(kuò)展性和可維護(hù)性的模式進(jìn)行固定,則可以有效地提高程序的開(kāi)發(fā)效率,并提高系統(tǒng)的質(zhì)量[7]。每一個(gè)設(shè)計(jì)模式都相對(duì)詳細(xì)地描述了一個(gè)在程序設(shè)計(jì)與開(kāi)發(fā)過(guò)程中存在的問(wèn)題,并提出了解決的方案。一個(gè)完整的設(shè)計(jì)模式有4個(gè)基本要素[8],分別是模式的名稱,用于標(biāo)識(shí)和區(qū)別不同的模式;問(wèn)題描述,用于說(shuō)明當(dāng)前模式所能夠處理的問(wèn)題,以及適用的情況;解決方案,描述了設(shè)計(jì)的組成成分,具體地說(shuō)就是各個(gè)類(lèi)的設(shè)計(jì),以及類(lèi)之間關(guān)系的設(shè)計(jì);效果,用于描述使用了該設(shè)計(jì)模式以后所能夠達(dá)到的效果。
2 系統(tǒng)總體功能設(shè)計(jì)
高校實(shí)驗(yàn)室管理系統(tǒng)的主要設(shè)計(jì)目標(biāo),是提高實(shí)驗(yàn)室的使用和管理效率,能夠?yàn)榻處熀蛯W(xué)生提供實(shí)驗(yàn)課程預(yù)習(xí)、交流等平臺(tái),為管理員提供耗材、設(shè)備管理功能等。針對(duì)不同的參與者,系統(tǒng)設(shè)計(jì)了相關(guān)的功能模塊,系統(tǒng)的功能架構(gòu)如圖1所示。
系統(tǒng)從功能的角度可以分為4個(gè)模塊:(1)教學(xué)管理模塊主要用于處理與實(shí)驗(yàn)課教學(xué)相關(guān)的業(yè)務(wù)內(nèi)容,教師通過(guò)該模塊發(fā)布教學(xué)課件,學(xué)生通過(guò)該模塊提交實(shí)驗(yàn)報(bào)告;(2)實(shí)驗(yàn)室管理模塊主要用于實(shí)驗(yàn)室使用申請(qǐng),以及相關(guān)信息查詢;(3)設(shè)備器具管理模塊主要為管理人員提供了實(shí)驗(yàn)室易耗品以及相關(guān)設(shè)備器具的管理功能;(4)系統(tǒng)管理功能模塊主要是對(duì)數(shù)據(jù)庫(kù)、日志等進(jìn)行管理。
3 實(shí)驗(yàn)室易耗品管理功能的實(shí)現(xiàn)
高校實(shí)驗(yàn)室管理系統(tǒng)包括多個(gè)功能模塊和功能指標(biāo)。為了保證系統(tǒng)的可擴(kuò)展性和可維護(hù)性,在每一個(gè)功能的設(shè)計(jì)實(shí)現(xiàn)中,均充分考慮到了設(shè)計(jì)的靈活性。篇幅所限,本節(jié)主要對(duì)實(shí)驗(yàn)室易耗品的管理功能進(jìn)行詳細(xì)討論。該功能是對(duì)實(shí)驗(yàn)過(guò)程中使用到的易耗品,以及各類(lèi)實(shí)驗(yàn)設(shè)備等進(jìn)行管理。
3.1 易耗品管理功能的設(shè)計(jì)
實(shí)驗(yàn)室中的易耗品與具體實(shí)驗(yàn)之間存在著直接的關(guān)聯(lián)關(guān)系,某一個(gè)實(shí)驗(yàn)會(huì)包含多個(gè)實(shí)驗(yàn)的易耗品,而同一類(lèi)的易耗品也可以被應(yīng)用于多個(gè)實(shí)驗(yàn)中,兩者之間是多對(duì)多的關(guān)系。按照傳統(tǒng)的面向?qū)ο蟮能浖O(shè)計(jì)方案,對(duì)于實(shí)驗(yàn)室易耗品類(lèi)的設(shè)計(jì)可以采用兩種方式:一種是從實(shí)驗(yàn)種類(lèi)設(shè)計(jì)類(lèi),可以分為物理實(shí)驗(yàn)的易耗品、化學(xué)實(shí)驗(yàn)的易耗品等;另一種是直接對(duì)易耗品設(shè)計(jì)類(lèi),抽象屬于同類(lèi)的易耗品屬性和方法。上述兩類(lèi)設(shè)計(jì)方式都存在著較大的問(wèn)題,當(dāng)在易耗品的管理過(guò)程中出現(xiàn)新的實(shí)驗(yàn)類(lèi)別時(shí),需要增加一個(gè)新類(lèi),同時(shí)增加該類(lèi)相關(guān)聯(lián)的各類(lèi)易耗品;同時(shí),當(dāng)增加一個(gè)易耗品的操作時(shí),需要對(duì)所有的類(lèi)別進(jìn)行修改,違反了面向?qū)ο笤O(shè)計(jì)中的開(kāi)閉原則。endprint
為了解決上述設(shè)計(jì)上的問(wèn)題,利用GoF設(shè)計(jì)模式中的橋接模式進(jìn)行類(lèi)的設(shè)計(jì)。橋接設(shè)計(jì)模式的類(lèi)圖如圖2所示。
橋接設(shè)計(jì)模式的主要目的是將抽象對(duì)象與具體的實(shí)現(xiàn)細(xì)節(jié)進(jìn)行分離,使兩者之間既存在關(guān)系,又可以實(shí)現(xiàn)各自的靈活變化。在實(shí)驗(yàn)易耗品管理過(guò)程中,各種不同類(lèi)型的實(shí)驗(yàn)都是抽象的對(duì)象,而實(shí)驗(yàn)所用到易耗品則是具體的實(shí)現(xiàn)。兩者之間可以不建立聯(lián)系,但這樣就無(wú)法反映實(shí)驗(yàn)與易耗品之間的關(guān)系,給管理工作造成較大的阻礙。按照橋接設(shè)計(jì)模式的設(shè)計(jì)要求,本功能的類(lèi)圖設(shè)計(jì)如圖3所示。
如圖3所示,設(shè)計(jì)了抽象的實(shí)驗(yàn)類(lèi)AbstractLab,該類(lèi)的屬性中包括實(shí)驗(yàn)的名稱,而List
采用這一設(shè)計(jì)模式,當(dāng)需要擴(kuò)展新的實(shí)驗(yàn)類(lèi)別時(shí),只需要設(shè)計(jì)一個(gè)新類(lèi)繼承AbstractLab類(lèi),并實(shí)現(xiàn)其定義的方法;而新增加一種易耗品類(lèi)別時(shí),則從Drug類(lèi)中派生一個(gè)新類(lèi)。
3.2 易耗品管理功能的實(shí)現(xiàn)
以上對(duì)實(shí)驗(yàn)易耗品管理功能進(jìn)行了設(shè)計(jì),利用橋接模式提高系統(tǒng)功能的靈活性。該功能的實(shí)現(xiàn)序列如圖4所示。
AbstractLab類(lèi)的主要代碼如下:
abstract class AbstractLab
{
protected List
public void ShowLabInfo(){
foreach(Drug drug in DrugList)
drug.GetAmount();
//其他處理操作
}
public void AddDrug(Drug drug){
DrugList.Add(drug);
}
Drug類(lèi)的主要代碼如下:
abstract class Drug
{
public double GetAmount(){
//從數(shù)據(jù)庫(kù)中獲取易耗品的存量。
}
繼承類(lèi)的相關(guān)代碼在此不再贅述。完成了類(lèi)的定義后,用戶在客戶端可以方便地完成實(shí)驗(yàn)和易耗品之間的操作。代碼如下:
main()
{
AbstructLab lab = new ChemistryLab();
lab.add(new AlcoholDrug);
lab.ShowLabInfo();
}
通過(guò)以上客戶端的操作,可以方便地根據(jù)實(shí)驗(yàn)對(duì)象,查詢得到該實(shí)驗(yàn)所使用到的易耗品各類(lèi),以及各類(lèi)易耗品目前的存量。
該功能的界面如圖5所示。
4 結(jié)語(yǔ)
高校實(shí)驗(yàn)室管理系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā),解決了實(shí)驗(yàn)室管理不規(guī)范,實(shí)驗(yàn)易耗品和設(shè)備補(bǔ)充不及時(shí),資源利用率低等問(wèn)題,有效地提高了高校對(duì)實(shí)驗(yàn)室的管理效率。設(shè)計(jì)模式在實(shí)驗(yàn)室管理系統(tǒng)中的應(yīng)用,能夠使系統(tǒng)功能具有更好的靈活性,便于對(duì)功能進(jìn)行擴(kuò)展或修改。
[參考文獻(xiàn)]
[1]CHEN L,CENTER ET. Problems and countermeasures of laboratory safety management in colleges and universities in the new era[J]. Research & Exploration in Laboratory,2017(3):24-29.
[2]IGARASHI,ATSUSHI,NAGIRA,et al. Union types for object-oriented programming[J]. Journal of Object Technology,2016(2):47-68.
[3]PANCERZ K,SCHUMANN A. Some issues on an object-oriented programming language for physarum machines[J]. Studies in Computational Intelligence,2015(6):185-199.
[4]KAILA E,KURVINEN E,LOKKILA E. Redesigning an object-oriented programming course[J]. Acm Transactions on Computing Education,2016(4):18.
[5]LI,DAABOUL J,Tong S. A design pattern for industrial robot[J].Robotics and Computer Integrated Manufacturing,2015(C):30-39.
[6]JAAFAR F,HAMEL S,KHOMH F. Evaluating the impact of design pattern and anti-pattern dependencies on changes and faults[J]. Empirical Software Engineering,2016(3):31-36.
[7]陳烽,陳蓉,王跟成.設(shè)計(jì)模式在區(qū)域綜合管網(wǎng)中的應(yīng)用研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2015 (4):193-196.
[8]崔亮.設(shè)計(jì)模式在試驗(yàn)信息系統(tǒng)中的應(yīng)用研究[J].計(jì)算機(jī)與數(shù)字工程,2015(4):671-675.