軟件復用和構件技術.ppt_第1頁
軟件復用和構件技術.ppt_第2頁
軟件復用和構件技術.ppt_第3頁
軟件復用和構件技術.ppt_第4頁
軟件復用和構件技術.ppt_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第七章,第七章軟件復用和構件技術,軟件復用和 構件技術,7.1 軟件復用概述,軟件復用就是將已有的軟件成分用于構造新的軟件系統(tǒng),以達到提高軟件系統(tǒng)的開發(fā)質量與效率,降低開發(fā)成本的目的。 可復用的軟件成分,也稱為可復用構件(Reusable Component)可從舊軟件中提取,也可以專門為復用而開發(fā)。 軟件復用不僅是對程序的復用,它包括對軟件生產過程中任何活動所產生的制成品的復用。如:項目計劃、可行性報告、需求定義、分析模型、詳細說明、源程序和測試用例等等。,7.1.1 軟件復用的級別,包括目標代碼,也包括文本形式的源代碼。,受實際環(huán)境影響小,可復用機會多,所需修改少。,可被復用的分析結果是針

2、對問題域的某些事物或某些問題的抽象程度更高的解法。,主要包括測試用例(test case)的復用和測試過程信息的復用。,三種方式復用: 從現有系統(tǒng)的分析結果中提取可復用構件用于新系統(tǒng)的分析; 用一份完整的分析文檔作為輸入,成生針對不通軟硬件平臺和其它實現條件的多項設計; 獨立于具體應用,專門開發(fā)一些可復用的分析構件。,軟件生產過程主要是正向過程,即軟件產品從抽象級別較高的形態(tài)向抽象級別較低的形態(tài)演化,所以較高級別的復用容易帶動較低級別的復用,反之則不然。 復用級別越高,可得到的回報也越大,因此分析軟件(Analysis Ware)和設計軟件(Design Ware)的復用備受重視。,軟件復用的

3、優(yōu)點: (1)提高軟件生產率,降低軟件生產代價; (2)提高軟件質量; (3)互操作性好; (4)推動標準化; (5)支持原型開發(fā)。,7.1.軟件復用的形式,一、按照重用活動所跨越的應用領域的類型分 1.橫向復用(horizontal reuse)也稱為水平復用,是指復用活動的范圍跨越了幾個不同的應用領域,復用的軟件產品主要包括數據結構、通用算法、人機界面等軟件元素。 2.縱向復用(vertical reuse)也稱為垂直復用,是指復用活動的范圍限制在同一個應用領域或者是一類具有較多共性的應用領域內。,二、基于軟件復用的軟件開發(fā)過程的角度分 .生產者復用(product reuse) 指建立、

4、獲取或者重新設計可復用構件的活動。涉及到的活動包括:復用的規(guī)劃、領域分析、構件的開發(fā)、構件庫的組織和管理。 .消費者復用(consumer reuse) 指使用可復用的構件建立新的系統(tǒng)的活動。涉及到的活動包括:應用系統(tǒng)的規(guī)劃、構件的檢索和選擇、應用系統(tǒng)中非復用部分的開發(fā)、應用系統(tǒng)的組裝。,復用具有許多明顯的優(yōu)點,目前應用不廣泛的主要原因是: (1)技術因素 構件與應用系統(tǒng)之間的差異; 構件要達到一定的規(guī)模,才能支持有效的復用; 發(fā)現合用構件的困難; 基于復用的軟件開發(fā)方法和軟件過程需要一些新的理論、技術及支持環(huán)境。,7.1.3 軟件復用的困難,(4)教育因素 軟件科學技術的教育與培訓中,缺乏關

5、于軟件復用的內容,缺少專門教材和課程。,(3)管理因素 把復用構件和一般軟件構件同等看待,把復用看作可有可無的事。,(2)人的因素 喜歡自己創(chuàng)造而不喜歡使用別人的東西。,7.2 軟件構件與構件工程,基于軟件構件的軟件工程也稱為構件工程,是以面向對象的方法為基礎,實現軟件重用,構造新系統(tǒng)的過程。 為了實現軟件重用,基于軟件構件的軟件工程強調領域工程與軟件工程同時進行。 領域工程創(chuàng)建應用領域的模型,標識、構造、分類和傳播一組可重用的軟件。,圖,重用的過程模型,典型的重用的過程模型,描述了領域工程與軟件工程的關系。,一個軟件只有在多個系統(tǒng)中被使用才可稱為“可復用構件”,必須具備的條件: (1)獨立性

