1. 程式人生 > >軟體複用是什麼意思

軟體複用是什麼意思

軟體複用是將已有的軟體及其有效成分用於構造新的軟體或系統。它不僅是對軟體程式的複用,還包括對軟體生產過程中其它勞動成果的複用,如專案計劃書、可行性報告、需求分析、概要設計、詳細設計、編碼(源程式)、測試用例、文件與使用手冊等等。因此,軟體複用包括軟體產品複用和軟體過程複用兩部分的內容。
軟體複用不同於軟體移植。軟體移植是指對軟體進行修改和擴充,使之在保留原有功能、適應原有平臺的基礎上,可以運行於新的軟硬體平臺。而複用則指在多個系統中,尤其是在新系統中使用已有的軟體成分。
從對複用產品的瞭解程度和複用方式看,也可分為白盒複用與黑盒複用。黑盒複用指對已有產品或構件不需作任何修改,直接進行復用,這是理想的複用方式。它主要基於二進位制程式碼的複用,包括可執行程式的複用和基於庫(包括動態連結庫和靜態庫)的複用。白盒複用指根據使用者需求對已有產品進行適應性修改後才可使用。白盒複用一般為原始碼一級的複用,以及相應的測試用例、文件等的複用。
無論白盒複用還是黑盒複用,都需要花費一定的代價熟悉和掌握被複用的軟體系統。作為經濟上的考慮,要求複用的代價必須大大小於重新開發的代價,否則就不應該考慮。
軟體複用的一個關鍵因素是抽象。抽象是對軟體可複用物件的提煉和概括,即將可複用物件的基本屬性和相應的操作,從具體的語言、環境和其他細節中提煉出來。軟體的複用性很大程度上取決於對可複用物件的認識深度或者說可複用物件的抽象層次。抽象層次越高、與具體環境和特定細節越無關,則它被未來系統複用的可能性也越大。領域分析則是進行抽象的有力工具。領域分析藉助特定領域、特定行業的專業知識與技能,對軟體系統物件進行抽象和分類,提煉認知的物件及其相互關係,獲得系統整體結構,從而生成可複用的軟體構件。
通過軟體複用,在應用系統開發中可以充分地利用已有的開發成果,減少了包括分析、設計、編碼、測試等在內的許多重複勞動,從而提高了軟體開發的效率,同時,通過複用高質量的已有開發成果,避免了重新開發可能引入的錯誤,從而提高了軟體的質量。
軟體複用有三個基本原則,一是必須有可以複用的物件;二是所複用的物件必須是有用的,三是複用者需要知道如何去使用被複用的物件。軟體複用包括兩個相關過程:可複用軟體(構件)的開發(Development for Reuse)和基於可複用軟體(構件)的應用系統構造(整合和組裝)(Development with Reuse)。解決好這幾個方面的問題才能實現真正成功的軟體複用。
可複用軟體(構件)的開發是實現軟體複用的基本條件,物件技術的廣泛使用,提供了建造和使用構件的概念基礎和實用工具,有了可複用軟體,基於可複用軟體(構件)的應用系統構造(整合和組裝)才能得以實現。軟體的生產也可以象硬體的生產一樣,在設計好框架後通過標準的構件組裝而成。一般認為構件是具有一定功能、能夠獨立工作或同其他構件組合起來協調工作的程式體,一經產生,就與它的具體實現語言無關,可以認為是一段二進位制碼和資料段,其內部具體實現是無法看到的,可將成熟的構件當作商品出售,在保證開發者的利益同時最大地滿足社會需求。採用構件來開發軟體可以更有效地重用他人已有的勞動成果。
在複用軟體設計中,如何設計和構造可複用的軟體是軟體設計者首先要面對的問題。根據面向物件的設計原理,應著眼於以下幾個方面:
(1)封裝性
在軟構件的定義中,使用者只關心事件的輸入輸出,對事件內部不必關心,方法和事件是獨立於應用的,使用者可以在軟構件中定義自己的事件,對於內部的複雜性呼叫這並不知曉,從而提高了隱蔽性。
(2)過載
過載就是在同一軟體構件中用同一名字來表示不同的方法名。一般有兩種實現方法,一是方法引數的個數過載,二是方法引數的型別過載。
(3)繼承
繼承就是高層的類在不同範圍的複用。
(4)聚合
聚合就是把一個難以複用的大軟體分成若干部分構件,使其中的某些構件成為可以複用的構件。
(5)多型性
多型性指某方法不僅可以處理有相同結構的物件,也可以處理不同結構的物件。
中介軟體及相關軟體是商業化的軟體複用。僅看程式方面,軟體複用後的製品也不只包括中介軟體軟體,還包括軟體框架、應用框架、通用業務構件等多種可複用形式。
  是指程式設計嗎,說的是以前的程式的整體或部分可以在今後的程式編寫中被引用,並實現功能
