左曉軍,劉鶴靈
(河北省電力公司電力科學(xué)研究院,石家莊 050021)
20世紀(jì)60年代的“軟件危機(jī)”使軟件開發(fā)管理者意識(shí)到利用傳統(tǒng)方式開發(fā)的軟件,其規(guī)模持續(xù)擴(kuò)展時(shí)總體維護(hù)的成本很高,即使投入昂貴的成本也很難生產(chǎn)出合格的產(chǎn)品,解決這種問題的重要方法之一就是使用軟件復(fù)用技術(shù)。
軟件復(fù)用是將已經(jīng)存在的軟件和軟件的構(gòu)成要素分別用于軟件或者系統(tǒng)的再次構(gòu)造中。軟件復(fù)用是對(duì)軟件程序和軟件生產(chǎn)過程中相關(guān)勞動(dòng)成果的復(fù)用,其本質(zhì)是為了在軟件開發(fā)中避免重復(fù)編寫已經(jīng)完成的代碼,提高工作效率。軟件復(fù)用可以體現(xiàn)在系統(tǒng)開發(fā)的任何環(huán)節(jié),如,需求復(fù)用、設(shè)計(jì)復(fù)用、代碼復(fù)用、測(cè)試復(fù)用等。
軟件復(fù)用的基礎(chǔ)和關(guān)鍵因素是軟件構(gòu)件(component)技術(shù)。軟件構(gòu)件技術(shù)的基本思想是創(chuàng)建可復(fù)用的構(gòu)件并將其組合,生成新的軟件系統(tǒng)。通過使用軟件構(gòu)件技術(shù)可以達(dá)到復(fù)用和簡(jiǎn)化開發(fā)過程等目的。構(gòu)件也稱為組件,是一個(gè)功能相對(duì)獨(dú)立的、具有可復(fù)用價(jià)值的軟件單元,通常封裝其實(shí)現(xiàn)細(xì)節(jié),僅向外部提供接口,是可復(fù)用的用以構(gòu)造其它軟件的軟件單元。通過組裝已有的構(gòu)件來開發(fā)新的應(yīng)用系統(tǒng),從而達(dá)到軟件復(fù)用的目的。
在基于構(gòu)件的軟件開發(fā)中,獲取可復(fù)用的構(gòu)件是有效使用復(fù)用技術(shù)的前提[1],一般通過從現(xiàn)有構(gòu)件中獲得符合要求的構(gòu)件,直接使用或者適應(yīng)性修改得到可復(fù)用的構(gòu)件,或者從市場(chǎng)購(gòu)買現(xiàn)成的商業(yè)構(gòu)件,或者開發(fā)新的符合要求的構(gòu)件。軟件開發(fā)管理者需要根據(jù)具體情況選擇適合自身開發(fā)特點(diǎn)的方式。以下所介紹的系統(tǒng)在開發(fā)過程中,現(xiàn)有類庫(kù)未能找到符合應(yīng)用需求的構(gòu)件,市面購(gòu)置的構(gòu)件受軟件版權(quán)、后期維護(hù)等因素限制也無法與系統(tǒng)其他功能相匹配,經(jīng)過多次對(duì)比,最終選擇了自行開發(fā)新構(gòu)件的方式。
某電力企業(yè)管理信息系統(tǒng)使用.NET C#這種成熟的支持面向?qū)ο蠹夹g(shù)的開發(fā)工具,在系統(tǒng)的開發(fā)過程中,運(yùn)用面向?qū)ο蟮睦^承、封裝等特性,使用軟件復(fù)用技術(shù)開發(fā)適合應(yīng)用需求的構(gòu)件,通過構(gòu)件技術(shù)實(shí)現(xiàn)代碼復(fù)用,提高了系統(tǒng)開發(fā)質(zhì)量和效率。
為便于創(chuàng)建風(fēng)格統(tǒng)一的用戶界面,.NET開發(fā)平臺(tái)提供了母版頁(yè)功能,該功能非常方便開發(fā)者使用軟件復(fù)用技術(shù)進(jìn)行頁(yè)面復(fù)用的開發(fā)。母版頁(yè)包含Web應(yīng)用程序中各頁(yè)面的導(dǎo)航信息、界面布局、側(cè)邊欄、背景色等公共部分,擴(kuò)展名為.master。內(nèi)容頁(yè)包含除母版頁(yè)之外的其他非公共部分(如,需要顯示的數(shù)據(jù)內(nèi)容),文件擴(kuò)展名為.aspx。在運(yùn)行過程中,.NET引擎將2種頁(yè)面內(nèi)容合并執(zhí)行,最后將結(jié)果發(fā)給客戶機(jī)端瀏覽器,展現(xiàn)給用戶一個(gè)完整的頁(yè)面[2]。當(dāng)用戶需要改變界面風(fēng)格時(shí),只需要修改母版頁(yè)中的圖片、顏色等信息,所有繼承和復(fù)用母版頁(yè)的內(nèi)容頁(yè)的界面會(huì)自動(dòng)改變。
根據(jù).NET母版頁(yè)這種特性,在系統(tǒng)開發(fā)時(shí)將查詢界面的頁(yè)面顏色、導(dǎo)航信息、側(cè)邊欄等基本信息劃分至母版頁(yè)。母版頁(yè)主要用于控制頁(yè)面風(fēng)格和布局,內(nèi)容頁(yè)僅負(fù)責(zé)數(shù)據(jù)加工和顯示。實(shí)際操作時(shí),首先創(chuàng)建母版頁(yè)demo.master文件,然后,在創(chuàng)建所有內(nèi)容頁(yè)時(shí),均選擇“使用母版頁(yè)的Web窗體”,即可實(shí)現(xiàn)母版頁(yè)公共元素的復(fù)用。這種復(fù)用技術(shù)的應(yīng)用不僅提高了頁(yè)面復(fù)用率,還從整體上提高了系統(tǒng)的穩(wěn)定性與靈活性,實(shí)現(xiàn)了整個(gè)系統(tǒng)界面展現(xiàn)風(fēng)格統(tǒng)一和權(quán)限的完整控制,如圖1所示。

