軟件復用概念
傳統(tǒng)的
軟件開發(fā)把從頭開始建立每個新系統(tǒng)看作是用戶服務的最好方法,而不注意和關心軟件重復創(chuàng)建出現(xiàn)的次數。重復創(chuàng)建在
軟件開發(fā)中造成了重大的資源浪費。無數軟件項目耗費大量資源去開發(fā)和已經存在的軟件構件相似的軟件構件。軟件浪費的現(xiàn)象普遍存在。對軟件系統(tǒng)的比較分析表明,在多個系統(tǒng)中,系統(tǒng)功能的60%到70%是相同的。
要實現(xiàn)軟件開發(fā)的工業(yè)化,提高軟件開發(fā)的質量和速度,需要改變傳統(tǒng)的軟件開發(fā)模式,軟件復用技術是在為了避免軟件開發(fā)過程中重復勞動而產生的。通過軟件復用,開發(fā)人員可以利用通過復用高質量的已有的開發(fā)成果,避免了重新開發(fā)可能引入的錯誤,還可以避免在軟件開發(fā)中的重復勞動,極大的提高了軟件開發(fā)的勞動生產效率和產品質量。
軟件復用是一種由預先構造好的、為軟件復用是一種由預先構造好的、為復用目的而設計的軟件構件來建立或者組裝軟件系統(tǒng)的過程。它的基本思想非常簡單,即放棄那種原始的、一切從頭開始的軟件開發(fā)方式,而是利用復用技術,由公共的可復用構件來組裝新的系統(tǒng),這些可復用構件包括對象類、框架或者軟件體系結構等。
按抽象程度的高低,軟件的復用可以劃分為如下級別;
(1)代碼的復用,包括目標代碼和源代碼的復用,其中目標代碼的復用級別最低。當前大部分編程語言的運行支持系統(tǒng)都提供了連接(Link)、綁定(Binding)等功能來支持這種復用。源代碼的復用級別略高于目標代碼的復用,程序員在編程時把一些想復用的代碼段復制到自己的程序中,但這樣往往會產生一些新舊代碼不匹配的錯誤。此類復用對環(huán)境的依賴性較強。
(2)設計的復用,設計結果比源程序的抽象級別更高,因此它的復用受實現(xiàn)環(huán)境的影響較少,從而使可復用構件被復用的機會更多,并且所需的修改更少。這種復用有三種途徑,第一種途徑是從現(xiàn)有系統(tǒng)的設計結果中提取一些可復用的設計構件,并把這些構件應用于新系統(tǒng)的設計;第二種途徑是把一個現(xiàn)有系統(tǒng)的全部設計文檔在新的軟硬件平臺上重新實現(xiàn),也就是把一個設計運用于多個具體的實現(xiàn);第三種途徑是獨立于任何具體的應用,有計劃地開發(fā)一些可復用的設計構件。
(3)分析的復用,這是比設計結果更高級別的復用,可復用的分析構件是針對問題域的某些事物或某些問題的抽象程度更高的解法,受設計技術及實現(xiàn)條件的影響很少,所以可復用的機會更大。復用的途徑也有三種,即從現(xiàn)有系統(tǒng)的分析結果中提取可復用構件用于新系統(tǒng)的分析;用一份完整的分析文檔作輸入產生針對不同軟硬件平臺和其它實現(xiàn)條件的多項設計:獨立于具體應用,專門開發(fā)一些可復用的分析構件。
(4)測試信息的復用,主要包括測試用例的復用和測試過程信息的復用。前者是把一個軟件的測試用例在新的軟件測試中使用,或者在軟件作出修改時在新的一輪測試中使用。后者是在測試過程中通過軟件工具自動地記錄測試的過程信息,包括測試員的每一個操作、輸入參數、測試用例及運行環(huán)境等~切信息。這種復用的級別,不便和分析、設計、編程的復用級別作準確的比較,因為被復用的不是同一事物的不同抽象層次,而是另一種信息,但從這些信息的形態(tài)看,大體處于與程序代碼相當的級別。
由于軟件生產過程主要是正向過程,即大部分軟件的生產過程是使軟件產品從抽象級別較高的形態(tài)向抽象級別較低的形態(tài)演化,所以較高級別的復用容易帶動較低級別的復用,因而復用的級別越高,可得到的回報也越大,因此分析結果和設計結果在目前很受重視。用戶可購買生產商的分析件和設計件,自己設計或編程,掌握系統(tǒng)的剪裁、擴充、維護、演化等活動。