(福州大學(xué)陽光學(xué)院,福建 福州350015)
信息化時(shí)代的到來使得計(jì)算機(jī)在社會(huì)各行業(yè)的運(yùn)用十分普遍,與計(jì)算機(jī)相匹配的軟件產(chǎn)品也在不斷更新升級。由于計(jì)算機(jī)軟件產(chǎn)品更新過于頻繁,導(dǎo)致軟件研發(fā)成本不斷增加,甚至超出研發(fā)企業(yè)所能承受的范圍,考慮到減少軟件開發(fā)、維護(hù)、使用的成本,選擇軟件復(fù)用技術(shù)從事產(chǎn)品研發(fā)是很有必要的[1]。下面,筆者對計(jì)算機(jī)軟件復(fù)用技術(shù)進(jìn)行了探究。
軟件復(fù)用技術(shù)的核心思想是把各種功能的軟件看成一個(gè) “組件”,在開發(fā)相同功能的軟件時(shí)可不必重新設(shè)計(jì)程序,只需把對應(yīng)功能的 “組件”重新連接建立,由此形成一個(gè)新的軟件產(chǎn)品。為了避免軟件危機(jī)的發(fā)生,積極推廣軟件復(fù)用技術(shù)可以提高軟件的運(yùn)行效率。但受到技術(shù)條件的限制,軟件復(fù)用技術(shù)在我國推廣還存在較大的難度[2]。
1)技術(shù)方面 技術(shù)條件是軟件復(fù)用的關(guān)鍵,但我國在技術(shù)條件方面還難以滿足軟件復(fù)用的要求。由于軟件功能之間的差異,若把不同軟件看成某一個(gè)組件,很難找到與新軟件功能相同的組件,從而限制了軟件復(fù)用技術(shù)的運(yùn)用。軟件復(fù)用技術(shù)受構(gòu)架技術(shù)、系統(tǒng)技術(shù)等多項(xiàng)因素影響[3],具體內(nèi)容如圖1所示。
2)人才方面 軟件復(fù)用本質(zhì)上是對舊軟件產(chǎn)品的創(chuàng)新利用,計(jì)算機(jī)技術(shù)在我國推廣運(yùn)用起步較晚,國內(nèi)計(jì)算機(jī)專業(yè)人才的水平與發(fā)達(dá)國家相比存在很大的差距。如軟件復(fù)用時(shí)無法準(zhǔn)確判斷相同功能軟件的程序代碼是否沖突,造成軟件組合運(yùn)行后程序無法正常執(zhí)行命令。
圖1 軟件復(fù)用的影響因素
3)設(shè)備方面 新型軟件產(chǎn)品必須要在高性能的計(jì)算機(jī)設(shè)備里才能正常發(fā)揮作用,而市場上銷售的計(jì)算機(jī)多數(shù)來源于國外,長期購買國外產(chǎn)品也會(huì)增加軟件使用的成本。此外,計(jì)算機(jī)設(shè)備自身配備的操作系統(tǒng)是否滿足軟件復(fù)用技術(shù)的運(yùn)行要求也是一大難點(diǎn)。
從理論上來說,軟件復(fù)用思想對新軟件產(chǎn)品的開發(fā)及使用大有幫助,可以解決許多軟件應(yīng)用的難題,顯著降低軟件設(shè)計(jì)、開發(fā)和維護(hù)的成本投資。復(fù)用級別是軟件復(fù)用技術(shù)的重點(diǎn),根據(jù)不同的功能需求,軟件復(fù)用技術(shù)的級別主要包括如下內(nèi)容。
1)代碼復(fù)用 代碼復(fù)用是針對目標(biāo)代碼、源代碼2點(diǎn)。目標(biāo)代碼復(fù)用是通過連接、綁定等功能實(shí)現(xiàn),把相似軟件的代碼復(fù)制連接起來。源代碼復(fù)用是直接把需要使用的代碼復(fù)制到新軟件的程序里,無需重新設(shè)計(jì)新的代碼即可編程。代碼復(fù)用必須要具備大量可復(fù)用的構(gòu)件,這樣才能正常復(fù)用代碼操作[4],具體內(nèi)容如圖2所示。
圖2 代碼復(fù)用與軟件構(gòu)架技術(shù)
2)設(shè)計(jì)復(fù)用 設(shè)計(jì)復(fù)用相對于代碼復(fù)用級別更高,這種復(fù)用的操作難度更大。設(shè)計(jì)復(fù)用方法包括:①對已經(jīng)設(shè)計(jì)好的軟件系統(tǒng)結(jié)果篩選,選擇可以復(fù)用的構(gòu)件;②將舊軟件系統(tǒng)的所有文檔重新運(yùn)用于新軟件,確定哪些構(gòu)件可以復(fù)用;③結(jié)合新軟件的功能要求,重新開發(fā)新的設(shè)計(jì)構(gòu)件,該復(fù)用流程十分復(fù)雜。
3)分析復(fù)用 分析復(fù)用是一種自動(dòng)性的軟件復(fù)用級別,該法不會(huì)受到軟件設(shè)計(jì)技術(shù)的限制。主要復(fù)用方式包括:①對已經(jīng)建成的系統(tǒng)綜合分析,篩選能夠被復(fù)用的構(gòu)件參與新軟件的開發(fā);②利用新的文檔作為輸入端,再借助硬件平臺操作設(shè)計(jì)新系統(tǒng);③按照新軟件的需要重新設(shè)計(jì)可復(fù)用的構(gòu)件。
4)測試復(fù)用 測試復(fù)用是經(jīng)過軟件檢測確定復(fù)用的對象,以免復(fù)用后的構(gòu)件在新系統(tǒng)運(yùn)行時(shí)發(fā)生沖突。測試復(fù)用分為測試用例復(fù)用、測試過程信息復(fù)用。如測試過程信息復(fù)用時(shí),對軟件工具測試過程的信息詳細(xì)記錄,涉及到操作步驟、輸入?yún)?shù)、系統(tǒng)運(yùn)行等,經(jīng)過測試可保證復(fù)用構(gòu)件的可靠性。
面向?qū)ο蠓治龇椒?OOA)是現(xiàn)代計(jì)算機(jī)技術(shù)研究的重點(diǎn),其在軟件程序的編寫、修改、更新等方面的運(yùn)用極為廣泛[5],可以從被復(fù)用對象的程序編寫、分析、設(shè)計(jì)等方面完善軟件復(fù)用技術(shù)。設(shè)計(jì)人員采取軟件復(fù)用技術(shù)時(shí)引進(jìn)該方法,能保持軟件生命周期的高度一致性(如概念、原則、術(shù)語、表達(dá)等),從而有效增強(qiáng)新軟件的功能。
1)建模 面向?qū)ο蠓治龇ㄐ枰獦?gòu)建的模型有基本模型和補(bǔ)充模型,利用模型結(jié)構(gòu)分析能為軟件復(fù)用技術(shù)提供更好的平臺,把需要使用的信息準(zhǔn)確地表達(dá)出來,提高的復(fù)用對象的可復(fù)用性。如軟件復(fù)用的構(gòu)件無法適應(yīng)新系統(tǒng)要求時(shí),經(jīng)過建模分析可得出復(fù)用的差異性,為程序修改提供參考。以O(shè)OA階段的軟件復(fù)用模型的構(gòu)建為例,其具體過程如圖3所示。
軟件復(fù)用實(shí)現(xiàn)的流程包括如下步驟:①系統(tǒng)分析師針對項(xiàng)目的需求說明書進(jìn)行面向?qū)ο蟮南到y(tǒng)分析,構(gòu)造出相當(dāng)抽象的對象、行為和關(guān)系等模型;②對分析出的對象、行為和關(guān)系模型完成更深入的抽象過程,總結(jié)出相對獨(dú)立、高重用的范式,這些范式成為OOA階段軟件復(fù)用的主題;③把智能學(xué)習(xí)系統(tǒng)引入范式庫中,利用對范式庫進(jìn)行檢索找到已有的范式,直接利用上述范式進(jìn)行下一步分析和設(shè)計(jì);④若找不到所需要的范式,則結(jié)合智能學(xué)習(xí)系統(tǒng)把范式加入范式庫中,為后期復(fù)用技術(shù)創(chuàng)造條件[6]。
2)分工 對面向?qū)ο蠓治雠c面向?qū)ο笤O(shè)計(jì)(OOD)需要進(jìn)行相應(yīng)分工,這是由于2個(gè)面向?qū)ο蠓椒A段的功能不同。OOA主要考慮與問題域及系統(tǒng)責(zé)任相關(guān)的信息,OOA對分析對象的有關(guān)信息深入分析,掌握用戶的實(shí)際需求后開發(fā)軟件;OOD主要研究與實(shí)現(xiàn)條件相關(guān)的信息。
3)表示 面向?qū)ο蠓ǖ谋硎龇绞骄?“類”為代表,如面向?qū)ο蟮膶傩?、行為、關(guān)系等。軟件復(fù)用技術(shù)會(huì)因?yàn)閺?fù)用對象的不同而建立相匹配的系統(tǒng),如引入對一般——特殊結(jié)構(gòu)中多態(tài)性的表示法能夠有效改善類的可復(fù)用性。利用多方面的表示方法,讓類在系統(tǒng)復(fù)用時(shí)發(fā)揮更好作用。
圖3 OOA階段的軟件復(fù)用
4)連接 OOA一般采用簡單的二元關(guān)系表示各種復(fù)雜關(guān)系和多元關(guān)系。該方法能保證構(gòu)成系統(tǒng)的基本成分及內(nèi)在關(guān)系表達(dá)均符合一致性要求,使得軟件復(fù)用技術(shù)的組織、流程和操作更加規(guī)范化。如復(fù)用某軟件的程序代碼時(shí),利用連接可及時(shí)篩選相關(guān)程序,復(fù)制后即可用到新軟件中。
5)描述 類描述模板是OOA的描述平臺,在描述時(shí)可以弄清描述者及被描述者存在的差異。由于可復(fù)用構(gòu)件之間的關(guān)系并不對等,經(jīng)過繼承、聚合、實(shí)例連接和消息連接等關(guān)系的詳細(xì)描述,由此可以讓關(guān)系信息及其它程序代碼被同時(shí)復(fù)用,提高了軟件復(fù)用技術(shù)的復(fù)用效率。
軟件復(fù)用是軟件開發(fā)的重點(diǎn)技術(shù),其能夠降低新軟件程序設(shè)計(jì)的難度,減少軟件研發(fā)或維護(hù)的成本投資,為企業(yè)創(chuàng)造更多的經(jīng)濟(jì)收益。為了提高軟件復(fù)用技術(shù)的運(yùn)行效率,研究者要解決技術(shù)和設(shè)備等方面的難題,進(jìn)一步完善軟件復(fù)用體系。
[1]江龍強(qiáng),汪海濤.基于構(gòu)件的軟件復(fù)用技術(shù)研究及在MIS中的應(yīng)用 [J].微型機(jī)與應(yīng)用,2011(17):16-18.
[2]趙建平,趙建輝,顧培,等.一種基于數(shù)據(jù)庫和面向?qū)ο蟮能浖?fù)用技術(shù) [J].兵工自動(dòng)化,2011(8):92-96.
[3]宋玉璞,劉敏.軟件重用技術(shù)中幾個(gè)關(guān)鍵問題的探討 [J].價(jià)值工程,2011,30(11):151-152.
[4]王湘文,肖振南,陳紀(jì)銘.淺析軟件復(fù)用技術(shù)的應(yīng)用 [J].電腦知識與技術(shù),2011(21):5163-5164.
[5]董躍華,馬亞飛.軟件復(fù)用在綜合教務(wù)信息管理系統(tǒng)中的探索 [J].江西理工大學(xué)學(xué)報(bào),2011,32(3):26-29.
[6]史浩輝,何煒.基于構(gòu)件的指控軟件復(fù)用 [J].計(jì)算機(jī)技術(shù)與發(fā)展,2011,21(2):159-161,165.