軟體複用是將已有的軟體及其有效成分用於構造新的軟體或系統。它不僅是對軟體程式的複用,還包括對軟體生產過程中其它勞動成果的複用,如專案計劃書、可行性報告、需求分析、概要設計、詳細設計、編碼(源程式)、測試用例、文件與使用手冊等等。因此,軟體複用包括軟體產品複用和軟體過程複用兩部分的內容。
軟體複用不同於軟體移植。軟體移植是指對軟體進行修改和擴充,使之在保留原有功能、適應原有平臺的基礎上,可以運行於新的軟硬體平臺。而複用則指在多個系統中,尤其是在新系統中使用已有的軟體成分。
從對複用產品的瞭解程度和複用方式看,也可分為白盒複用與黑盒複用。黑盒複用指對已有產品或構件不需作任何修改,直接進行復用,這是理想的複用方式。它主要基於二進位制程式碼的複用,包括可執行程式的複用和基於庫(包括動態連結庫和靜態庫)的複用。白盒複用指根據使用者需求對已有產品進行適應性修改後才可使用。白盒複用一般為原始碼一級的複用,以及相應的測試用例、文件等的複用。
無論白盒複用還是黑盒複用,都需要花費一定的代價熟悉和掌握被複用的軟體系統。作為經濟上的考慮,要求複用的代價必須大大小於重新開發的代價,否則就不應該考慮。
軟體複用的一個關鍵因素是抽象。抽象是對軟體可複用物件的提煉和概括,即將可複用物件的基本屬性和相應的操作,從具體的語言、環境和其他細節中提煉出來。軟體的複用性很大程度上取決於對可複用物件的認識深度或者說可複用物件的抽象層次。抽象層次越高、與具體環境和特定細節越無關,則它被未來系統複用的可能性也越大。領域分析則是進行抽象的有力工具。領域分析藉助特定領域、特定行業的專業知識與技能,對軟體系統物件進行抽象和分類,提煉認知的物件及其相互關係,獲得系統整體結構,從而生成可複用的軟體構件。
通過軟體複用,在應用系統開發中可以充分地利用已有的開發成果,減少了包括分析、設計、編碼、測試等在內的許多重複勞動,從而提高了軟體開發的效率,同時,通過複用高質量的已有開發成果,避免了重新開發可能引入的錯誤,從而提高了軟體的質量。
軟體複用有三個基本原則,一是必須有可以複用的物件;二是所複用的物件必須是有用的,三是複用者需要知道如何去使用被複用的物件。軟體複用包括兩個相關過程:可複用軟體(構件)的開發(Development for Reuse)和基於可複用軟體(構件)的應用系統構造(整合和組裝)(Development with Reuse)。解決好這幾個方面的問題才能實現真正成功的軟體複用。
可複用軟體(構件)的開發是實現軟體複用的基本條件,物件技術的廣泛使用,提供了建造和使用構件的概念基礎和實用工具,有了可複用軟體,基於可複用軟體(構件)的應用系統構造(整合和組裝)才能得以實現。軟體的生產也可以象硬體的生產一樣,在設計好框架後通過標準的構件組裝而成。一般認為構件是具有一定功能、能夠獨立工作或同其他構件組合起來協調工作的程式體,一經產生,就與它的具體實現語言無關,可以認為是一段二進位制碼和資料段,其內部具體實現是無法看到的,可將成熟的構件當作商品出售,在保證開發者的利益同時最大地滿足社會需求。採用構件來開發軟體可以更有效地重用他人已有的勞動成果。
在複用軟體設計中,如何設計和構造可複用的軟體是軟體設計者首先要面對的問題。根據面向物件的設計原理,應著眼於以下幾個方面:
(1)封裝性
在軟構件的定義中,使用者只關心事件的輸入輸出,對事件內部不必關心,方法和事件是獨立於應用的,使用者可以在軟構件中定義自己的事件,對於內部的複雜性呼叫這並不知曉,從而提高了隱蔽性。
(2)過載
過載就是在同一軟體構件中用同一名字來表示不同的方法名。一般有兩種實現方法,一是方法引數的個數過載,二是方法引數的型別過載。
(3)繼承
繼承就是高層的類在不同範圍的複用。
(4)聚合
聚合就是把一個難以複用的大軟體分成若干部分構件,使其中的某些構件成為可以複用的構件。
(5)多型性
多型性指某方法不僅可以處理有相同結構的物件,也可以處理不同結構的物件。
中介軟體及相關軟體是商業化的軟體複用。僅看程式方面,軟體複用後的製品也不只包括中介軟體軟體,還包括軟體框架、應用框架、通用業務構件等多種可複用形式。 軟體複用(SoftWare Reuse)是將已有軟體的各種有關知識用於建立新的軟體,以縮減軟體開發和維護的花費。軟體複用是提高軟體生產力和質量的一種重要技術。早期的軟體複用主要是程式碼級複用,被複用的知識專指程式,後來擴大到包括領域知識、開發經驗、設計決定、體系結構、需求、設計、程式碼和文件等一切有關方面。