摘要:軟件復(fù)用是解決軟件危機(jī)、提高軟件生產(chǎn)效率和質(zhì)量的現(xiàn)實(shí)可行的途徑。該文著重軟件復(fù)用的基本概念及軟件復(fù)用的思想,研究了軟件復(fù)用的過程及實(shí)現(xiàn),分析和研究了軟件復(fù)用所采用的軟件構(gòu)件技術(shù)中的關(guān)鍵技術(shù)。探討了軟件復(fù)用技術(shù)未來的發(fā)展趨勢。
關(guān)鍵詞:軟件復(fù)用;構(gòu)件;軟件體系結(jié)構(gòu)
中圖分類號:TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號:1009-3044(2008)24-1214-02
Research of Software Multiplying Engineering
ZHANG Xiu-ai
(Heze Computer and Information Engineering, Heze 274015, China)
Abstracts: Software reuse is waysof the feasible to solve software crisis and to improve software productivity and software quality. This paper Focus on software reuse the basic concept and the idea of software reuse, Research on the software reuse and the process of achieving, Analysis and research of the software used by the reuse of software component technology in key technologies Software Reuse of the future trend of development.
Key words: software reuse; component; software architecture
1 前言
軟件復(fù)用是指利用現(xiàn)有的軟件資源來構(gòu)造新的軟件系統(tǒng)。該軟件成分可能是己有的構(gòu)件,也可能是專門開發(fā)設(shè)計(jì)的可復(fù)用的軟件構(gòu)件。其中,可復(fù)用的現(xiàn)有軟件成分是軟件復(fù)用技術(shù)的核心。復(fù)用成分的獲取、管理和利用是構(gòu)成軟件復(fù)用技術(shù)的三個(gè)基本要素。通過軟件復(fù)用,在應(yīng)用系統(tǒng)開發(fā)中可以充分利用己有的開發(fā)成果,消除了在分析、設(shè)計(jì)、編碼、測試等方面的重復(fù)勞動(dòng),可以提高軟件開發(fā)的效率;同時(shí),通過復(fù)用高質(zhì)量的已有的開發(fā)成果,避免了重新開發(fā)可能引入的錯(cuò)誤,可以提高軟件的質(zhì)量。因此,軟件復(fù)用可以大大降低軟件開發(fā)的費(fèi)用,并顯著地提高生產(chǎn)效率和產(chǎn)品質(zhì)量。
2 軟件復(fù)用的主要思想
將軟件看成是由不同功能部分的“組件”所組成的有機(jī)體,每一個(gè)組件在設(shè)計(jì)編寫時(shí)可以被設(shè)計(jì)成完成同類工作的通用工具。這樣,如果完成各種工作的組件被建立起來以后,編寫特定軟件的工作就變成了將各種不同組件組織連接起來的簡單問題,這對于軟件產(chǎn)品的最終質(zhì)量和維護(hù)工作都有本質(zhì)性的改變。
3 軟件復(fù)用的實(shí)現(xiàn)
軟件復(fù)用有三個(gè)基本問題,一是必須有可以復(fù)用的對象;二是所復(fù)用的對象必須是有用的,三是復(fù)用者需要知道如何去使用被復(fù)用的對象。軟件復(fù)用包括兩個(gè)相關(guān)過程:可復(fù)用軟件(構(gòu)件)的開發(fā)(Development for Reuse)和基于可復(fù)用軟件(構(gòu)件)的應(yīng)用系統(tǒng)構(gòu)造(集成和組裝)( Development with Reuse)。解決好這幾個(gè)方面的問題才能實(shí)現(xiàn)真正成功的軟件復(fù)用。前者是生產(chǎn)可復(fù)用構(gòu)件的過程,后者是利用現(xiàn)有的可復(fù)用構(gòu)件生產(chǎn)新系統(tǒng)的過程。可復(fù)用構(gòu)件為有計(jì)劃地、系統(tǒng)地進(jìn)行復(fù)用提供了手段,是實(shí)現(xiàn)軟件復(fù)用的基石。
4 軟件復(fù)用的關(guān)鍵技術(shù)
實(shí)現(xiàn)軟件復(fù)用的關(guān)鍵因素主要包括:軟件構(gòu)件技術(shù)、領(lǐng)域工程、軟件構(gòu)架、軟件再工程、開放系統(tǒng)、軟件過程、CASE技術(shù)等,以及各種非技術(shù)因素。實(shí)現(xiàn)軟件復(fù)用的各種技術(shù)因素和非技術(shù)因素是互相聯(lián)系的,它們結(jié)合在一起,共同影響軟件復(fù)用的實(shí)現(xiàn)。
1) 軟件構(gòu)件技術(shù):軟件構(gòu)件技術(shù)是支持軟件復(fù)用的核心技術(shù)。
2) 軟件體系結(jié)構(gòu):軟件體系結(jié)構(gòu) (Software Architecture)也稱為架構(gòu),它是對軟件系統(tǒng)的系統(tǒng)組織,是對構(gòu)成系統(tǒng)的構(gòu)件的接口、行為模式、協(xié)作關(guān)系等體系問題的決策總和。研究軟件體系結(jié)構(gòu)有利于發(fā)現(xiàn)不同系統(tǒng)的高層共性,保證靈活和正確的系統(tǒng)設(shè)計(jì),對系統(tǒng)的整體結(jié)構(gòu)和全局屬性進(jìn)行規(guī)約、分析、驗(yàn)證和管理。
3) 領(lǐng)域工程:領(lǐng)域工程是為一組相似或相近系統(tǒng)的應(yīng)用工程建立基本能力和必備基礎(chǔ)的過程,它覆蓋了建立可復(fù)用軟件構(gòu)件的所有活動(dòng)。領(lǐng)域是指一組具有相似或相近軟件需求的應(yīng)用系統(tǒng)所覆蓋的功能區(qū)域。領(lǐng)域工程包括三個(gè)主要的階段:領(lǐng)域分析、領(lǐng)域設(shè)計(jì)以及領(lǐng)域?qū)崿F(xiàn)。
4) 軟件再工程:現(xiàn)存大量的遺產(chǎn)軟件系統(tǒng)由于技術(shù)的發(fā)展,正逐漸退出使用,如何對這些系統(tǒng)進(jìn)行挖掘和整理,得到有用的構(gòu)件;己有的構(gòu)件隨著時(shí)間的流逝會(huì)逐漸變得不可使用,如何對它們進(jìn)行維護(hù),以延長其生命期等等。軟件再工程正是解決這些問題的主要技術(shù)手段。
5) 開放系統(tǒng)技術(shù):開放系統(tǒng)技術(shù)的基本原則是在系統(tǒng)的開發(fā)中使用接口標(biāo)準(zhǔn),同時(shí)使用符合接口標(biāo)準(zhǔn)的實(shí)現(xiàn)。它為軟件復(fù)用提供了良好的支持,使構(gòu)件可以方便地以“即插即用”的方式組裝到系統(tǒng)中,實(shí)現(xiàn)黑盒復(fù)用。這樣,符合接口標(biāo)準(zhǔn)的前提下,構(gòu)件就可以獨(dú)立地進(jìn)行開發(fā),從而形成獨(dú)立的構(gòu)件制造業(yè)。
6) 軟件過程:軟件過程又稱軟件生存周期過程,是軟件生存周期內(nèi)為達(dá)到一定目標(biāo)而必須實(shí)施的一系列相關(guān)過程的集合。一個(gè)良好定義的軟件過程對軟件開發(fā)的質(zhì)量和效率有著重要影響?;跇?gòu)件復(fù)用的軟件開發(fā)過程和傳統(tǒng)的一切從頭開始的軟件開發(fā)過程有著實(shí)質(zhì)性的不同,所以探討適應(yīng)于軟件復(fù)用的軟件過程成為迫切的問題。
7) CASE技術(shù):CASE技術(shù)對軟件工程的很多方面都可以提供有力的自動(dòng)或半自動(dòng)支持。軟件復(fù)用同樣需要CASE技術(shù)的支持。CASE技術(shù)中與軟件復(fù)用相關(guān)的主要研究內(nèi)容包括:在面向復(fù)用的軟件開發(fā)(Software Development)中,可復(fù)用構(gòu)件的抽取、描述、分類和存儲(chǔ)、提取組裝、可復(fù)用構(gòu)件的度量等等。
5 軟件復(fù)用的過程
可以歸納為抽象、選取、實(shí)例化和集成四個(gè)部分。抽象是指對可復(fù)用軟件資源的概括和提煉;選取是尋找、比較和選擇最合適的可復(fù)用軟件資源;實(shí)例化是指對軟件資源的修改并形成它的實(shí)例;集成是將選定的已實(shí)例化的可復(fù)用軟件資源組合成完整的軟件系統(tǒng)。所以,軟件復(fù)用過程可以概括為:一個(gè)用為復(fù)用所開發(fā)的可復(fù)用軟件的資源來創(chuàng)建或集成軟件應(yīng)用程序和系統(tǒng)的過程。這樣的復(fù)用過程將軟件開發(fā)分成兩個(gè)階段:可復(fù)用軟件資源的生產(chǎn)階段和基于可復(fù)用軟件資源的應(yīng)用系統(tǒng)開發(fā)階段??蓮?fù)用軟件資源的生產(chǎn)階段對應(yīng)于領(lǐng)域工程,進(jìn)行可復(fù)用軟件資源的分析、設(shè)計(jì)和實(shí)現(xiàn);基于可復(fù)用軟件資源的應(yīng)用系統(tǒng)開發(fā)階段對應(yīng)于應(yīng)用系統(tǒng),利用可復(fù)用資源對應(yīng)用系統(tǒng)進(jìn)行分析、設(shè)計(jì)和實(shí)現(xiàn)

