左曉軍,劉鶴靈
(河北省電力公司電力科學(xué)研究院,石家莊 050021)
20世紀(jì)60年代的“軟件危機”使軟件開發(fā)管理者意識到利用傳統(tǒng)方式開發(fā)的軟件,其規(guī)模持續(xù)擴展時總體維護的成本很高,即使投入昂貴的成本也很難生產(chǎn)出合格的產(chǎn)品,解決這種問題的重要方法之一就是使用軟件復(fù)用技術(shù)。
軟件復(fù)用是將已經(jīng)存在的軟件和軟件的構(gòu)成要素分別用于軟件或者系統(tǒng)的再次構(gòu)造中。軟件復(fù)用是對軟件程序和軟件生產(chǎn)過程中相關(guān)勞動成果的復(fù)用,其本質(zhì)是為了在軟件開發(fā)中避免重復(fù)編寫已經(jīng)完成的代碼,提高工作效率。軟件復(fù)用可以體現(xiàn)在系統(tǒng)開發(fā)的任何環(huán)節(jié),如,需求復(fù)用、設(shè)計復(fù)用、代碼復(fù)用、測試復(fù)用等。
軟件復(fù)用的基礎(chǔ)和關(guān)鍵因素是軟件構(gòu)件(component)技術(shù)。軟件構(gòu)件技術(shù)的基本思想是創(chuàng)建可復(fù)用的構(gòu)件并將其組合,生成新的軟件系統(tǒng)。通過使用軟件構(gòu)件技術(shù)可以達到復(fù)用和簡化開發(fā)過程等目的。構(gòu)件也稱為組件,是一個功能相對獨立的、具有可復(fù)用價值的軟件單元,通常封裝其實現(xiàn)細(xì)節(jié),僅向外部提供接口,是可復(fù)用的用以構(gòu)造其它軟件的軟件單元。通過組裝已有的構(gòu)件來開發(fā)新的應(yīng)用系統(tǒng),從而達到軟件復(fù)用的目的。
在基于構(gòu)件的軟件開發(fā)中,獲取可復(fù)用的構(gòu)件是有效使用復(fù)用技術(shù)的前提[1],一般通過從現(xiàn)有構(gòu)件中獲得符合要求的構(gòu)件,直接使用或者適應(yīng)性修改得到可復(fù)用的構(gòu)件,或者從市場購買現(xiàn)成的商業(yè)構(gòu)件,或者開發(fā)新的符合要求的構(gòu)件。軟件開發(fā)管理者需要根據(jù)具體情況選擇適合自身開發(fā)特點的方式。以下所介紹的系統(tǒng)在開發(fā)過程中,現(xiàn)有類庫未能找到符合應(yīng)用需求的構(gòu)件,市面購置的構(gòu)件受軟件版權(quán)、后期維護等因素限制也無法與系統(tǒng)其他功能相匹配,經(jīng)過多次對比,最終選擇了自行開發(fā)新構(gòu)件的方式。
某電力企業(yè)管理信息系統(tǒng)使用.NET C#這種成熟的支持面向?qū)ο蠹夹g(shù)的開發(fā)工具,在系統(tǒng)的開發(fā)過程中,運用面向?qū)ο蟮睦^承、封裝等特性,使用軟件復(fù)用技術(shù)開發(fā)適合應(yīng)用需求的構(gòu)件,通過構(gòu)件技術(shù)實現(xiàn)代碼復(fù)用,提高了系統(tǒng)開發(fā)質(zhì)量和效率。
為便于創(chuàng)建風(fēng)格統(tǒng)一的用戶界面,.NET開發(fā)平臺提供了母版頁功能,該功能非常方便開發(fā)者使用軟件復(fù)用技術(shù)進行頁面復(fù)用的開發(fā)。母版頁包含Web應(yīng)用程序中各頁面的導(dǎo)航信息、界面布局、側(cè)邊欄、背景色等公共部分,擴展名為.master。內(nèi)容頁包含除母版頁之外的其他非公共部分(如,需要顯示的數(shù)據(jù)內(nèi)容),文件擴展名為.aspx。在運行過程中,.NET引擎將2種頁面內(nèi)容合并執(zhí)行,最后將結(jié)果發(fā)給客戶機端瀏覽器,展現(xiàn)給用戶一個完整的頁面[2]。當(dāng)用戶需要改變界面風(fēng)格時,只需要修改母版頁中的圖片、顏色等信息,所有繼承和復(fù)用母版頁的內(nèi)容頁的界面會自動改變。
根據(jù).NET母版頁這種特性,在系統(tǒng)開發(fā)時將查詢界面的頁面顏色、導(dǎo)航信息、側(cè)邊欄等基本信息劃分至母版頁。母版頁主要用于控制頁面風(fēng)格和布局,內(nèi)容頁僅負(fù)責(zé)數(shù)據(jù)加工和顯示。實際操作時,首先創(chuàng)建母版頁demo.master文件,然后,在創(chuàng)建所有內(nèi)容頁時,均選擇“使用母版頁的Web窗體”,即可實現(xiàn)母版頁公共元素的復(fù)用。這種復(fù)用技術(shù)的應(yīng)用不僅提高了頁面復(fù)用率,還從整體上提高了系統(tǒng)的穩(wěn)定性與靈活性,實現(xiàn)了整個系統(tǒng)界面展現(xiàn)風(fēng)格統(tǒng)一和權(quán)限的完整控制,如圖1所示。
圖1 統(tǒng)一的用戶界面
利用.NET母版頁特性應(yīng)用頁面復(fù)用后,內(nèi)容頁只負(fù)責(zé)用戶數(shù)據(jù)的加工和顯示,代碼維護量大大減少。
信息查詢是系統(tǒng)運行時最為常用的一個功能,查詢功能設(shè)計的好壞直接影響系統(tǒng)的可用性和實用性。常規(guī)查詢功能的設(shè)計方法是按照指定的某一關(guān)鍵字或某幾個關(guān)鍵字編寫與之相匹配的查詢代碼,但由于系統(tǒng)中各模塊的功能存在差異,經(jīng)常需要對查詢代碼進行修改來適應(yīng)變化,因此,通過這種方式開發(fā)的查詢功能缺乏靈活性,可復(fù)用性較差。
為進一步提高系統(tǒng)開發(fā)效率,充分利用軟件復(fù)用技術(shù),統(tǒng)一構(gòu)造整個系統(tǒng)的查詢功能,系統(tǒng)在設(shè)計之初首先根據(jù)系統(tǒng)需求,將所需要的查詢功能進行匯總和分類,將共性的需求進行提煉,設(shè)計了統(tǒng)一的查詢功能。利用軟件復(fù)用技術(shù)開發(fā)了通用查詢控件和跳轉(zhuǎn)控件,經(jīng)過嚴(yán)格測試后存放在用戶自定義控件區(qū)內(nèi)(見圖2),每個查詢頁面均使用這2個自定義控件,不需要隨著模塊功能的變化進行改造。
以下以查詢控件的高級查詢功能為例進行簡要介紹,如圖3所示。
圖2 用戶自定義通用控件的存儲位置
圖3 構(gòu)件的高級查詢界面
高級查詢的數(shù)據(jù)庫“字段”是控件根據(jù)自身所處模塊功能,自動從數(shù)據(jù)庫中提取到交互界面,“匹配條件”均通過下拉列表的形式進行選擇,用戶可以任意選擇“匹配條件”和“合并條件”逐個添加到條件列表中進行組合查詢,在“查詢內(nèi)容”處輸入已知的任意屬性信息,如果需要結(jié)果排序,還可以在排序頁選擇排序關(guān)鍵字段。查詢控件則根據(jù)用戶最終設(shè)置的查詢信息觸發(fā)控件客戶端和服務(wù)器端代碼進行數(shù)據(jù)處理和查詢,將查詢結(jié)果傳遞給頁面進行數(shù)據(jù)顯示,這種控件設(shè)計大大方便了用戶使用,提高了查詢性能。
在信息系統(tǒng)開發(fā)過程中引入軟件復(fù)用技術(shù),能夠有效提高開發(fā)速度和代碼復(fù)用率,避免開發(fā)過程中的重復(fù)勞動,對整個系統(tǒng)軟件的穩(wěn)定性、通用性和靈活性有很好的促進作用,同時也為用戶提供了統(tǒng)一的操作風(fēng)格。使用該技術(shù)開發(fā)的電力企業(yè)信息管理系統(tǒng)投運后,整體運行情況穩(wěn)定,應(yīng)用效果良好,有效地推動了電力企業(yè)信息化工作。將軟件復(fù)用技術(shù)應(yīng)用于信息系統(tǒng)開發(fā)不僅需要注意影響復(fù)用技術(shù)應(yīng)用的技術(shù)類因素,還應(yīng)該注意管理制度、法律等非技術(shù)類因素對技術(shù)實施的影響。
參考文獻:
[1] 張友生.系統(tǒng)分析師教程[M].北京:清華大學(xué)出版社,2010.
[2] 郝 剛,袁永剛,嚴(yán)志國.ASP.NET 2.0開發(fā)指南[M]. 北京:人民郵電出版社,2006.