6、 解決一個相對獨立的問題,或大問題中某個相對獨立的部分; (2)完整性 提供較完整的解決方案,不要遺留很多缺口,讓復用者做大量補充; (3)可標識性 構件所解決的問題應該是可標識的,可命名,有簡要介紹,便于理解和使用。,6.2.1 可復用構件,(4)通用性 構件解決的問題,應在同類應用中具有一般性; (5)適應性 應用場合有某些變化時,構件仍是可用的,使構件的某些數據參數化和數據類型參數化; (6)可靠性 要求構件對預計將要使用它的系統(tǒng)時可靠的; (7)標準化 可復用構件的標準化對于軟件復用是至關重要的。,6.2.2 基于構件的軟件工程,基于構件的軟件工程與傳統(tǒng)的或面向對象的軟件工程相比,有顯

7、著的差異。 它不是針對某個特定的軟件系統(tǒng),而是針對一類軟件系統(tǒng)的共同的特征、知識和需求。 基于構件的軟件的開發(fā)過程包括兩個并發(fā)的子過程,一個是領域工程,另一個是基于構件的開發(fā)。領域工程完成一組可復用構件的標示、構造、分類和傳播;基于構件的開發(fā)完成使用可復用構件構造新的軟件系統(tǒng)。,領域分析是對特定應用領域中共同的特征、知 識、需求的標識、分析和規(guī)約。領域分析是特定領 域內軟件重用的基礎,它的目標就是:發(fā)現和挖掘 在特定領域內可以被復用的構件。領域分析活動中 輸入和輸出如圖所示:,7.2.3 領域分析,領域分析,輸入信息 技術文獻 已有應用 專家經驗/建議 當前與未來的需求,輸出信息 領域語言 復

8、用標準 分類方法 功能/行為模型,領域分析的輸入和輸出,領域分析(Domain Analysis)是對一類應用系統(tǒng)的 共同應用領域進行系統(tǒng)化分析,以發(fā)現該領域的共同知 識、需求及其應用系統(tǒng)的共同特征。 領域分析又稱領域工程(Domain Engineering), 是軟件工程的發(fā)展與延伸。 領域分析是一項比系統(tǒng)分析更難的工作。領域分 析方法可采用結構化方法和面向對象方法,而后者將 成為主流。,領域分析不是針對某個特定的軟件系統(tǒng),而是針 對一類軟件系統(tǒng)的共同的特征、知識和需求。比需求 分析更一般、更抽象、更廣泛的特征。,7.3 構件的開發(fā)與構件庫,構件的開發(fā) 領域分析的結果為構件的選取和開發(fā)提供

9、了指導性的原則。除了有領域分析作為其基礎,構件開發(fā)還需要遵循一定的設計概念和原則。 構件應該具有相當的一般性和抽象性,能夠用于滿足一類相似的需求,一個過于特殊的構件是很難被重復使用的。即使一個通用性很高的構件也不可能完全適應用戶的需求和運行環(huán)境,所以在一個構件被不同的應用復用時,對它的某些部分進行修改是不可避免的。所以構件開發(fā)時,需要為用戶對構件的調整和修改留出余地。例如繼承、參數化、模板和宏都是典型的提高構件靈活性和可調整性的機制。,7.3.1 構件庫,構件庫(Component Library)用于對可復用構件進行存儲和管理。它是支持軟件復用的必要設施。構件庫必須有大量的可復用構件。 構件