6 基于可復(fù)用構(gòu)件的應(yīng)用系統(tǒng)的開發(fā)
軟構(gòu)件模型是關(guān)于開發(fā)可重用軟構(gòu)件和構(gòu)件之間通信的一組標(biāo)準(zhǔn)的描述。通過重用己有的構(gòu)件,使用構(gòu)件對象模型的軟件開發(fā)者可以像搭積木一樣快速構(gòu)造應(yīng)用程序。這樣不僅可以節(jié)省時(shí)間和經(jīng)費(fèi),提高工作效率,而且可以產(chǎn)生更加規(guī)范,更加可靠的應(yīng)用程序。
基于可復(fù)用構(gòu)件的應(yīng)用系統(tǒng)的開發(fā)一般包括以下步驟:
1) 進(jìn)行系統(tǒng)調(diào)查和需求分析,明確和系統(tǒng)交互的人員、外部系統(tǒng),也就是確定系統(tǒng)邊界和問題域,同時(shí)明確系統(tǒng)要完成什么功能、表達(dá)什么信息,即表示系統(tǒng)責(zé)任;
2) 對系統(tǒng)的每個(gè)USECASE進(jìn)行流程分析,即明確每個(gè)USE CASE的實(shí)現(xiàn)流程;
3) 采用面向?qū)ο蠓治龇椒ǎ⒔Y(jié)合每個(gè)USECASE的SEQUENCE框圖和COLLAB A lON框圖,建立系統(tǒng)的CLASS框圖(包括對象層、特征層和關(guān)系層),CLASS框圖中的每個(gè)方法只需定義出接口,即輸入、輸出什么參數(shù),而不包括實(shí)現(xiàn)細(xì)節(jié),把具體的實(shí)現(xiàn)(包括程序框圖、實(shí)現(xiàn)代碼)留到設(shè)計(jì)階段去做;
4) 在建立系統(tǒng)的CLASS框圖之后,綜合考慮系統(tǒng)責(zé)任、系統(tǒng)的體系結(jié)構(gòu)、開發(fā)平臺(tái),建立系統(tǒng)的構(gòu)件模型;
5) 設(shè)計(jì)構(gòu)件。在設(shè)計(jì)構(gòu)件之前,查詢可復(fù)用構(gòu)件庫,對己有構(gòu)件(相同的直接復(fù)用,相近的通過修改復(fù)用)進(jìn)行復(fù)用,對于新構(gòu)件進(jìn)行設(shè)計(jì)。新構(gòu)件設(shè)計(jì)包括接口設(shè)計(jì)(LOL文件設(shè)計(jì))、每個(gè)功能的程序框圖設(shè)計(jì)、算法設(shè)計(jì)以及復(fù)雜算法的偽代碼;
6) 實(shí)現(xiàn)新構(gòu)件,使用以構(gòu)件庫中的可復(fù)用構(gòu)件為核心開發(fā)的構(gòu)件,建立應(yīng)用系統(tǒng);
7) 系統(tǒng)測試與運(yùn)行。將系統(tǒng)移植到相應(yīng)的分布式環(huán)境中進(jìn)行測試,對問題進(jìn)行修改,直到滿足用戶要求。
7 發(fā)展趨勢
軟件工程技術(shù)日益普及,軟件、平臺(tái)、環(huán)境開始廣泛使用。軟件復(fù)用和軟件構(gòu)件技術(shù)受到廣泛關(guān)注。采用基于軟件復(fù)用的軟件構(gòu)件,將使軟件設(shè)計(jì)、生產(chǎn)工廠化成為可能,是未來軟件開工具發(fā)的發(fā)展方向,軟件復(fù)用和軟件構(gòu)件技術(shù)是解決軟件危機(jī),提高軟件開發(fā)效率和質(zhì)量的有效途徑,是一種社會(huì)化的軟件開發(fā)方法。軟件復(fù)用和軟件構(gòu)件技術(shù)將引起軟件產(chǎn)業(yè)的深刻變革,尤其是近年來,網(wǎng)絡(luò)的興起為大型軟件的分布式開發(fā)帶來了得天獨(dú)厚的條件,軟件產(chǎn)品的國際化水平將不斷提高。因此,該技術(shù)一定會(huì)有良好的發(fā)展前景。
參考文獻(xiàn):
[1] 陳菲,劉克勤.計(jì)算機(jī)軟件復(fù)用技術(shù)研究[J].現(xiàn)代電力,2002,19(6):95-101.
[2] 王少鋒,何志均,王克宏.軟件重用技術(shù)研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2000,21(5):10-15.
[3] 曾廣周,孫紅梅.基于軟件構(gòu)件的軟件開發(fā)方法研究[J].計(jì)算機(jī)研究與發(fā)展,1998,35(11):991-995.
[4] 徐珊娜.基于復(fù)用技術(shù)的構(gòu)件研究與實(shí)現(xiàn)[D].西安建筑科技大學(xué)碩士論文,2007.
[5] 王志堅(jiān), 費(fèi)玉奎. 軟件構(gòu)件技術(shù)及其應(yīng)用[M].北京:科學(xué)出版社,2005:36.