必威电竞|足球世界杯竞猜平台

軟件復用
來源:互聯網

軟件復用(軟件 Reuse)是指在兩次或多次不同的軟件開發過程中重復使用相同或相近軟件元素的過程,它是提高軟件生產力和質量的一項重要技術。軟件復用技術可以在應用系統開發中充分地利用已有的開發成果,消除了包括分析、設計、編碼、測試等在內的許多重復勞動。

軟件復用由D·麥克羅伊(D·Mcllroy)在1968年國際首次討論軟件工程的會議上正式提出,作為解決“軟件危機”的一種可能方法。早期的軟件復用主要是代碼級復用,后來逐步擴大到需求、設計代碼、文檔、領域知識、體系結構等與軟件產品相關的各方面。軟件構件技術、軟件體系結構技術、領域工程技術等是常見的軟件復用技術,軟件復用可以依據復用對象、可復用信息、復用方法等多個角度來進行分類,常見的分類有產品復用、過程復用、黑箱復用、白盒復用等。

軟件復用技術在雷達數據處理、嵌入式開發等領域應用廣泛。軟件復用的應用不僅是一種技術革命,更是一種社會化的行為,是一種大眾化的軟件開發方法。它使得更多人能夠參與到軟件開發的行列中來,共同推動軟件產業的發展。要真正實現軟件的工業化生產方式,達到軟件產業發展所需要的軟件生產率和質量,軟件復用是一條現實可行的途徑。

發展沿革

背景

計算機的計算資源的應用可以促進社會的飛速發展,隨著生產力的不斷發展,出現的功能又更加復雜化,這就需要更多的新的軟件的出現。但每一個新軟件的開發,都必然從頭開始,在每一個階段都會不可避免的出現重復勞動,使開發效率降低。并且,軟件開發在最初都會面臨一些問題,其中就包括工期短、任務重、缺少骨干人員等。為了解決這個問題,人們開始探索軟件復用的方法和技術,以提高軟件的生產力和質量,降低軟件開發和維護的成本。

起源及發展

萌芽

軟件復用的正式提出是在1968年,D·麥克羅伊(D·Mcllroy)在國際首次討論軟件工程的會議上建議建立生產軟組件的工廠,用軟組件構成復雜系統,作為解決“軟件危機”的一種可能方法。最早用于軟件復用的軟件成分是程序代碼,軟件開發人員通過使用相應的子程序名和參數,就可以在軟件開發過程中重復使用這些程序代碼,這是軟件復用的一種原始形態。D·麥克羅伊還指出,構件其實可以按照它的方便性,操作平臺,易用性進行分類,仿照其它工業模式使復雜的軟件系統通過構件的標準化接口合理對接、集成,這其實是類構件的本質,是類構件最初的想法。然而,在這以后軟件復用技術發展異常緩慢。

再發現期

20世紀70年代末到80年代末,軟件復用技術迅速發展成為軟件工程的一個重要的應用領域。1983年紐波特(Newport)、海德畢格士塔夫(Hed Biggerstuff) 和 艾倫佩蒂斯(Alan Petis)第一次在美國組織了軟件復用研討會。1984年、1987年,美國《IEEE(Institute of Electrical and Electronics Engineers)軟件工程匯刊》和《IEEE軟件期刊》先后出版了軟件復用相關技術的專輯。

發展期

20世紀90年代,程序設計進入了基于組件的軟件開發階段,該階段以過程為中心,強調軟件開發采用組件化技術和體系結構技術,要求開發出的軟件具備很強的自適應性、互操作性、可擴展性和可復用性。1991年,德國舉行了第一屆軟件復用國際研討會(JWSR),后來在1993年又舉行了第二次軟件復用研討會。1992年,STARS項目組提交了ALOAF(基于ALOAF的分布式構件庫框架模型)開放體系結構的構件庫框架,實現了ALOAF規約作為該參考模型的實例。卡爾迪耶里(Caldieri)和巴西利(Basili)提出了基于復用的軟件開發過程。1993年,弗里曼(Freeman)進一步拓寬了軟件復用概念。為了給予軟件復用技術上的幫助,這幾年里歐洲重點設計了幾個軟件復用的項目,如ESF(Eureka 軟件 工廠)等。