10、庫系統(tǒng)應提供的主要功能:構件的存儲、管理、檢索以及庫的瀏覽與維護等。 關鍵是支持使用者高效而準確地發(fā)現所需的可復用構件。相關的主要技術是分類方法和檢索方法。 支持方便的、友好的用戶管理和使用界面。,構件分類,構件檢索,涉及兩個基本問題:,大多數的構件分類模式可以歸納為以下三種類型: (1)枚舉分類 通過定義一個層次結構來對構件進行分類。構件庫中的可復用構件按照某種標準被分成了若干個大類,而每個大類中的構件再被劃分成若干個小類,依此類推,這樣就形成了一個構件分類的層次結構,,枚舉分類的層次結構,7.3.2 構件的分類,(2)刻面分類 一個刻面描述構件某一個方面的特征??堂娣诸悇t是從不同的側面對構

11、件進行分類,每一種分類方式稱為一個刻面。不同的刻面根據其重要性可以設置不同的優(yōu)先級。,對構件的每個刻面賦予相應的值,用以描述該構件??堂娣诸惥哂休^好的靈活性,易于加入新的刻面值,因此刻面分類比枚舉分類更易于擴展和修改。 該方法首先是為構件庫中的所有構件定義一組屬性,并賦予相應的屬性值。開發(fā)人員通過指定一組屬性值在構件庫中對構件進行檢索。,刻面分類法(Faceted Classification): 支持多重觀點對構件進行分類,例如從構件的應用領域、構件所描述的對象、構件的觀點和編程語言等不同的方式來分類。 每一種分類方式稱為一個刻面。 每個刻面把構件集合劃分為一個子集,各刻面所劃分的子集形成一

12、些較小的交集。 一個構件對每個每個刻面有一個刻面值,例如: 應用領域 = 計算機繪圖 對象 = 橢圓 功能 彩色填充, 編程語言 = C+,檢索一個構件時,給出一組刻面值,將確定一組子集合,構件應該在這些子結合的交集中,從其中確認所需的構件就比較容易。 構件可用屬性描述,例如構件類型、開發(fā)單位、作者、提交日期等屬性。檢索時通過構件的屬性可以縮小搜索范圍。 刻面和屬性都不涉及構件內部實現,只是為了便于構件的管理、檢索和使用。如果把構件比作一只箱子,其內容如同箱子中裝的東西,刻面和屬性則如同箱子外邊的標簽。 刻面分類法可以看作層次分類法的擴充。,(3)屬性-值分類 該方法首先是為構件庫中的所有構件

13、定義一組屬性,并賦予相應的屬性值。開發(fā)人員通過指定一組屬性值在構件庫中對構件進行檢索。 該分類方法與刻面分類方法有幾點不同之處: 屬性的數量沒有限制,而刻面描述一般限制在7或8個刻面; 屬性沒有優(yōu)先級,而刻面根據其重要程度,有相應的優(yōu)先級;,構件庫中檢索一個構件和在數據庫中檢索一個記錄是不同的。 構件庫檢索的不確定性帶來兩種相互矛盾的結果:檢索的結果可能是一個較大的構件集合,要從中找到所需的構件仍然很費力;檢索得到的集合沒有把真正需要的構件包括在內。 解決方法: (一)一般構件庫系統(tǒng)能對提出的檢索條件作廣義解釋。 建立同義詞對照表,例如“商品銷售”、“售貨”、“賣貨”看作一組同義詞; 建立近意

14、詞對照表,例如把“商業(yè)”、“商場”、“連鎖店”看作一組近意詞。 系統(tǒng)首先匹配同義詞,再匹配近意詞,都可以被包括到廣義結果集合中。,7.3.3 構件檢索,(二)使檢索得到的構件集合盡可能不包括對用戶無用的構件。 增加更多的刻面與構件屬性:較多的刻面和屬性值,將得到更小的子集合文集,減輕最終發(fā)現和確認所需構件的難度; 建立構件關鍵詞:根據構件內容提煉關鍵詞,如同學術論文的關鍵詞,反映有關構件內容的一些主要信息。 例如,找功能構件的關鍵詞有“壓入”、“彈出”、“后進先出”等等。如果通過刻面和構件屬性得到的構件子集較大,可用關鍵詞作進一步的檢索,以縮小搜索范圍。,改進構件檢索的其它措施: (1)記錄用

