軟體復用

用手机看条目

出自 MBA智库百科(https://wiki.mbalib.com/)

軟體復用(Software Reuse)

目錄

什麼是軟體復用

  軟體復用是指在構造新的軟體系統的過程中,對已存在的軟體產品(設計結構、源代碼、文檔等)重覆使用的技術

軟體復用的發展歷史[1]

  軟體復用並不是一個新概念,它的首次提出可以追溯到20世紀60年代末期。截至目前,共經歷了4個標誌性的研究、發展階段。

  1.1968--1978年:萌芽、潛伏期

  在1968年德國Garmish舉行的NATO(北大西洋公約組織)軟體工程會議上,Dough Mcilroy在其論文Mass Produce Software Components中提出軟體復用的概念,希望通過代碼復用實現軟體開發的大規模生產。Mcilroy設想軟體構件可根據它們的通用性、性能、應用平臺進行分類,使複雜的軟體系統可以像硬體設計一樣,通過標準的構件進行識別、組裝,這也是類構件軟體復用思想的雛形,但是在以後的10年中,軟體復用研究並未取得實質進展。

  2.1979——1983年:再發現期

  1979年,Lanergan發表論文,對其在Rayther Missice Divison中的一項軟體復用項目進行總結,使得軟體復用技術重新引起人們的關註。Lanergan項目小組分析了5000個COBOL源程式,發現設計和代碼中有60%的冗餘,因此可標準化並被覆用。在此後的幾年裡,其他軟體工程師也通過研究發現商業金融等系統的大部分邏輯結構和設計模式都屬於編輯、維護、報表等類型的模塊,可通過對這些模塊重新設計和標準化而得到較高的復用率。

  3.1983——1994年:發展期

  1983年,Hed BiggerstuffA和Alan Petis在美國的NewPort組織了第一次有關軟體復用的研討會。隨後在1984年和1987年,美國IEEE Transaction on Software Engineering和IEEE Software分別出版了有關軟體復用的專輯。1991年,第一屆軟體復用國際研討會(IWSR)在德國舉行,之後在1993年又舉行了第二次研討會。在此期間,歐洲實施了幾個有關軟體復用的重點項目,如ESF(Eureka Software Factory),其主要目標是提供軟體復用的工具支持。

  4.1994年至今:成熟期

  1994年的軟體復用國際研討會議改稱軟體復用國際會議,此時軟體復用技術已引起了電腦科學界的廣泛重視,越來越多的人投入到這一技術的研究中。面向對象技術的崛起給軟體復用技術以新的希望,出現了類庫、構件等新的復用方式,微軟的ActiveX是其典型代表。軟體復用研究重新成為熱點,被視為解決軟體危機、提高軟體生產效率和質量的現實可行的途徑。軟體的構件化開發和軟體復用已經成為互聯網時代軟體開發的大趨勢。軟體復用是解決“軟體危機”的重要手段之一。無論是早期的結構化軟體設計方法還是後來的面向對象的軟體設計方法都在朝著這個方向努力。

軟體復用的分類[2]

  (1)代碼的復用

  代碼復用是軟體復用中最為常見的一種形式,包括目標代碼和源代碼的復用。其中目標代碼的復用級別最低,歷史最久,大部分編程語言的運行支持環境都提供了連接、綁定等功能來支持這種復用。源代碼的復用級別略高於目標代碼的復用,程式員在編程時把一些想復用的代碼段複製到程式中,但這樣做往往會產生一些新舊代碼不匹配的錯誤。要大規模地實現源程式的復用,只有依靠含有大量可復用構件的構件庫,如“對象鏈接與嵌入”技術,既支持在源程式級上定義構件以構造新的系統,又使這些構件在目標代碼級上仍然是一些獨立的可復用構件,能夠在運行時被靈活地重新組合為各種應用系統。

  (2)設計的復用

  設計結果比源程式的抽象級別更高,因此它的復用受實現環境的影響較少,從而使可復用構件被覆用的機會更多,並且所需修改更少。這種復用有3種途徑,第一種途徑是從現有系統的設計結果中提取一些可復用的設計構件,並把這些構件應用於新系統的設計中;第二種途徑是把一個現有系統的全部設計文檔在新的軟硬體平臺上重新實現,也就是把一個設計運用於多個具體的實現;第三種途徑是獨立於任何具體的應用,有計劃地開發一些可復用的設計構件。

  (3)分析的復用

  這是比設計結果更高級別的復用。可復用的分析構件是針對問題域的某些事物或某些問題的抽象程度更高的方法,受設計技術及實現條件的影響更小,所以可復用的機會更大。這種復用也有3種途徑,第一種途徑是從現有系統的分析結果中提取可復用構件並用於新系統的分析;第二種途徑是用一份完整的分析文檔作為輸入,產生針對不同軟硬體平臺和其他實現條件的多項設計;第三種途徑是獨立於具體應用,專門開發一些可復用的分析構件。

  (4)測試信息的復用

  測試信息的復用主要包括測試用例的復用和測試過程的復用。前者是把一個軟體的測試用例應用於新的軟體測試中,或者在軟體作出修改時使用在新一輪的測試中。後者是在測試過程中通過軟體工具自動記錄測試的過程信息,包括測試員的每一個操作、輸人參數、測試用例及運行環境等信息,並將這些過程信息應用於新的軟體測試或新一輪的軟體測試中。測試信息的復用級別不易同分析、設計、編程的復用級別進行準確地比較,因為被覆用的不是同一事物的不同抽象層次,而是另一種信息,但從這些信息的形態來看,大體處於與程式代碼相當的級別。

  從軟體的發展歷史來看,在軟體發展初期,所有人都必須從頭開始編寫程式。現在,軟體系統的種類越來越多,規模越來越大,在已有的軟體中,很多功能被重覆寫了成千上萬次,這些重覆的代碼在當今軟體的開發中可以不斷被拿來使用。AT&T愛立信惠普IBM摩托羅拉NEC東芝等公司的經驗表明,非正式的代碼復用率為15%~20%,結合其他系統復用,使得軟體開發的成本大大降低,開發時間得到有效縮短。

  日本的一些軟體公司還建立了適合使用標準部件的工程組織,一直追求更正式的復用。20世紀80年代中期,日本軟體工程的復用率已經接近50%。美國的惠普公司從1984年初開始之後的10年裡,在儀錶和印表機固件方面的復用率達到25%~50%,其中有一條儀錶生產線達到了83%。

  由此可見,使用軟體復用技術可以減少軟體開發活動中大量的重覆性勞動,提高軟體生產效率,降低開發成本,縮短開發周期。同時,由於軟體構件大都在實際運行環境中得到了多次校驗,並經過了嚴格的質量認證,因此,復用這些構件有助於改善軟體質量。此外,大量使用軟體構件,還有助於提高軟體的靈活性和標準化程度。而且,由於軟體生產過程主要是正向過程,即大部分軟體的生產過程是使軟體產品從抽象級別較高的形態向抽象級別較低的形態演化,級別較高的復用容易帶動級別較低的復用,因而復用的級別越高,可得到的回報也就越大,因此分析結果和設計結果在目前很受重視。用戶可購買生產商的分析構件和設計構件,自己設計或編程,掌握系統的剪裁、擴充、維護和演化等活動

軟體復用的層次[3]

  軟體復用有三個層次:知識的復用、方法的復用和軟體成分的復用,前兩個屬於知識工程的範疇,這裡只討論軟體成分的復用。軟體成分的復用包括

  (1)代碼的復用,可以採用源代碼剪貼、源代碼包含和繼承來實現。

  (2)設計結果的復用,是指復用某個軟體系統的設計模型,適用於軟體系統的移植。

  (3)分析結果的復用,是指復用某個軟體系統的分析模型,適用於用戶需求未改變,而系統體繫結構變化的場合。

軟體復用的意義[4]

  軟體復用的意義是降低軟體開發和維護的成本,提高軟體開發效率,提高軟體的質量。

參考文獻

  1. 劉峰,鄭滔編著.應用集成原理與技術.清華大學出版社,2011.06.
  2. 王映輝編著.軟體構件與體繫結構-原理、方法與技術.機械工業出版社,2009
  3. 秦汝明主編,董建國主審.電腦輔助機械設計.西安電子科技大學出版社,2005
  4. 黃國興,耿紅琴編.電腦導論教學指導與習題解答.清華大學出版社,2011
本條目對我有幫助2
MBA智库APP

扫一扫,下载MBA智库APP

分享到:
  如果您認為本條目還有待完善,需要補充新內容或修改錯誤內容,請編輯條目

本条目由以下用户参与贡献

KAER,Yixi,方小莉,Mis铭,Tracy,寒曦,刘维燎.

評論(共0條)

提示:評論內容為網友針對條目"軟體復用"展開的討論,與本站觀點立場無關。

發表評論請文明上網,理性發言並遵守有關規定。

MBA智库
打开APP

以上内容根据网友推荐自动排序生成