成熟期

一九九四年的軟件復用國際研討會議正式更名為軟件復用國際會議,這標志著軟件復用已經發展到一個成熟階段,軟件復用已經深入人心。此時軟件復用開始受到高度重視,軟件業界越來越多的人投入到軟件復用的探討大軍當中,同時面向對象技術的崛起賦予了軟件復用新的生命力。類庫、構件等都是利用了復用的思想,微軟ActiveX技術是一個很好的例子。這一切都表明了軟件復用技術已經走向成熟。互聯網的出現及由它引發的全球化分工為復用技術提供了一個更大的發展空間,很多軟件復用相關學者正開始研究互聯網上軟件類庫的設計思想。至2011年,軟件復用領域取得一些實用成果,軟件復用進入初步實用期。各廠商開發了許多支持復用的軟件系統,如東芝東芝)的軟件工廠,Draco,Genesis系統等。截止2018年,軟件技術可以通過容器實現不同服務,也為邏輯模型提供了幫助,在日后的構件技術發展中奠定了實踐基礎。

分類

軟件復用可以依據不同的復用對象、可復用信息、復用方法、功能需求、預算多個角度來進行分類。根據復用對象的不同,可以將軟件復用分為產品復用和過程復用。根據可復用信息的不同,可以將軟件復用區分為黑箱復用和白盒復用。依據復用方法的不同,軟件復用按照復用過程可以將軟件復用分為組合式復用和生成式復用。依據不同的功能需求(技術級別),軟件復用可分為代碼復用、設計復用、分析復用和測試復用。按照預算投入的不同,軟件復用可分為主動型、反應型和提取型,依據軟件復用的預算投入選擇適合的復用類型。

依據復用對象分類

根據復用對象的不同,可以將軟件復用分為產品復用和過程復用。

產品復用

產品復用指復用已有的軟件構件,通過構件集成(組裝)得到新系統。產品復用是目前現實的、主流的途徑。

過程復用

過程復用指復用已有的軟件開發過程,使用可復用的應用生成器來自動或半自動地生成所需系統。過程復用依賴于軟件的發展,目前只適用于一些特殊的應用領域。

依據復用信息分類

根據可復用信息的不同,可以將軟件復用區分為黑箱復用和白盒復用。

黑盒復用

黑盒復用(Black-box)指對已有產品或構件不需作任何修改,直接進行復用,這是理想的復用方式。

白盒復用

白盒復用(White-box)是指已有構件并不能完全符合用戶需求,必須根據用戶需求對已有產品進行適應性修改后才可使用。而在大多數應用 的組裝過程中,構件的適應性修改是必需的。

依據復用方法分類

依據復用方法的不同,軟件復用按照復用過程可以將軟件復用分為組合式復用和生成式復用。

組合式復用

采用組合式復用技術時,對己有構件不作修改或作部分修改,就將構件組裝在一起,從而構造出新的目標系統。UNLX中的Shell語言和管道采用的就是典型的組合式復用的思想,其他如技術、軟件IC技術等也是采用組合式復用的例子。組合式復用主要的研究內容包括構件的分類、檢索、評估、定制、組合、庫的組合、管理、使用等,大量的構件必須用庫來管理,對于這種專用庫來說,庫的管理、庫中內容的組織、分類、檢索等都是新的研究課題。

生成式復用

生成式復用技術則是利用可復用的模式,通過應用生成器產生新的程序或程序段,產生的程序可以看作是模式的實例,比較有名的生成式復用例子如UNLX中的詞法分析器Lex和語法分析器Yacc等生成式復用的特點是復用效率一般比較高。但是實現生成式復用一般比較困難。生成式復用的研究重點是如何形式化地表示特定領域的規格說明書、系統處理過程及元生成器等。

依據功能需求分類

根據不同的功能需求(技術級別),軟件復用可分為代碼復用、設計復用、分析復用和測試復用。

代碼復用

代碼復用是針對目標代碼、源代碼兩點。目標代碼復用是通過連接、綁定等功能實現,把相似軟件的代碼復制連接起來。源代碼復用是直接把需要使用的代碼復制到新軟件的程序里,無需重新設計新的代碼即可編程。代碼復用必須要具備大量可復用的構件,這樣才能正常復用代碼操作。

