


摘要:隨著互聯網、大數據、人工智能等技術的發展,對軟件可擴展性、可維護性、可復用性等提出了越來越高的要求。為更好地構建一個可擴展性、可維護性、可復用性較高的低值實驗耗材管理Web系統,結合系統功能,以Django框架為基礎,將策略設計模式應用于系統設計中。策略設計模式加快了系統開發速度,方便系統功能擴展與維護,代碼復用性高,降低了系統耦合性,增強了系統內聚性。經測試,該系統運行可靠,提高了實驗耗材管理效率。
關鍵詞:策略設計模式;實驗耗材管理;Django框架
DOI: 10. 11907/rjdk.192507
開放科學(資源服務)標識碼(OSID):
中圖分類號:TP319
文獻標識碼:A
文章編號:1672-7800(2020)004-0189-05
0 引言
隨著信息技術的不斷發展,利用現代信息技術手段,特別是充分結合大數據技術、移動互聯技術、數據庫技術等物聯網技術,能為實驗耗材管理提供技術支持,以更好地發揮低值耗材的經濟效益;新技術的出現,導致耗材管理業務需求不斷變化。耗材管理涉及實驗項目種類多,實驗器材數量大,對耗材管理的完整性、靈活性要求高,耗材查詢、盤點、統計等基本功能處理繁鎖,程序開發工作量也相應增加。實驗耗材Web管理系統是“資產管理系統”的重要組成部分,為學校資產管理提供便捷、強大的管理方案,耗材采購、入庫、出庫、盤點、借出、歸還等功能與資產管理有共同點。但是,由于耗材自身消耗較大,其與傳統資產管理有很大區別。因此,實現耗材Web管理系統與資產管理系統之間數據共享及功能維護是程序設計的重點。
實驗耗材Web管理系統管理對象種類繁雜,業務量大,涉及到耗材管理、教學管理、實驗設備管理、資產管理、采購管理等業務。為實現系統使用簡單、方便的目標,可充分利用物聯網技術、移動互聯技術和人工智能技術,實現相關業務功能。物聯網、移動互聯網與人工智能技術的日新月異,在為耗材管理提供更好技術支持的同時,其功能業務也需作適應性改變。耗材管理業務需求主要隨物聯網、人工智能新技術的變化而變化,管理系統智能化、個性化要求提高,軟件設計必須重點考慮可維護性、可擴展性、可重用性[1],使系統功能適應用戶環境,即時維護和擴展,最大程度降低軟件設計隨功能變更而增加的維護難度。
針以上問題,本文對系統功能需求及未來功能擴展進行全面分析與預測,設計一種功能模塊可擴展性強、維護性高及代碼重用性好的實驗耗材Web管理系統,減少軟件開發成本,縮短開發時間,提高系統的維護性、擴展性,以提高軟件質量和開發效率。
1 耗材管理系統關鍵技術
( l)Django是一個開源的Web應用框架,其MTC模式與經典MVC框架模式相對應[2],使用Python語言設計完成。Django可以很好地使用Python功能強大的第三方插件,甚至可以在其平臺上方便地開發新工具包,主要目的是簡便、快速地開發數據庫驅動的Web系統。Django可以很好地適配第三方插件,多個組件可以很方便地以插件形式服務于整個框架,使Django具有很強的可擴展性。
(2)設計模式。描述如何利用面向對象的基本概念和機制解決可擴展的軟件設計中常出現的問題,并針對設計問題給出可復用方案[3-6]。此解決方案對反復出現的設計結構進行識別和抽象,是軟件設計人員在面向對象軟件設計中成功解的記錄與提煉,如觀察者模式、工廠模式、經典MVC模式等。通過使用這些設計模式,便于簡化軟件設計過程,提高軟件設計效率,降低軟件復雜度[7-12]。
(3)策略模式。它定義了一系列算法,并將每個算法封裝起來,使它們可以相互替換,且算法的變化不會影響使用算法的客戶。利用此模式可使算法的變化獨立于使用客戶,把算法使用責任和算法實現分割開來,以降低代碼的耦合性。
(4)適配器模式。目的是將一個類接口轉變為客戶端目標接口,從而使因不匹配而無法工作的兩個類能一起工作,適配器又分為類適配器和對象適配器[13-14]。
2 實驗耗材Web管理系統業務分析
對實驗耗材Web管理系統業務進行分析,系統功能模塊如圖1所示。
實驗耗材Web管理系統主要功能是實現耗材采購管理、耗材管理、實驗室管理、系統維護管理。
(1)系統維護管理是耗材管理的基礎,主要完成基本信息管理、二維碼管理、耗材信息管理、耗材庫管理。其中,基本信息管理主要是系統用戶管理和相應權限管理,包括實驗室管理員和師生用戶的分級管理。因實驗耗材是分部門、分院系、分實驗使用的,故對耗材使用者管理需精細到部門管理員、院系管理員、實驗室教師及學生,達到對耗材使用的可追溯性。管理員對系統中的數據擁有增加、刪除、修改、查詢權限,教師擁有對實驗及相關耗材的申請、領取、回庫等權限,學生僅有耗材的受限領取權限。耗材信息管理主要是對耗材基本信息的管理,如耗材規格參數、耗材功能用途信息、類別、數量等。耗材庫管理主要實現耗材分類存放管理,主要對耗材存放的實驗室、柜子、箱子等信息進行管理。管理員對二維碼及條形碼進行管理,對系統涉及到的所有二維碼及條形碼進行統計管理。
(2)耗材管理。主要用于耗材使用信息管理,這是Web管理系統的核心功能,是耗材采購管理的重要依據,也是耗材信息追蹤的重要環節。耗材管理主要包括耗材申領管理、暫存管理、回庫管理、轉移管理、盤點管理幾部分,是對耗材使用人、耗材消耗過程、耗材使用詳細情況等信息戳的記錄,為耗材統計分析提供依據。
(3)實驗室管理。管理員完成實驗室基本信息量管理、課程基本信息管理、實驗實訓項目管理。其中,實驗實訓項目管理是此部分的重要功能,實驗實訓項目耗材要求是整個耗材管理系統的依據和起點。
(4)耗材采購管理。系統根據實驗條件、實驗實訓項目及參訓學生總數情況,計算統計一年一度的耗材需求量。各部門及院系管理員根椐教師申報的實訓項目及庫存,完成耗材計劃預算、采購申請、招標管理、采購合同、供貨及驗收入庫等管理,最終完成耗材庫存管理。
3 策略設計模式技術分析
為實現客戶使用一組功能業務而不關心這些功能業務差異,僅需使用它們共同的接口或抽象類即可完成這些不同功能的使用,實現業務需求的改變或增加,即實現對一組功能業務的單獨維護與擴展,而不用修改客戶端功能業務,以提高代碼的可維護性和可擴展性,降低客戶端模塊與功能業務的耦合。策略模式可實現算法使用與具體算法之間的松耦合,提高軟件可維護性。策略設計模式結構如圖2所示。
策略設計模式功能業務有3個重要的類15-16],其角色如下:①環境功能業務類( Context):系統調用的功能業務;②抽象功能業務策略接口( AbstrctStrategy):需要適配統一抽象功能,為環境功能業務類提供統一的訪問接口;③具體功能業務策略類組( ConcreteStrategy):-組核心功能業務,實現相關具體功能業務。
對于策略設計模式,主要適用如下應用設計:在系統中有許多類C oncreteStrategy,這些類的業務行為各不相同;系統功能業務需要在幾種算法中,或可能未來需要的幾種算法中選擇適用的某一種算法,這樣可以把這些不同算法在不同類中具體實現或未來再實現;這些算法具有統一接口AbstrctStrategy,司使用面向對象的多態原則服務于系統使用類C ontext。使用此統一接口,選擇應用具體算法類,以屏蔽不同算法中具體數據或算法差異,避免接觸與算法有關的復雜數據,使接口調用簡單化,實現算法細節[7]。
策略設計模式功能算法具有較強的獨立性、復用性和可擴展性。模式提供了一種替代繼承的設計方法,以保持繼承的優點即代碼復用,增強設計維護的靈活性,即算法獨立性和可擴展性,避免在程序中使用多重條件轉移語句,使設計遵守高內聚、低耦合原則。
4 策略設計模式應用
4.1 實驗耗材Web管理系統業務設計分析
在實驗耗材Web管理系統中,處理每種基本模塊都會涉及信息的4大處理功能,即信息查詢處理、信息增加處理、信息修改處理、信息刪除處理,這些信息處理功能分布在不同的功能模塊里,涉及信息數據不一樣,處理方式和算法也不盡相同。在耗材信息管理查詢中,僅對耗材基本信息進行查詢;在耗材申領管理查詢時,查詢的信息有耗材基本信息、實驗實訓項目信息、耗材庫信息、課程信息、實驗室基本信息、暫存信息、供貨信息等;耗材管理查詢涉及信息簡單,耗材申領管理查詢涉及信息多,所以設計實現處理的過程、復雜度不一樣。
同理,增加處理、修改處理、刪除處理,在不同功能模塊中,涉及同種處理功能的信息不一樣,算法的實現就會存在差異。設計實現時,這些模塊可實現耗材基本信息管理、二維碼管理、耗材信息管理、耗材庫管理、申領管理,暫存管理、回庫管理、轉移管理、盤點管理、實驗室基本信息量管理、課程基本信息管理、實驗實訓項目管理,以及耗材計劃預算、采購申請、招標管理、采購合同、供貨及驗收入庫等等,增加處理、修改處理和刪除處理,需根椐模塊功能的不同而采用具體關聯算法處理。
如果設計實現同種功能使用分支結構,會導致大量代碼重復,結構復雜,后期維護、擴展難度增大。且隨著新技術的更新和使用,模塊新功能與舊功能有差異,系統維護工作量成倍增加。為解決此問題,可采用軟件設計模式的策略模式和適配器模式,屏蔽具體模塊及數據差異,以降低程序復雜度,使代碼結構合理、簡單。
4.2 策略設計模式應用分析
通過策略設計模式技術分析,結合以上實驗耗材Web管理系統功能業務分析及Django框架實現方式,系統信息4大功能處理抽象為策略設計模式的信息功能業務策略抽象類AbstrctStrategy。結合Django框架,根據實際設計需要,重新命名為InformationHandlelnterface,對應設計4個抽象方法,命名為informationQuery()、informationAdd()、informationModify()、informationDelete().
具體業務功能為申領管理、耗材信息管理、二維碼管理、基本信息管理、實驗實訓項目管理、課程基本信息管理、耗材庫管理、暫存管理、回庫管理、轉移管理、盤點管理、實驗室基本信息量維護,耗材計劃預算、供貨及驗收入庫等,設計為具體功能業務策略類組ConcreteStrategy。如申領耗材管理類ApplyConsumablesHandle、耗材信息管理ConsumablesInformationManage、基本信息管理子模塊功能中的用戶基本信息管理功能為UserInforManage、用戶權限管理功能為UsePrivilegeManage、實驗實訓項目管理功能設計為ExperimentManage、課程基本信息管理CourseBase-Manage等具體策略業務功能,以實現接口InformationHan-dlelnterface中的統一抽象方法,完成系統的具體業務。在實驗耗材Web管理中需根據具體階段業務使用具體功能業務策略類,完成具體的系統功能。實現時重新命名為InformationHandleManage。當具體業務功能需擴展,僅需動態地選擇增加業務功能的查詢、增加、修改、刪除操作,大大提升了系統擴展性。
策略設計模式在實驗耗材Web管理系統的部分設計結構如圖3所示。
InformationHandlelnterface是實現策略設計模式抽象功能策略模塊接口,抽象定義實現實驗耗材Web系統中統一業務接口,即信息增加、信息修改、信息刪除、信息查詢。InformationHandleManage實現了策略設計模式中環境功能模塊類,是使用功能操作服務的類,據具體實現功能業務要求選擇使用相關特定功能,具體使用某一個Infor-mationHandlelnterface的實現類對象,完成系統不同業務功能,這樣可避免使用分支語句,降低程序可讀性,且也不用因減少或增加業務功能而增加代碼維護難度。Interface-Handlelnterface的子類是具體操作策略,如在申領管理的實現類ApplyConsumablesHandle、基本信息管理中用戶基本信息管理的實現類UserInforManage、耗材信息管理的實現類ConsumablesInformationManage等不同類的具體實現;若需增加新的業務功能,僅需添加相關的InformationHan-dlelnterface子類即可,這樣可提高設計的擴展性,最大程度減少系統維護。
4.3 策略設計模式實現
據德宏師范高等??茖W校信息學院實驗耗材Web系統設計實際情況,本文采用Django框架完成系統設計,以下是實現功能的部分Pvthon代碼。
4.3.1 環境功能業務在實驗耗材Web系統中應用實現
環境功能使用類InformationHandleManage,通過初始化一_
init一一(self,information_handle)或設置方法setlnforma-tionStrategy( self,information_handle),創建或更改具體的業務功能操作對象concreteInfoHandleStrategy,達到選擇使用具體業務類目的。通過使用此對象中的4個公共服務方法getlnformation()、updatelnformation().addlnformation()、deletelnformation(),實現具體功能。InformationHandleMan-age的部分實現代碼如下:
class InformationHandleManage:
def一一init一一(self,inform ation_handle):
self.一一concreteInfoHandleStrategy =information_handle
def setlnformationStrategy( self, information_handle):
self.一一concreteInfoHandleStrategy=information_handle
def getlnformation( self):
return self.~一concretelnfoH andleStrategy.inform ationQ ue ry()
def updatelnformation( self):
self.一一concretelnfoHandleSirategy.informationModify()
def addlnformation( self):
self.一一concreteInfoHandleStrategy.informationAdd()
def deletelnformation( self):
self.一一concreteInfoHandleStrategy.informationDelete()
4.3.2 抽象功能業務策略接口實現
Pvthon語言沒有接口,但是Python提供了抽象類,且Pvthon的類支持多繼承,所以可以使用抽象類實現接口功能,本系統使用Pvthon的抽象類功能實現系統抽象業務策略接口InformationHandlelnterface,實現代碼如下:
class InfromationHandlelnterface():
def informationQuery( self):
raise NotImplementedError
def informationAdd( self):
raise NotImplementedError
def informationModifv( self):
raise NotImplementedError
def informationDelete( self):
raise NotlmplementedError
在抽象類中定義統一操作的增加、修改、刪除、查詢4個抽象方法,即informationAdd( self)、informationModifv( self)、informationDelete( self)、informationQuerv( self),為環境功能業務使用類InformationHandleManage提供服務,同時為申領管理、耗材信息管理、二維碼管理、基本信息管理、實驗實訓項目管理、課程基本信息管理、耗材庫管理、暫存管理、回庫管理、轉移管理等功能提供統一接口。
4.3.3 實驗耗材Web系統具體功能業務策略類實現
具體業務功能策略類組實現InfromationHandlelnter-face統一接口,即可為環境功能業務類提供服務。以申領耗材功能ApplyConsumablesHandle為例,此類繼承Infro-mationHandlelnterface,重載informationQuery、information-Add、informationM odify、informationD elete方法,實現耗材的申領信息顯示,進行獲取、申領耗材,申領耗材修改管理、申領耗材取消。ApplyConsumablesHandle實現代碼如下:
class ApplyConsumahlesHandle( InfromationHandlelnterface):
def informationQuery( self):
info_handle=UseManagement()
displayinfolist,
dispconmlist=info_handle.readExperC on- mD etail( self.apply_id)
return displayinfolist, dispconmlist
def informationAdd( self):
info_handle=UseManagement()
if self.apply_add_flag= =self._APPLY_ALL_HAND LE:
info_handle.AddAlllnfo rm ation( self.consumable_list)
else:
info_handle.Addo nelnformation( self.consumable_list [0l)
def informationModify( self):
info_handle=UseManagement()
info_handle.Modifylnform ation( self.consumable_list[O])
def informationDelete( self):
info_handle=UseManagement()
info_handle.D eletelnformation( self.apply_id)
耗材信息管理、二維碼管理、基本信息管理、實驗實訓項目管理、課程基本信息管理、耗材庫管理、暫存管理、回庫管理、轉移管理等功能及擴展功能實現,類似申領耗材管理功能ApplyConsumablesHandle的實現,主要實現Infro-mationHandlelnterface中的4個抽象方法,對這些功能的維護,也主要是對這4個抽象方法實現的維護。所以在實驗耗材Web系統中功能維護及新功能的增加,僅是對這些具體業務功能策略類的修改和增加,而不用去修改抽象功能業務策略類InfromationH andlelnterface和環境功能業務類InformationHandleManage中的代碼,提高了可維護性,降低了功能模塊的耦合度。
5 設計效果
本文以德宏師范高等專科學校信息學院實驗耗材Web系統設計為例,結合策略設計模式、Django框架和MySql數據庫技術完成系統設計。使用Django框架技術常見的三層結構設計,各層使用模塊方法獨立,實現申領耗材管理、耗材信息管理、二維碼管理、基本信息管理、實驗實訓項目管理、課程基本信息管理、耗材庫管理、暫存管理、回庫管理、轉移管理等功能。策略設計模式的使用,使系統方便實現業務功能擴展,降低模式間的耦合度。在系統開發各階段,維護方便,節約時間,降低了開發費用。
6 結語
策略設計模式,主要為系統功能需求變更與增加系統設計應用場合提供一種有效的軟件設計模式。本文針對低值實驗耗材Web管理應用實際情況,充分利用策略設計模式優點,成功地應用到系統設計中。實踐表明,應用策略設計模式能方便地擴展系統功能,增強系統的維護性,提高系統開發效率,降低設計費用,為同類設計問題提供了更好的參考。在代碼重用性方面,若能結合適配器模式或其它設計模式,可進一步改善系統代碼的重用率。
參考文獻:
[1]張偉,梅宏.面向特征的軟件復用技術——發展與現狀[J].科學通報,2014,59(1):21-42.
[2] 劉紅霞,陸文迪.改進的MVC設計模式的研究與應用[J].計算機工程與科學,2015,37(9):1688-1691.
[3]段群,吳粉俠,歐陽宏基.軟件設計模式在目標考核系統中的應用[J].自動化技術與應用,2017,36(9):60-63。
[4]鐘睿.設計模式在軟件設計中的應用[J].電子技術與軟件工程,2018( 14):27-31.
[5] 莊立偉,衛建國,毛留喜.軟件設計模式在農業氣象系統開發中的應用[J].應用氣象學報,2011,22(5):162-174.
[6]劉海巖,鎖志海,呂青,等.設計模式及其在軟件設計中的應用研究[J].西安交通大學學報,2005( 10):1043-1047.
[7]楊靜.設計模式在敵我識別信號偵測顯控軟件的應用[J].電子設計工程,2019,27( 4):38-42.
[8]蔡岳良.計算機軟件設計教學中系統工程方法的應用[J].軟件導刊(教育技術),2017,16(3):19-20.
[9] 劉凌云.觀察者模式在面向抽象編程中的應用[J].計算機與數字工程,2016,44(8):1474-1477,1522.
[IO] 葛萌,歐陽宏基.工廠設計模式的研究與應用[J].計算技術與自動化,2017,36(2):136-140.
[11]唐永瑞,張達敏.基于Ajax與MVC模式的信息系統的研究與設計[J].電子技術應用,2014,40(2):128-131.
[12]楊斌,張衛冬,張利欣,等.基于Ajax的Observer模式客戶端研究[J].計算機工程,2010,36( 24):4-5,8.
[13]戚利娜.適配器模式及其應用[J].電子測試,2017( 11):112-113.
[14] 羅錦坤,元昌安.軟件審計適配器模式研究及應用[J].計算機技術與發展,2014,24( 12):183-187.
[15] 馬媛,趙智寶.基于策略模式數據粗化算法類庫設計與實現[J]軟件導刊,2009,8(12):44-46.
[16] [美]ERICH CAMMA.設計模式:可復用面向對象軟件的基礎[M].北京:機械工業出版社,2019.
(責任編輯:杜能銅)
作者簡介:虞泉(1982-),男,碩士,德宏師范高等專科學校信息學院、云南師范大學民族教育信息化教育部重點實驗室講師,研究方向為軟件開發、數據分析。