圖1 統(tǒng)一的用戶界面
利用.NET母版頁(yè)特性應(yīng)用頁(yè)面復(fù)用后,內(nèi)容頁(yè)只負(fù)責(zé)用戶數(shù)據(jù)的加工和顯示,代碼維護(hù)量大大減少。
信息查詢是系統(tǒng)運(yùn)行時(shí)最為常用的一個(gè)功能,查詢功能設(shè)計(jì)的好壞直接影響系統(tǒng)的可用性和實(shí)用性。常規(guī)查詢功能的設(shè)計(jì)方法是按照指定的某一關(guān)鍵字或某幾個(gè)關(guān)鍵字編寫與之相匹配的查詢代碼,但由于系統(tǒng)中各模塊的功能存在差異,經(jīng)常需要對(duì)查詢代碼進(jìn)行修改來適應(yīng)變化,因此,通過這種方式開發(fā)的查詢功能缺乏靈活性,可復(fù)用性較差。
為進(jìn)一步提高系統(tǒng)開發(fā)效率,充分利用軟件復(fù)用技術(shù),統(tǒng)一構(gòu)造整個(gè)系統(tǒng)的查詢功能,系統(tǒng)在設(shè)計(jì)之初首先根據(jù)系統(tǒng)需求,將所需要的查詢功能進(jìn)行匯總和分類,將共性的需求進(jìn)行提煉,設(shè)計(jì)了統(tǒng)一的查詢功能。利用軟件復(fù)用技術(shù)開發(fā)了通用查詢控件和跳轉(zhuǎn)控件,經(jīng)過嚴(yán)格測(cè)試后存放在用戶自定義控件區(qū)內(nèi)(見圖2),每個(gè)查詢頁(yè)面均使用這2個(gè)自定義控件,不需要隨著模塊功能的變化進(jìn)行改造。
以下以查詢控件的高級(jí)查詢功能為例進(jìn)行簡(jiǎn)要介紹,如圖3所示。

圖2 用戶自定義通用控件的存儲(chǔ)位置

圖3 構(gòu)件的高級(jí)查詢界面
高級(jí)查詢的數(shù)據(jù)庫(kù)“字段”是控件根據(jù)自身所處模塊功能,自動(dòng)從數(shù)據(jù)庫(kù)中提取到交互界面,“匹配條件”均通過下拉列表的形式進(jìn)行選擇,用戶可以任意選擇“匹配條件”和“合并條件”逐個(gè)添加到條件列表中進(jìn)行組合查詢,在“查詢內(nèi)容”處輸入已知的任意屬性信息,如果需要結(jié)果排序,還可以在排序頁(yè)選擇排序關(guān)鍵字段。查詢控件則根據(jù)用戶最終設(shè)置的查詢信息觸發(fā)控件客戶端和服務(wù)器端代碼進(jìn)行數(shù)據(jù)處理和查詢,將查詢結(jié)果傳遞給頁(yè)面進(jìn)行數(shù)據(jù)顯示,這種控件設(shè)計(jì)大大方便了用戶使用,提高了查詢性能。
在信息系統(tǒng)開發(fā)過程中引入軟件復(fù)用技術(shù),能夠有效提高開發(fā)速度和代碼復(fù)用率,避免開發(fā)過程中的重復(fù)勞動(dòng),對(duì)整個(gè)系統(tǒng)軟件的穩(wěn)定性、通用性和靈活性有很好的促進(jìn)作用,同時(shí)也為用戶提供了統(tǒng)一的操作風(fēng)格。使用該技術(shù)開發(fā)的電力企業(yè)信息管理系統(tǒng)投運(yùn)后,整體運(yùn)行情況穩(wěn)定,應(yīng)用效果良好,有效地推動(dòng)了電力企業(yè)信息化工作。將軟件復(fù)用技術(shù)應(yīng)用于信息系統(tǒng)開發(fā)不僅需要注意影響復(fù)用技術(shù)應(yīng)用的技術(shù)類因素,還應(yīng)該注意管理制度、法律等非技術(shù)類因素對(duì)技術(shù)實(shí)施的影響。
參考文獻(xiàn):
[1] 張友生.系統(tǒng)分析師教程[M].北京:清華大學(xué)出版社,2010.
[2] 郝 剛,袁永剛,嚴(yán)志國(guó).ASP.NET 2.0開發(fā)指南[M]. 北京:人民郵電出版社,2006.