設計復用

設計復用相對于代碼復用級別更高,這種復用的操作難度更大。設計復用方法包括:對已經設計好的軟件系統結果篩選,選擇可以復用的構件;將舊軟件系統的所有文檔重新運用于新軟件,確定哪些構件可以復用;結合新軟件的功能要求,重新開發新的設計構件,該復用流程十分復雜。

分析復用

分析復用是一種自動性的軟件復用級別,該法不會受到軟件設計技術的限制。主要復用方式包括:對已經建成的系統綜合分析,篩選能夠被復用的構件參與新軟件的開發;利用新的文檔作為輸入端,再借助硬件平臺操作設計新系統;按照新軟件的需要重新設計可復用的構件。

測試復用

測試復用是經過軟件檢測確定復用的對象,以免復用后的構件在新系統運行時發生沖突。測試復用分為測試用例復用、測試過程信息復用。如測試過程信息復用時,對軟件工具測試過程的信息詳細記錄,涉及到操作步驟、輸入參數、系統運行等,經過測試可保證復用構件的可靠性。

依據預算分類

按照預算投入的不同,軟件復用可分為主動型、反應型和提取型,依據軟件復用的預算投入選擇適合的復用類型。

主動型

以主動型方式開發的復用軟件,系統的設計和實施要考慮所有可能的變化,其中就包括復用資產的設計,針對產品線的主動型開發方式,就像針對傳統軟件的瀑布模型,產品線開發又被稱為領域工程,是指“為復用而開發”的過程,以生產可復用的軟件資產(RSA),組織采用這種方法可以準確地估計產品線的長遠需求。然而,如果未來的產品需求不符合預期的需求,這種方法就會面臨投資失敗的風險。

反應型

在反應型方法中,當開發產品時,如果出現復用機會就可以進行可復用軟件的開發,這種方法可以在下列情況中使用:很難對產品變化的需求進行長期預測;機構需要保持一個積極的生產計劃,沒有太多的資源來開發可復用資產。

提取型

提取型方式介于主動型和反應型之間。在制定一個領域工程的初期,可以采用提取型方式復用一些操作性較強的軟件產品,是一種能夠迅速地從傳統方式轉移到領域工程的復用方式。

依據應用領域范圍分類

按照軟件復用所應用的領域范圍的不同,軟件復用可以分為橫向復用和縱向復用。

橫向復用

橫向復用是指復用不同應用領域中的軟件元素,例如數據結構、分類算法、人機交互構件等。標準函數庫是一種典型的原始的橫向復用機制。

縱向復用

縱向復用是指在一類具有較多公共性的應用領域之間進行軟部品復用。

依據粒度大小和抽象層次

依據復用粒度大小和抽象層次的不同,可將軟件復用分為小粒度、中粒度和大粒度三類。

小粒度復用

小粒度復用即小規模復用,例如程序代碼的復用。主要表現為函數、子程序/面向對象中的類、方法的復用。源代碼復用和目標代碼復用屬于小粒度復用。

中粒度復用

中粒度復用即中等規模復用,例如軟件設計結果的復用。進一步按復用粒度的大小,又分為兩種:微體系結構的復用和宏體系結構的復用。前者是注重于如何對系統的局部行為進行要領建模和解釋,而后者則以宏體系結構為基礎,注重系統的全局結構的建立。在面向對象的程序設計中,微體系結構由描述相關的類及其相互關系的設計和代碼兩部分組成。而宏體系結構的復用對象則是組成系統的各微體系結構及其相互關系。設計結果復用和分析結果復用均屬于中粒度復用。

大粒度復用

大粒度復用即大規模復用,例如應用子系統的復用。復用對象是獨立開發的應用程序或子系統。在復用過程中,它們不能作任何修改和擴充。通過一些標準協議,可使這些大粒度構件(應用程序)協同工作,共同實現某些功能。類塊復用和構件技術屬于大粒度復用。

軟件復用過程

一般過程

軟件復用的一般過程包含兩個主要的復用階段:生產者復用階段和消費者復用階段。

生產者復用

生產者復用是建立、獲取以及管理可復用資產的階段,該階段的活動主要涵蓋抽象、實現與入庫。