15、戶使用構件庫的經驗,并根據這些經驗改經構件檢索系統(tǒng); (2)對每個構件給出一段文字的簡要介紹; (3)提供較強的人機對話功能; (4)引導用戶對自己需求的表達不斷精化。,7.3.4 基于構件的開發(fā),基于構件的開發(fā)是使用可復用構件組裝開發(fā)新的應用系統(tǒng)。 一、開發(fā)過程,、構件的鑒定 構件的鑒定是對打算用于軟件開發(fā)的構件能否滿足應用的需要,達到應用所需要的性能、可靠性、質量的保證進行相應的考察。 、構件的調整 通常在將構件復用到應用中時,構件需要進行必要的調整和修改才能適應應用的需要。 、 構件的組裝 構件的組裝是將經過鑒定和調整以后的構件組裝到應用系統(tǒng)中。通常為了達到此目的,還必須建一個基礎設施提

16、供構件協(xié)同的模型和使構件能夠交互并完成共同任務的的特定服務。,二、基于構件的軟件開發(fā)特點,1、開發(fā)的質量 基于構件的軟件開發(fā)的一個明顯的優(yōu)點就是提高了軟件的質量。 可復用的構件在開發(fā)過程中,都經過嚴格的測試。 HP 公司的一份研究報告認為:“被復用代碼的缺陷率是每一千行0.9 個缺陷。而在新開發(fā)的代碼中缺陷率是每一千行4.1 個缺陷。對一個包含68%復用代碼的軟件來說,缺陷率是每一千行2.0 個缺陷,比無復用的軟件缺陷率大約減少了51%?!?2、開發(fā)的效率 基于可復用構件的軟件開發(fā)對于提高軟件開發(fā)的效率也有著顯著的作用。(一般大約30%-50%的復用可以使開發(fā)效率提高25%-40%) 3、開發(fā)

17、的成本 使用可復用的現成構件進行軟件開發(fā)比一切都重新開發(fā),其成本大為節(jié)省。通常開發(fā)、測試、維護一個可復10用的構件的成本是一個具有相同功能非復用構件的1.5-3 倍,在同一個領域的應用系統(tǒng)之間,不但可以找到其共同的軟件構件,而且可以發(fā)現共同的或相似的軟件體系結構(Software Architecture)。 專向領域的復用開拓了一種新的復用境界,被復用的不僅是可實現某種局部功能的軟件構件,而且可以是一些形成系統(tǒng)總體結構,并把各個可復用構件連接到一起的軟件構架(Software Framework)。 電子產品的主電路板可看成該產品可復用的構架,它把許多可復用的電子器件連接在一起。 軟件構架是

18、一種由特定領域的軟件體系結構所決定的軟件構造框架。,7.3.5 可復用的軟件構架,軟件構架不是解決軟件的某個局部問題,而是描述了軟件的總體結構。它描述了一類軟件的總體構成情況,包括該軟件有哪些主要部件以及各部件之間的關系,但是不涉及每個部件的細節(jié)。 可復用的軟件構架給出一類應用系統(tǒng)在總體構造上的共性或相似性,忽略了各個系統(tǒng)的局部差異。 例如,一個超級市場的銷售管理系統(tǒng)的軟件構架,它包括的類有收款機、商品一覽表、商品、供貨員、銷售事件、帳冊和上級系統(tǒng)接口等。它只表明一般情況下系統(tǒng)應由哪些類構成,并指出這些類之間的關系。但沒有定義每個類,在每個具體情況的系統(tǒng)中,各個類的內部特征可能是不同的。,在使用這個軟件架構和一些構件組裝成一個具體的應用系統(tǒng)時,可以根據該系統(tǒng)的特殊要求選用不同的構件,也可能對構件做一些局部修改。 可見,軟件構架的使用將把軟件開發(fā)看作一個組裝過程,在軟件構架的指導下尋找可復用構件(及開發(fā)一些新構件)并進行組裝。 這種基于構件/架構的組裝式軟件開發(fā)過程是目前很受重視的研究動向。,基于構件/構架的軟件開發(fā),基于專向領域的軟件復用和領域分析技術,C.Braun等人在1993年提出了“領域專用軟件體系結構”(Domain-Specific Software Architecture,簡稱DSSA)的概念

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論