『壹』 什麼是軟體復用
軟體復用(SoftWareReuse)是將已有軟體的各種有關知識用於建立新的軟體,以縮減軟體開發和維護的花費 以上是對這個問題的回答,希望對您有幫助。
『貳』 構件的軟體工程中的構件
構件是面向軟體體系架構的可復用軟體模塊。構件(component)是可復用的軟體組成成份,可被用來構造其他軟體。它可以是被封裝的對象類、類樹、一些功能模塊、軟體框架(framework)、軟體構架(或體系結構Architectural)、文檔、分析件、設計模式(Pattern)等。1995年,Ian.oraham給出的構件定義如下:構件(Component)是指一個對象(介面規范、或二進制代碼),它被用於復用,介面被明確定義[8]。構件是作為一個邏輯緊密的程序代碼包的形式出現的,有著良好的介面。像Ada的Package、Smalltalk-80和C++的class和數據類型都可屬於構件范疇。但是,操作集合、過程、函數即使可以復用也不能成為一個構件。開發者可以通過組裝已有的構件來開發新的應用系統,從而達到軟體復用的目的。軟體構件技術是軟體復用的關鍵因素,也是軟體復用技術研究的重點。 (1)有用性(Usefulness):構件必須提供有用的功能;
(2)可用性(Usability):構件必須易於理解和使用;
(3)質量(Quality):構件及其變形必須能正確工作;
(4)適應性(Adaptability):構件應該易於通過參數化等方式在不同語境中進行配置;
(5)可移植性(Portability):構件應能在不同的硬體運行平台和軟體環境中工作。
日歷、工作流構件、訂單構件、用戶界面控制等等都可以是構件。 構件具有以下幾個特點:
(1)自描述:構件必須能夠識別其屬性、存取方法和事件,這些信息可以使開發環境將第三方軟體構件無縫地結合起來;
(2)可定製:允許提供一個典型的圖形方式環境,軟體構件的屬性只能通過控制面板來設置;
(3)可集成:構件必須可以被編程語言直接控制。構件也可以和腳本語言或者與從代碼級訪問構件的環境連接,這個特點使得軟體構件可以在非可視化開發項目中使用;
(4)連接機制:構件必須能產生事件或者具有讓程序員從語義上實現相互連接的其他機制。
採用構件軟體不需要重新編譯,也不需要源代碼並且不局限於某一種編程語言。該過程叫做二進制復用(Binary Reuse),因為它是建立在介面而不是源代碼級別的復用之上的。雖然軟體構件必須遵守一致的介面,但是它們的內部實現是完全自動的。因此,可以用過程語言和面向對象語言創建構件。
由於構件技術是由基於面向對象技術而發展起來的,與面向對象的設計中的對象相類似,它們都是針對軟體復用,都是被封裝的代碼,但它們之間仍存在很大差異。 (1)在純面向對象的設計中,對象(類)、封裝和繼承三者缺一不可,但對構件可以沒有繼承性,只要實現封裝即可;
(2)從構件和對象的生成方式上,對象生成屬於實例化的過程,比較單一,而生成構件的方式較多;
(3)構件是設計的概念,與具體編程語言無關,不像對象屬於編程中的概念,要依賴於具體的編程語言;
(4)在對構件操作時不允許直接操作構件中的數據,數據真正被封裝了。而對象的操作通過公共介面部分,這樣數據是可能被訪問操作的;
(5)對象對軟體復用是通過繼承實現的,構件對軟體復用不僅可以通過繼承還可以通過組裝時的引用來實現。
因此,構件不是對象,只是與對象類似。
從力學角度來說,結構是指可以承受一定力的結構形態,它可以抵抗能引起形狀和大小改變的力。每種事物都有它的架構形態,這種架構形態體現著它的結構。一個較復雜的結構由許多不同的部分組成,這些組成部分通常成為構件。
『叄』 軟體成分的重用可以劃分成哪三個重用級別
為軟體重用分類比較困難,因為軟體重用技術眾多,一種重用技術可以包括多種重用形式。比如說:框架即可以包括代碼級重用,也可以包括設計級重用。有一種分類方法是按照軟體重用所應用的領域范圍,把重用劃分為兩種:橫向重用和縱向重用。
1. 橫向重用是指重用不同應用領域中的軟體元素,例如數據結構、分類演算法、人機界面構件等。標准函數庫是一種典型的原始的橫向重用機制。
2. 縱向重用是指在一類具有較多公共性的應用領域之間進行軟部品重用。因為在兩個截然不同的應用領域之間實施軟體重用非常困難,潛力不大,所以縱向重用才廣受矚目,並成為軟體重用技術的真正所在。縱向重用活動的主要包括以下幾個步驟:
1) 首先進行域分析。根據應用領域的特徵及相似性預測軟部件的可重用性。
2) 然後進行軟部品的開發。一旦確認了軟部件的重用價值,即可進行軟部品的開發並對具有重用價值的軟部品進行一般化,以便它們能夠適應新的類似的應用領域。
3) 最後,軟部件及其文檔即可進入軟部品庫,成為可供後續項目使用的可重用資源。
『肆』 為什麼說類構件是目前比較理想的可重用軟構件
面向對象技術中的「 軟體重用。面向對象技術中的「類」,是比較理想的 可重用的軟構件,不妨稱之為類構件, 可重用的軟構件,不妨稱之為類構件,在上一小節中 講述的構件組裝模型,就是利用類構件來構造應用程 講述的構件組裝模型, 序。 可重用的軟構件應具備的特點 1. 可重用的軟構件應具備的特點 模塊獨立性強 (1) 模塊獨立性強 (2) 具有高度可塑性 具有高度可塑性 介面清晰、簡明、可靠 (3) 介面清晰、簡明、可靠 2. 類構件的重用方式 類構件的重用方式 實例重用 (1) 實例重用 繼承重用 (2) 繼承重用 面向對象方法特有的繼承性, 面向對象方法特有的繼承性,提供了一種對已有 的類構件進行裁剪的機制。 的類構件進行裁剪的機制。當已有的類構件不能通過 實例重用完全滿足當前系統需求時, 實例重用完全滿足當前系統需求時,繼承重用提供了 一種安全地修改已有類構件, 一種安全地修改已有類構件,以便在當前系統中重用 的手段 多態重用 (3) 多態重用 利用多態性不僅可以使對象的對外介面更加一般 基類與派生類的許多對外介面是相同的) 化(基類與派生類的許多對外介面是相同的),從而降 低了消息連接的復雜程度, 低了消息連接的復雜程度,而且還提供了一種簡便可 靠的軟構件組合機制,系統運行時, 靠的軟構件組合機制,系統運行時,根據接收消息的 對象類型,由多態性機制啟動正確的方法, 對象類型,由多態性機制啟動正確的方法,去響應一 個一般化的消息,從而簡化了消息界面和軟構件連接
『伍』 軟體復用的幾種方式
軟體復用的好處有很多 一、提高工作效率 這條自不必說,比如在項目A中你寫一個Ajax模塊 ,A完工後啟動了項目B,在B中就可以直接復用項目A的模塊了。一個可復用的軟體可以為將來節省費用,被服用的頻率越高,組件的初始開發成本就越低。 二、提高軟體質量 可復用的軟體總比不能復用的有更多的質量保障。因為可復用的軟體在不斷的復用過程中把一些bug,缺陷都很快的排除了。因此可復用的軟體一定是利於系統的可維護性的。 按抽象程度的高低,可以劃分為如下的復用級別: 代碼的剪貼復制 利用編輯器(IDE)可以很方便的做到減少抄寫代碼的人力成本。這可能是入門級程序員習慣的,自發的復用軟體的形式。把一個寫好的工具函數自發的拷貝到另一個功能或項目中。這種方式有著明顯的缺點就是他造成很多重復冗餘的代碼。尤其在Web前端開發中,JavaScript資源的量大小影響著客戶端下載速度。好一點的復用方式可以採用繼承。演算法的復用各種演算法比如排序都已經得到了大量的研究。幾乎不需要你重新去寫自己的演算法,各種語言通常也實現了這些常用演算法。因此你只需要直接復用。 數據結構的復用 與演算法一樣,類似數組、隊列、棧、列表等得到了透徹的研究,只需要直接復用。 以上是傳統的復用種類,下面是更高級的復用方式設計的復用設計結果比源程序的抽象級別更高,因此它的復用受實現環境的影響較少,從而使可復用構件被復用的機會更多,並且所需的修改更少。 這種復用有三種途徑,第一種途徑是從現有系統的設計結果中提取一些可復用的設計構件,並把這些構件應用於新系統的設計;第二種途徑是把一個現有系統的全部設計文檔在新的軟硬體平台上重新實現,也就是把一個設計運用於多個具體的實現;第三種途徑是獨立於任何具體的應用,有計劃地開發一些可復用的設計構件。分析的復用這是比設計結果更高級別的復用,可復用的分析構件是針對問題域的某些事物或某些問題的抽象程度更高的解法,受設計技術及實現條件的影響很少,所以可復用的機會更大。復用的途徑也有三種,即從現有系統的分析結果中提取可復用構件用於新系統的分析;用一份完整的分析文檔作輸入產生針對不同軟硬體平台和其它實現條件的多項設計;獨立於具體應用,專門開發一些可復用的分析構件。
『陸』 構件化的軟體開發方法是什麼
與傳統的軟體開發方式相比,基於構件的軟體開發方法有什麼突破呢? 一、體系結構 軟體體系結構代表了系統公共的高層次的抽象,它是系統設計成敗的關鍵。其設計的核心是能否使用重復的體系模式。傳 統的應用系統體系結構從基於主機的集中式框架,到在網路的客戶端上通過網路訪問伺服器的框架,都不能適應目前企業所處的商業環境,原因是: 企業過分地依賴於某個供應商的軟體和硬體產品。這種單一供應商使得企業難以利用計算供應商的免費市場,將計算基礎設施的重要決定交給第三方處理,這顯然不利於企業在合作夥伴之間共享信息。 不能適應遠程訪問的分布式、多層次異構系統。 封裝的應用系統在出現某種組織需要時,難以用定製來維護系統,從而難以滿足多變的需求。 不能實現分析、設計核心功能重用,最多隻能實現代碼重用。 如今,應用系統已經發展成為在Intranet和Internet上的各種客戶端可遠程訪問的分布式、多層次異構系統。CBSD為開發這樣的應用系統提供了新的系統體系結構。它是標準定義的、分布式、模塊化結構,使應用系統可分成幾個獨立部分開發,可用增量方式開發。 這樣的體系結構實現了CBSD的以下幾點目標: 能夠通過內部開發的、第三方提供的或市場上購買的現有構件,來集成和定製應用軟體系統。 鼓勵在各種應用系統中重用核心功能,努力實現分析、設計的重用。 系統都應具有靈活方便的升級和系統模塊的更新維護能力。 封裝最好的實踐案例,並使其在商業條件改變的情況下,還能夠被採用,並能保留已有資源。 由此看出,CDSD從系統高層次的抽象上解決了復用性與異構互操作性,這正是分布式網路系統所希望解決的難題。 二、開發過程 傳統的軟體開發過程在重用元素、開發方法上都與CBSD有很大的不同。雖然面向對象技術促進了軟體重用,但是,只實現了類和類繼承的重用。在整個系統和類之間還存在很大的缺口。為填補這個缺口,人們曾想了許多方法,如系統體系結構、框架、設計模式等。 自從構件出現以來,軟體的重用才得到了根本改變。CBSD實現了分析、設計、類等多層次上的重用。圖1顯示了它的重用元素分層實現。在分析抽象層上,重用元素有子系統、類;在設計層上重用元素有系統體系結構、子系統體系結構、設計模式、框架、容器、構件、類庫、模板、抽象類等。 在軟體開發方法上,CBSD引導軟體開發從應用系統開發轉變為應用系統集成。建立一個應用系統需要重用很多已有的構件模塊,這些構件模塊可能是在不同的時間、由不同的人員開發的,並有各種不同的用途。在這種情況下,應用系統的開發過程就變成對構件介面、構件上下文以及框架環境一致性的逐漸探索過程。例如,在J2EE平台上,用EJB框架開發應用系統,主要工作是將應用邏輯,按session Bean、entity Bean設計開發,並利用JTS事務處理的服務實現應用系統。其主要難點是事務劃分、構件的部署與開發環境配置。概括地說,傳統的軟體開發過程是串列瀑布式、流水線的過程;而CBSD是並發進化式,不斷升級完善的過程。圖2顯示了它們的不同。 三、軟體方法學 軟體方法學是從各種不同角度、不同思路去認識軟體的本質。傳統的軟體方法學是從面向機器、面向數據、面向過程、面向功能、面向數據流、面向對象等不斷創新的觀點反映問題的本質。整個軟體的發展歷程使人們越來越認識到應按客觀世界規律去解決軟體方法學問題。直到面向對象方法的出現,才使軟體方法學邁進了一大步。但是,高層次上的重用、分布式異構互操作的難點還沒有解決。CBSD發展到今天,才在軟體方法學上為解決這個難題提供了機會。它把應用業務和實現分離,即邏輯與數據的分離,提供標准介面和框架,使軟體開發方法變成構件的組合。因此,軟體方法學是以介面為中心,面向行為的設計。圖3是其開發過程。 歸納起來,CBSD的軟體開發方法學應包括下面幾方面: 對構件有明確的定義。 基於構件的概念需要有構件的描述技術和規范,如UML、JavaBean、EJB、Servlet規范等。 開發應用系統必須按構件裁剪劃分組織,包括分配不同的角色。 有支持檢驗構件特性和生成文檔的工具,確保構件規范的實現和質量測試。 總之,傳統的軟體方法學從草稿自頂向下進行,對重用沒有提供更多的輔助。CBSD的軟體方法學要豐富得多,它是即插即用,基於體系結構,以介面為中心,將構件有機組合,它把自頂向下和自底向上方法結合起來進行開發。 四、開發組織機構 傳統軟體的開發組織一般由分析員、設計員、程序員和測試員組成。對一個小的應用系統來說,一個熟練的開發人員,可能兼顧以上多個角色。但對CBSD來說,因為構件開發與應用系統集成往往是分開進行的,因此整個開發過程由六個角色來完成,他們是: 構件開發者 也是構件供貨商,這些大多數是中間件構件提供(續致信網上一頁內容)者。 應用構件集成者 針對某應用領域將已有構件組合成更大的構件模塊或容器, 作為系統部署的基本單元。 應用系統部署者 將系統部署基本單元放入選定的平台環境或基本框架中,完成軟體定製的要求。 開發平台伺服器供應商 提供伺服器、操作系統和資料庫等基本軟體。 應用系統開發工具供應商 提供構件公共設施服務。 系統管理員 配置硬體、網路和操作系統,監督和維護應用系統者。 這六個角色的工作專業性很強,要兼顧成為多面手很不容易。目前已形成構件開放市場,而且還很火紅。這也是當今軟體人才大戰所遇的一個困惑。因此,在CBSD中,如何組織好開發隊伍尤為重要,必須按本企業所具備人才來組織。特別重要的是:開發初期必須選好標准框架,以及統一的開發指導方針,保證在整個開發過程中,各角色能隨時互相溝通。一般來說,CBSD的人員素質決定了構件的重用率。 五、構造方法 傳統應用軟體的構造是用白盒子方法,應用系統的實現全在代碼中,應用邏輯和數據粘結在一起。而CBSD 的構造是用白盒子和黑盒子相結合的方法。 基於構件的框架是用兩個概念來支持演變:第一個概念是構件有很強的性能介面,使構件邏輯功能和構件模型的實現都隱藏起來。這樣,只要介面相同,構件就可以被替換。 第二個概念是隱式調用,即在基於構件的框架中,從來不直接給構件的介面分配地址,只在識別構件用戶後才分配地址。因此,構件用戶只要了解介面要求和為構件介面提供的引用後的返回信息 (該引用可能是一個構件,也可能是一個構件代理。對構件用戶來說,構件代理就是構件,不用區分) 。 構件介面的信息並不存入構件內,而是存入構件倉庫或注冊處。這樣才能保證構件替換靈活,並很容易利用隱式調用去重新部署構件。由於構件的實現對用戶透明,因此也使構件能適應各種不同的個性化要求。為此,構件提供自檢和規范化兩個機制。自檢保證在不了解構件的具體實現時,就能獲得構件介面信息。例如,JavaBean提供的自檢機制是Reflection和BeanInfo, 通過Reflection 可直接獲得Bean構件的全部方法,通過BeanInfo可直接獲得構件的許多復雜信息。 規范化允許不訪問構件就可以修改它,如JavaBean提供的規范化是property sheet和customizer(定製器)。 通過property sheet提供一組簡單參數,修改Bean的屬性。復雜的修改由用戶通過定製器設置參數完成。
『柒』 什麼是軟體重用
軟體重用,是指在兩次或多次不同的軟體開發過程中重復使用相同或相似軟體元素的過程。軟體元素包括程序代碼、測試用例、設計文檔、設計過程、需求分析文檔甚至領域知識。通常,可重用的元素也稱作軟構件,可重用的軟構件越大,重用的粒度越大。
『捌』 什麼是可重用構件
具有高度的可塑性具備適應特定需求的而擴充或修改已有的構件。修改或擴... 軟體危機是指在計算機軟體的開發和維護過程中所遇到的一系列嚴重問題
『玖』 可重用的軟體成分包括哪些如何重用這些成分
因為軟體重用技術眾多,一種重用技術可以包括多種重用形式。比如說:框架即可以包括代碼級重用,也可以包括設計級重用。有一種分類方法是按照軟體重用所應用的領域范圍,把重用劃分為兩種:橫向重用和縱向重用。
1. 橫向重用是指重用不同應用領域中的軟體元素,例如數據結構、分類演算法、人機界面構件等。標准函數庫是一種典型的原始的橫向重用機制。
2. 縱向重用是指在一類具有較多公共性的應用領域之間進行軟部品重用。因為在兩個截然不同的應用領域之間實施軟體重用非常困難,潛力不大,所以縱向重用才廣受矚目,並成為軟體重用技術的真正所在。縱向重用活動的主要包括以下幾個步驟:
1) 首先進行域分析。根據應用領域的特徵及相似性預測軟部件的可重用性。
2) 然後進行軟部品的開發。一旦確認了軟部件的重用價值,即可進行軟部品的開發並對具有重用價值的軟部品進行一般化,以便它們能夠適應新的類似的應用領域。
3) 最後,軟部件及其文檔即可進入軟部品庫,成為可供後續項目使用的可重用資源。
『拾』 軟體重用的基本要求是什麼
軟體重用,是指在兩次或多次不同的軟體開發過程中重復使用相同或相似軟體元素的過程。軟體元素包括程序代碼、測試用例、設計文檔、設計過程、需要分析文檔甚至領域知識。通常,可重用的元素也稱作軟構件,可重用的軟構件越大,重用的粒度越大。 為了能夠在軟體開發過程中重用現有的軟部件,必須在此之前不斷地進行軟部件的積累,並將他們組織成軟部件庫。這就是說,軟體重用不僅要討論如何檢索所需的軟部件以及如何對他們進行必要的修剪,還要解決如何選取軟部件、如何組織軟部件庫等問題。因此,軟體重用方法學,通常要求軟體開發項目既要考慮重用軟部件的機制,有要系統地考慮生產可重用軟部件的機制。這類項目通常被稱為軟體重用項目。 使用軟體重用技術可以減少軟體開發活動中大量的重復性工作,這樣就能提高軟體生產率,降低開發成本,縮短開發周期。同時,由於軟構件大都經過嚴格的質量認證,並在實際運行環境中得到校驗,因此,重用軟構件有助於改善軟體質量。此外,大量使用軟構件,軟體的靈活性和標准化程度也可望得到提高。