抽象是一種泛化的過程,它旨在從一系列已有軟件制品中抽取那些被不同應用所共享的可復用軟件部分并刻畫其可復用特性,同時擯棄已有軟件制品特定的實現細節。實現是創建可復用資產的過程。入庫是將已開發或獲取得到的可復用資產存放于統一的資產庫的過程。按照資產庫的要求,入庫時需要為可復用資產標識其屬性、刻面等信息。

消費者復用

消費者復用是使用可復用資產建立新的應用產品的階段,該階段的活動主要是選取、定制與集成。

選取是復用者根據自身的需要以及可復用對象的描述,尋找、比較和選擇適合需要的可復用資產。定制表示對可復用的制品進行修改或適配,使其滿足復用的需求與上下文。集成指將定制后的可復用制品與其他制品一起組合為應用系統。

軟件復用的關鍵技術

實現軟件復用的因素主要包括:軟件構件技術、領域工程、軟件構架、軟件再工程、開放系統、軟件過程、CASE 技術等,以及各種非技術因素。實現軟件復用的各種技術因素和非技術因素是互相聯系的,它們結合在一起,共同影響軟件復用的實現。

軟件構件技術

軟件構件技術是支持軟件復用的核心技術,是近幾年來迅速發展并受到高度重視的一個學科分支。構件(Component)是指應用系統中可以明確辨識的構成成分,而可復用構件(Reusable Component)是指具有相對獨立的功能和可復用價值的構件。在軟件開發過程中,軟件開發人員合理運用軟件構件可以顯著增強應用軟件的功能,使其功能更加多樣化。此外,在構件編寫過程中,軟件開發者若能夠合理將軟件構件連接起來并放入數據庫中,增強軟件構件的應用性,將在一定程度上提高軟件開發的效率,控制軟件開發成本。構件的概念已不再局限于源代碼構件,而是延伸到需求、系統和軟件的需求規則約、系統和軟件的構架、文檔、測試計劃、測試案例和數據以及其他對開發活動有用的信息。其主要研究內容包括:

(1)構件獲取:有目的的構件生產和從已有系統中挖掘提取構件;

(2)構件模型:研究構件的本質特征及構件間的關系;

(3)構件描述語言:以構件模型為基礎,解決構件的精確描述、理解及組裝問題;

(4)構件分類與檢索:研究構件分類策略、組織模式及檢索策略,建立構件庫系統,支持構件的有效管理;

(5)構件復合組裝:在構件模型的基礎上研究構件組裝機制,包括源代碼級的組裝和基于構件對象互操作性的運行級組裝;

(6)標準化:構件模型的標準化和構件庫系統的標準化。

軟件構架

軟件構架是對系統整體結構設計的刻劃,包括全局組織與控制結構,構件間通訊、同步和數據訪問的協議,設計元素間的功能分配,物理分布,設計元素集成,伸縮性和性能,設計選擇等。軟件構架研究如何快速、可靠地從可復用構件構造系統的方式,著重于軟件系統自身的整體結構和構件間的互聯。其中主要包括:軟件構架原理和風格,軟件構架的描述和規約,特定領域軟件構架,構件向軟件構架的集成機制等。通過對軟件構架的研究,有利于發現不同系統在較高級別上的共同特性;獲得正確的構架對于進行正確的系統設計非常關鍵。對各種軟件構架的深入了解,使得軟件工程師可以根據一些原則在不同的軟件構架之間作出選擇;從構架的層次上表示有利于系統較高級別性質的描述和分析。在基于復用的軟件開發中,為復用而開發的軟件構架可以作為一種大粒度的、抽象級別較高的軟件構件進行復用,且軟件構架還為構件的組裝提供了基礎和上下文,對于成功的復用具有非常重要的意義。

領域工程

領域工程是為一組相似或相近系統的應用工程建立基本能力和必備基礎的過程,它覆蓋了建立可復用軟件構件的所有活動。領域是指一組具有相似或相近軟件需求的應用系統所覆蓋的功能區域。

領域工程包括三個主要的階段:

(1)領域分析:這個階段的主要目標是獲得領域模型(Domain Model)。領域模型描述領域中系統之間的共同的需求、這個階段的主要活動包括確定領域邊界,識別信息源,分析領域中系統的需求,確定哪些需求是被領域中的系統廣泛共享的,哪些是可變的,從而建立領域模型。

(2)領域設計:這個階段的目標是獲得領域構架(Domain Specific 軟件 建筑,縮寫為 DSSA)。DSSA描述在領 域模型中表示的需求的解決方案,它不是單個系統的表示,而是能夠適應領域中多個系統的需求的一個高層次的設計。建立了領域模型之后,就可以派生出滿足這些被建模的領域需求的DSSA。由于領域模型中的領域需求具有一定的變化性,DSSA也要相應地具有變化性。

(3)領域實現:這個階段的主要行為是定義將需求翻譯到由可復用構件創建的系統的機制。根據所采用的復用策略和領域的成熟和穩定程度,這種機制可能是一組與領域模型和DSSA相聯系的可復用構件,也可能是應用系統的生成器。

軟件再工程

軟件再工程是一個工程過程,它將逆向工程、重構和正向工程組合起來,將現存系統重新構造為新的形式。再工程的基礎是系統理解,包括對運行系統、源代碼、設計、分析、文檔等的全面理解。但在很多情況下,由于各類文檔的丟失,只能對源代碼進行理解,即程序理解。現存大量的遺產軟件系統由于技術的發展正逐漸退出使用,如何對這些系統進行挖掘和整理,得到有用的構建;已有的構件隨著時間的流逝會逐漸變得不可使用,如何對它們進行維護,以延長其生命期等等,軟件再工程正是解決這些問題的主要技術手段。

開放系統技術

開放系統技術的基本原則是在系統的開發中使用接口標準,同時使用符合接口標準的實現。這些為系統開發中的設計決策,特別是對于系統的演化,提供了一個穩定的基礎,同時也為系統(子系統)間的互操作提供了保證。開放系統技術為軟件復用提供了良好的支持,特別是分布對象技術使得符合接口標準的構件可以方便地以“PnP”的方式組裝到系統中,實現黑箱復用。在符合接口標準的前提下,構件就可以獨立地進行開發,從而形成獨立的構件制造業。

軟件過程

軟件過程是為了實現一個或者多個事先定義的目標而建立起來的一組實踐的集合,這組實踐之間往往有一定的先后順序,作為一個整體來實現事先定義的一個或者多個目標。需要特別指出的是:這里所提及的一個或者多個目標就是軟件項目管理試圖要實現的目標,例如成本、工期以及質量等典型目標。當討論過程改進的相關概念時,技術(包括工具)革新、人員培訓以及流程優化等均屬于軟件過程改進的內容。為了以示區別,可以將軟件過程區分為狹義的過程和廣義的過程。狹義的過程指前文所描述的一組有先后順序的實踐;廣義的軟件過程則應該包括技術、人員以及狹義過程。過程的作用則不僅僅是這個三角形中的一極,它更加關鍵的作用是連接技術和人員的粘合劑,只有將技術、人員以及狹義過程三者融合成一個整體,才是一個真正可以指導工作的軟件過程。

CASE技術

在軟件工程活動中,軟件工程師和管理員按照軟件工程的方法和原則,借助于計算機及其軟件工具的幫助,開發、維護、管理軟件產品的過程,稱為計算機輔助軟件工程 CASE(Computer Aided 軟件 Engineering)。計算機輔助軟件工程是一套方法和工具,可按系統開發商規定的應用規則,并由計算機自動生成合適的計算機程序。CASE工具可分成高級CASE和低級CASE。高級CASE工具用來繪制企業模型以及規定應用要求;低級CASE工具用來生成實際的程序代碼。CASE工具和技術可提高系統分析和程序員工作效率。CASE的實質是為軟件提供一組能大量節省人力的軟件開發工具,實現軟件生存期各階段的自動化,并使其成為一個整體。

非技術因素

除了上述的技術因素以外,軟件復用還涉及眾多的非技術因素,如:機構組織如何適應復用的需求;管理方法如何適應復用的需求;開發人員知識的更新;創造性和工程化的關系;開發人員的心理障礙;知識產權問題;保守商業秘密的問題;復用前期投入的經濟考慮;標準化問題等等。

層級

軟件復用分為四個層級,分別是抽象級、對象級、組件級和系統級。

抽象級

在抽象級別上,并不是直接復用軟件,而是在軟件的設計中使用關于一些成功的抽象知識。設計模式、軟件體系結構模式都是面向服用的抽象知識表示的方式。

對象級

在對象級別上,直接復用來自庫中的對象而不是自己寫成代碼。為了實現這種類型的復用,必須找到合適的庫,而且確定其中的對象和方法是否提供了所需要的功能。例如,如果需要在一個Java程序中處理電子郵件消息,可以使用JavaMail庫中的對象和方法。

組件級

組件是對象和對象類的集合,他們一起運行以提供相應的功能和服務,常常都要通過增加一些自己的代碼來對組件進行適配和擴展。一個組件級復用的例子是利用一個框架來構建自己的用戶界面。這個框架包括一組實現事件處理、顯示管理等的通用對象類。需要增加與顯示數據之間的連接,并且寫代碼來定義特定的顯示細節。

系統級

第三方提供商業現成產品(Commercial-off-The-Shelf,COTS)任何應用系統復用,又稱應用系統級。例如,工作流管理、數據清洗等應用系統。此過程中通常會包括對這些系統的某種方式的配置。這可能通過增加和修改代碼來實現,或者通過使用系統自身的配置接口來實現。大多數商業化系統現在都是用這種方式構建的,其中會對通用的應用系統進行適配和復用。有時候這種方法還可以對多個應用系統的集成來創建一個新系統。

優點及缺點

優點

由于復用的軟件被廣泛使用,它前期暴露的軟件缺陷已被修復,所以使用以前的軟件往往缺陷更少。

構建一個新的組件可能比復用現有的組件更容易失敗,軟件通過復用減少了許多不確定因素,大大降低了信息系統項目本身的固有風險。

軟件復用對快速原型設計有一定的支持效果,那么快速有效地構造出應用程序的原型可以充分利用可復用構件和構架,從而獲得用戶對系統功能的反饋;通過使用同一個接口的實現,系統將更為有效地實現與其它系統之間的互操作。

軟件復用使系統的維護代價得以減少;如果現有的資產被復用,項目就會變得更具有成本效益。

對于合理的復用,找到復用組件及對它的調整所花費的時間遠遠小于開發新組件所需的時間,軟件工程師在規約、設計、實施和測試等活動會花費更少的時間和精力,更快更好地完成任務。

缺點

若構件的源代碼不可得,隨著系統的變更,系統中復用部分的不兼容性增加,維護成本也需要相應地增加。比如,復用組件的外部更改可能會迫使改變復用軟件;更改一個復用組件比自定義一個組件難。填充構件庫并保證軟件人員能使用需要極大的開銷,且當前對構件的分類、編寫目錄和恢復技術尚不成熟。

維護復用組件的目錄和尋找組件的支持較少,開發工具不能較好地支持復用組件的開發。沒有良好的分類模式,使得構件查找比較困難。并且,在軟件復用的過程中,往往缺乏良好的構件庫支持和控制復用,構件庫中的構件沒有良好的接口,已有的部件不是為了復用而開發的。

軟件復用適用于許多通用組件,但是不適用域名具體的組件。

影響軟件復用發展的因素

軟件復用各方面的困難,無論是技術問題還是非技術問題,都影響著軟件復用的廣泛實行。影響軟件復用發展的因素主要有技術因素、人為因素和管理因素。

技術因素

在對軟件復用技術進行應用時常常會出現構件與應用方面出現不兼容的問題,通常情況之下,構件要在其他的應用或者軟件中使用,就需要對構件進行調試,才能夠使它融入到應用與軟件之中發揮作用,這讓軟件復用在使用方面遇到了一定的困難。隨著計算機技術的不斷發展,很多原有的軟件技術代碼或者函數方面的問題已經得到了解決,組件的分布也得到了極大程度的改善。

人為因素

軟件開發是一種創造性工作,大多數計算機軟件開發的工作人員擁有自己的創造性思維,長期從事這個行業的人們形成了一種職業習慣:對于他人的工作成果往往比較不屑,并且不愿意花費時間進行復用與調試。在很多情況之下,對于其他已經開發的軟件進行適當的修改就可以進行重新運用,但是工作人員往往想要重新開發,這會消耗大量不必要的時間與精力,對軟件復用的推廣有著極大的消極影響。

管理因素

對于計算機軟件管理工作來講,先前所設計出的軟件使用規則以及程序復用方面來講有著很大的差異。如計算工作量時,對復用的部分打很大的折扣,甚至不算工作量;另外不是在項目開始時自覺地向著造就可復用構件的方向努力,而是在它完成之后,再看能否從中找到一些可復用構件。這些弊端妨礙了復用水平的提高和復用規模的擴大,甚至會挫傷致力于軟件復用的人員的積極性。

影響及應用

軟件復用的應用不僅提高了軟件開發的效率和質量,降低了開發成本,而且加速了軟件行業的發展步伐。這種技術手段不僅是一種技術革命,更是一種社會化的行為,一種大眾化的軟件開發方法。它使得更多人能夠參與到軟件開發的行列中來,共同推動軟件產業的發展。

生成式復用

生成式復用的概念與流程生成式復用的核心是應用程序生成器,生成器主要包含翻譯器與生成規則兩個部分。生成式復用的開發過程是對應用程序生成器的復用過程,是對生成器內部轉換規則的復用過程,而轉換規則又內含了對各種領域知識的復用。針對一個特定領域的生成式復用能夠帶來比較高的效益,對終端用戶而言其使用也較為簡單(終端用戶只需要基于DSL,寫出特定應用的規格描述),但能生產出的應用產品被限制在一個領域范圍內,不具有跨領域的通用性。

面向對象技術中的軟件復用

面向對象(Object-Oriented,OO)技術已是最為流行的軟件開發技術。由于OO具有封裝、繼承與多態的特性,因此OO比面向過程的軟件開發方法具有更多的支持軟件復用的能力。OO技術中的復用主要包括針對類的復用以及針對設計模式的復用。

組裝式復用

組裝式復用是基于預先已創建的可復用資產庫,在開發軟件時從庫中選取合適的軟件制品(如軟件構件),然后組裝生成新的軟件產品的過程。組裝式復用是對軟件功能實體的復用,保存在可復用資產庫中的軟件實現單元被集成在不同的應用產品中,從而有效降低了軟件開發的成本,提高了開發效率。

雷達數據處理

雷達數據處理采用軟件復用的思想與技術,在軟件模塊化設計的基礎上,對各個模塊進行復用分析,分離差異,提煉出各模塊可復用內容,實現了大部分模塊的軟件復用。降低雷達數據處理系統軟件開發過程中所用的成本與時間,提高軟件的靈活性和可維護性,通過軟件復用技術,縮短了系統開發周期,提升了軟件開發效率,保證了軟件開發質量,具有較高的工程價值與經濟價值。

定制嵌入式操作系統

嵌入式應用系統配置差別較大,大部分外設驅動軟件也沒有標準化,這就要求在開發環境中對操作系統進行剪裁和擴展,使之和應用程序綁定在一起生成一個可運行在目標環境下的高效應用系統。這是降低系統硬件成本,減少系統資源消耗,提高系統靈活性的關鍵。而以軟件模塊化復用設計為基礎的操作系統剪裁配置技術為應用開發者定制系統提供了有力的支持。

發展趨勢

雖然當前各種各樣的軟件復用實踐已經相當普遍,但是大規模、系統化的基于復用的軟件開發卻并未獲得普遍成功。隨著軟件開發技術的發展以及應用類型的不斷豐富,基于框架或中間件的開發成為軟件復用另一種流行的方式。框架為應用系統制定了基本的邏輯架構,實現了其中的通用部分,并為特定應用的開發提供了可定制和可擴展的能力;中間件則為分布式的應用開發提供了便捷的基礎設施。因此,使用框架或中間件進行應用開發的人員可將其精力聚焦于應用特定的邏輯、功能部分。

軟件復用發展到今天已經超出了簡單的代碼、測試用例復用的范疇,軟件開發過程已經成為一種新的復用對象。主要從歷史項目中挖掘軟件項目成功的子過程、控制策略等或是從失敗的歷史項目中找到反面警示,軟件過程的挖掘與復用方面尚處于起步階段。

參考資料 >

..2024-05-18

生活家百科家居網