《組件化軟件工程》_第1頁
《組件化軟件工程》_第2頁
《組件化軟件工程》_第3頁
《組件化軟件工程》_第4頁
《組件化軟件工程》_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

高級軟件工程

構件化軟件開發(fā)陳寧江2008.051.軟件復用(reuse)的概念軟件復用:利用已有的軟件來建造新的軟件系統(tǒng)的過程,將可復用構件作為新系統(tǒng)的構建模塊并以可控的方式和過程對構件進行組合與修改軟件復用的發(fā)展子程序(Subroutine)(A.Turing,20世紀40年代)→復用代碼、函數(shù)、算法等→

“軟件工廠”(Mcllroy,1968)→

軟件庫、類庫→構件2.軟件復用的優(yōu)點

改善軟件質(zhì)量減少工作量快速構建系統(tǒng)原型幫助程序員獲得經(jīng)驗和知識3.影響軟件復用成敗的因素管理和組織層面項目管理者的支持和經(jīng)驗面向復用特點的軟件過程模型專門的小組搜集、維護和提供可復用的構件程序員的心理因素技術層面支持復用的方法和技術還存在許多困難需有一個組織和管理良好的構件庫改編已有的軟件或者構件,提取可復用的構件經(jīng)濟層面開發(fā)可復用的構件的代價較高4.復用的一般過程復用評估復用啟動復用實驗復用擴展領域分析復用整合軟件組織了解和評估實施復用的能力,分析復用所帶來的收益和所付出的代價分析已有軟件,尋找、評價和選擇可復用的軟件構件了解防礙復用的問題,減少復用的風險和代價確定項目復用過程中各個參與者的職責,擴展或者整合可復用構件庫建立系統(tǒng)性的復用過程,標識某一領域多個應用的共同需求根據(jù)復用需要調(diào)整組織結(jié)構和軟件開發(fā)過程,建立制度性的復用5.復用的層次復用:應用(COTS)復用:框架(半完成應用)復用:微結(jié)構(設計模式,協(xié)作關系)復用:類,方法,代碼6.基于構件的軟件開發(fā)目標長期以來的軟件開發(fā)狀況多數(shù)軟件都是針對某個具體的應用系統(tǒng)從頭進行開發(fā)的導致:出現(xiàn)了大量的同類軟件重復開發(fā),造成大量人力、財力的浪費,而且軟件的質(zhì)量也不高對比:汽車工業(yè)的生產(chǎn)模式在已有的部件基礎上通過組裝進行生產(chǎn):有專門的部件生產(chǎn)工廠,汽車設計者在設計中選擇市場上已有的合適的部件避免了大量的重復勞動,提高了產(chǎn)品質(zhì)量和生產(chǎn)效率,促進分工合作我們的目標:將制造業(yè)中的組裝式生產(chǎn)模式引入到軟件開發(fā)中7.構件(Component)的典型定義Pressman:構件是某系統(tǒng)中有價值的、幾乎獨立的并可替換的一個部分,它在良好定義的體系結(jié)構語境內(nèi)滿足某清晰的功能Brown:構件是一個獨立發(fā)布的功能部分,可以通過其接口訪問它的服務“計算機科學技術百科全書”:軟件構件是軟件系統(tǒng)中具有相對獨立功能,可以明確標識,接口由規(guī)約指定,與語境有明顯依賴關系,可獨立部署,且多由第三方提供的可組裝軟件實體;軟件構件須承載有用的功能,并遵循某種構件模型;可復用構件是指具有可復用價值的構件8.構件(Component)的概念構件是:已被封裝的、具有良好接口定義的軟件包可以被獨立地開發(fā)和部署,可由第三方來組合能夠與其它構件組合具有清晰的接口和文檔,并定義了復用的情景注:構件不是對象,也不一定使用對象技術實現(xiàn)。從粒度上,構件一般都比對象類大,面向?qū)ο蟮臉嫾话銓崿F(xiàn)為一組類的集合

9.構件的要素規(guī)格說明:建立在接口概念之上,作為服務提供方與客戶方之間的契約一個或多個實現(xiàn)受約束的構件標準包裝方法部署方法10.3C構件模型:一個指導性模型構件由三個不同方面的描述組成概念(concept):關于“構件做什么”的抽象描述,可以通過概念去理解構件的功能。概念包括接口規(guī)約和語義描述(和每個操作相關聯(lián),一般表示為前后置謂詞形式)內(nèi)容(content):概念的具體實現(xiàn),描述構件如何完成概念所刻畫的功能情境(context):描述構件和外圍環(huán)境在概念級和內(nèi)容級的關系,刻畫構件的應用環(huán)境,為構件的選用和適應性修改提供指導11.常用的構件標準CORBA(CommonObjectRequestBrokerArchitecture)OMG發(fā)布的構件標準核心是ORB(ObjectRequestBroker),定義了異構環(huán)境下對象透明地發(fā)送請求和接收響應的基本機制COM+微軟開發(fā)的一個構件對象模型,提供了在運行于Windows操作系統(tǒng)之上的單個應用中使用不同廠商生產(chǎn)的對象的規(guī)約EJB:基于Java的構件提供了讓客戶端使用遠程的分布式對象的框架EJB規(guī)約規(guī)定了EJB構件如何與EJB容器進行行交互12.構件化軟件開發(fā)(CBSD)13.構件化軟件開發(fā)的比較AnalysisComponentAcquisitionComponent–OrientedDesignComponentCompositionIntegrationTestSystemTest構件化軟件開發(fā)過程ImplementationUnitTest傳統(tǒng)的軟件過程AnalysisDesignIntegrationTestSystemTest14.基于構件的軟件開發(fā)過程15.領域工程步驟領域分析建立領域特定的基準體系結(jié)構模型標識候選構件泛化(generalization)和可變性(variability)分析重建構件構件的測試構件的包裝構件入庫16.應用系統(tǒng)工程的步驟建立應用系統(tǒng)的體系結(jié)構模型尋找候選構件評價和選擇合適的構件構件的修改(modify)和特化(specialize)開發(fā)未被復用的部分構件的組裝集成測試評價被復用的構件,并推薦可能的新構件17.基于構件的軟件開發(fā)中的關鍵活動(1)查找構件發(fā)掘待開發(fā)應用中的核心構件,用文檔描述構件;通過領域分析、自行開發(fā)、逆向工程或者商業(yè)購買等途徑來獲得所需構件;創(chuàng)建構件庫(2)選擇構件從構件庫中挑選合適的構件。選擇過程通常與構件庫的檢索技術及算法相關(3)適配構件改編或者定制化所挑選的構件來滿足新的應用需求,使其能與其它構件或者底層框架集成18.基于構件的軟件開發(fā)中的關鍵活動(續(xù))(4)創(chuàng)建構件所選擇的構件不能完全滿足應用需求,這時必須開發(fā)和創(chuàng)建新的構件(5)組合構件組裝和集成構件的過程。工作量取決于構件的性質(zhì)(6)替換構件替換構件的過程與產(chǎn)品的維護有關,構件升級及其版本管理19.構件化開發(fā)中值得注意的問題技術方面構件接口應該清晰、標準開發(fā)過程模型:以接口為中心;獨立于編程語言;組合性;分離性集成能力商業(yè)方面構件市場和標準市場的范圍、規(guī)模和標準化20.SoftwareIndustryIntheRealWorldFlashline()

Javabeans/COM/ActiveXVbxtras()

VisualBasicComponentSource()

Java/COM/C++/Delphi/VisualStudio21.22.基于構件的開發(fā)活動(1):

構件選擇在構件庫中瀏覽和檢索構件檢索的效率檢索的精確性構件存儲和分類的標準構件的存在形式:源代碼,可執(zhí)行代碼使用范圍:在單個項目中使用,整個產(chǎn)品線中使用,多個產(chǎn)品線使用查詢表示方法:功能說明,關鍵字列表,設計模式,行為樣例構件表示方法:功能說明,源代碼,執(zhí)行代碼,關鍵字檢索目標:精確性,功能近似性,結(jié)構近似性匹配標準:正確性,關鍵字的相等性和包容性,自然語言分析23.構件的管理構件的分類描述對構件庫中的構件進行合理的分類和組織,幫助軟件開發(fā)人員方便地找到所需要的構件大多數(shù)的研究都建議使用圖書館科學索引方法進行構件分類構件庫管理系統(tǒng):主要用于構件的儲存、檢索、瀏覽和管理24.常用的構件分類模式-1枚舉分類(EnumeratedClassification)將構件組織成分類層次結(jié)構,構件庫中的構件按某些性質(zhì)分成若干大類,每個大類又分成若干較小的類,經(jīng)過若干次分解,形成構件分類的層次結(jié)構,實際的構件位于層次結(jié)構的最低層,其它層次則表示構件的類或子類枚舉分類模式的分層結(jié)構易于理解和檢索,但是,在建立層次結(jié)構之前,必須進行領域分析,尋找合適的供分類的性質(zhì)。屬性—值分類(Attribute_ValueClassification)為所有構件定義一組屬性,每個構件都具有一組屬性值,開發(fā)人員通過指定一組屬性值對構件庫檢索25.常用的構件分類模式-2刻面分類(FacetedClassification)根據(jù)一組刻面對構件分類,每個刻面從不同的側(cè)面對構件庫中的構件進行分類,并根據(jù)重要性設置刻面的優(yōu)先級每個刻面由一組術語(term)構成,稱之為術語空間(termspace),這些術語通常是描述性的關鍵詞檢索:用戶通過指定一組刻面的術語值尋找匹配的構件使用同義詞詞典(thesaurus)解決用戶指定的術語值與庫中構件所對應的術語值之間的不一致問題評價:具有較好的靈活性,易于加入新的刻面值,比枚舉分類模式易于擴展和修改26.構件庫管理系統(tǒng)的主要功能構件的分類存儲(即添加構件):根據(jù)構件庫的分類模型將入庫的構件儲存在構件庫中構件檢索:從構件庫中檢索出滿足用戶要求或接近用戶要求的構件.構件庫瀏覽:瀏覽庫中的全部或部分構件刪除構件:將不再使用的構件從構件庫中刪去構件使用情況評價:根據(jù)用戶使用和檢索構件的反饋意見對構件作出評價,為進一步的改進提供依據(jù)27.構件的描述和檢索構件庫管理系統(tǒng)的兩個關鍵技術,直接影響到構件庫檢索的查準率(precision)、查全率(recall)和效率(efficient)常用的構件檢索方法規(guī)約匹配:基于有序的謂詞邏輯的匹配,通過謂詞演算公式進行精確匹配,通過邏輯連接符和邏輯量詞進行部分精確匹配特征(signature)匹配:通過接口的定義進行匹配,適用于函數(shù)之類的構件術語輪廓匹配:基于構件編目描述語言的匹配,將每一個構件的編目描述作為該構件的一個特征矢量,通過測算矢量的距離進行匹配行為采樣:基于構件測試的匹配,根據(jù)測試結(jié)果相同的概率進行匹配28.基于構件的開發(fā)方法(2)

構件適配(Adaptation)構件適配指:是一般化化的構件建立面向特定應用的構件方法:部分實現(xiàn)。構件只實現(xiàn)一部分行為,而其它部分僅提供接口例如,C++類的抽象方法重載。構件為其全部行為提供了缺省的實現(xiàn),用戶在具體應用時可以重載這些行為插件。通過編寫插件的形式為構件添加功能。插件在構件中注冊其服務,構件在需要使用該服務時調(diào)用插件29.基于構件的開發(fā)方法(3)

構件的創(chuàng)建創(chuàng)建構件時必須強調(diào)廣泛性、通用性,而不應考慮那些僅在一些特定場合有用的特性構件創(chuàng)建的技術思路擴展。擴展構件的范圍,延伸其需求,以便于以后的應用收縮??s小構件的范圍和限制它們的功能,為以后的構件延伸建立基礎。(如:繼承機制)隔離。把構件與系統(tǒng)特定的部分(如操作系統(tǒng)或者硬件)分離開來,以實現(xiàn)構件的獨立性可配置性。創(chuàng)建一些較小的構件,然后通過配置以不同的方式組合這些構件以適應不同的應用需求構件創(chuàng)建完成之后,必須對其進行認證30.建造可復用構件建造構件的目的是為了以后復用構件,即為復用而建造構件在建造構件時仍應遵循抽象、逐步求精、信息隱蔽、功能獨立、結(jié)構化程序設計等思想和原則由于面向?qū)ο蠓椒ň哂蟹庋b性、繼承等特點,能有力地支持復用,所以應盡可能考慮采用面向?qū)ο蠓椒?1.對可復用構件的要求構件的設計應具有較高的通用程度構件應易于調(diào)整構件應易于組裝構件必須具有可檢索性構件必須經(jīng)過充分的測試32.創(chuàng)建領域構件的設計框架除應遵循已有的設計概念和原則外,還必須考慮應用領域的特征,例如:標準數(shù)據(jù):應該研究應用領域,并標識出標準的全局數(shù)據(jù)結(jié)構(如文件結(jié)構或完整的數(shù)據(jù)庫)標準接口協(xié)議:應該建立三個層次的接口協(xié)議:構件內(nèi)(intramodular)接口、構件外接口以及人機接口程序模板:程序的結(jié)構模型可以作為新程序的體系結(jié)構設計的模板33.可變性分析構件應具有較強的通用性和可變性為了滿足不同的復用需求,需要在構件復用時可能發(fā)生變化的一個或多個位置上標識變化點(variationpoint),同時為變化點附加一個或多個變體(variant)例如Account構件的帳號編碼規(guī)則以及透支規(guī)則在不同的國家可能不一樣·VP1·VP2CVP1descriptioncontext34.構件系統(tǒng)中的門面和變體35.可變性機制繼承:在變化點上創(chuàng)建指定抽象類型或抽象類的子類型或子類。擴展和擴展點:可以在用況和對象構件中的變化點(或擴展點)上附加變體(或擴展)參數(shù)化:用于模板、框架和宏的類型和類適用于變體較小時(經(jīng)常是一個數(shù)值、短語或表達式)36.構件質(zhì)量保證(qualification)目的:確保獲得的構件可以完成所需的功能并能被集成在系統(tǒng)中與系統(tǒng)的其它構件正確交互主要依據(jù)是構件的接口描述和相關的規(guī)格說明,但這些信息往往還不足以確保構件能成功地集成到系統(tǒng)中對于外部提供的成品構件(COTS)可通過運行構件測試版進行鑒定37.構件質(zhì)量保證需考慮的因素應用編程接口(API)該構件所需的開發(fā)和集成工具運行時需求,包括使用的資源(如內(nèi)存或存儲器)、時間或速度以及網(wǎng)絡協(xié)議服務需求,包括操作系統(tǒng)接口和來自其他構件的支持安全特征,包括訪問控制和身份驗證協(xié)議嵌入式設計假定,包括特定的數(shù)值或非數(shù)值算法的使用異常處理38.構件質(zhì)量的保證措施39.基于構件的開發(fā)方法(4)

構件的組合構件組裝將經(jīng)過鑒定和特化后的構件組裝成應用系統(tǒng)提倡使用構件組裝工具來組裝應用系統(tǒng)(能檢查接口匹配中的錯誤,實現(xiàn)組裝的自動化或半自動化)構件特化根據(jù)應用系統(tǒng)的具體情況對其進行特化,對變化點配置特定的變體,必要時要自行開發(fā)變體如果所選的構件不能完全滿足應用系統(tǒng)的功能需求,還需對構件作適當?shù)男薷娜绻x的構件未按構件標準開發(fā)(如遺產(chǎn)系統(tǒng)中抽取的構件)時,還需按某種構件標準對其進行包裝40.構件組合的方法構件的結(jié)構構件組合的主要方法構件B構件A確切匹配額外服務修改服務補充服務粘合代碼41.構件組合的中介直接組合。構件通過直接交互的方式來構建應用構件必須了解其它構件的存在及其所能提供的服務,并直接調(diào)用這些服務直接組合導致構件接口之間的強耦合基于中間件的組合中間件通過底層的基礎設施來容納和集成構件構件之間并不直接互相調(diào)用,而是通過中間件框架所提供的接口來調(diào)用42.構件組合要注意的問題構件方面的問題構件的分類和文檔化技術構件測試與認證技術構件的版本和升級問題集成過程方面的問題構件集成對軟件開發(fā)過程模型可能產(chǎn)生影響在分析待開發(fā)系統(tǒng)前就應熟悉已經(jīng)存在的構件,并根據(jù)構件的有關信息將系統(tǒng)分割為構件維護構件的困難43.構件組合要注意的問題(續(xù))質(zhì)量方面的問題如何保證構件及其組合結(jié)果系統(tǒng)的可靠性相對于從頭開發(fā)并經(jīng)過優(yōu)化的系統(tǒng),基于構件系統(tǒng)的性能可能有所下降使用構件組合系統(tǒng)的安全性44.應用系統(tǒng)工程任務:通過組裝可復用構件得到應用系統(tǒng)構件是組成應用系統(tǒng)的基本單元注重體系結(jié)構和構件接口的分析和設計,忽略構件內(nèi)部實現(xiàn)的設計45.關注接口的設計接口是構件行為的描述機制,并提供了對其服務的訪問供應接口(Providedinterface):描述構件所提供的服務,可以被其它構件訪問請求接口(requivedinterface):請求接口描述構件為完成其功能(服務)需請求其它構件為其提供的服務一個接口可以有多種實現(xiàn),并且對使用者隱蔽接口描述是構件使用者能依賴的所有信息,因此構件接口描述的表達能力和完整性是CBSD方法主要關注的問題之一46.基于構件的體系結(jié)構基于構件的應用系統(tǒng)體系結(jié)構描述了組成應用系統(tǒng)的構件,構件之間的組織結(jié)構、交互、約束和關系對系統(tǒng)的組成、結(jié)構以及系統(tǒng)如何工作的較為宏觀的描述如果在領域工程中已開發(fā)了領域基準體系結(jié)構(referencearchitecture),則可以通過對基準體系結(jié)構的剪裁和/或擴充獲得應用系統(tǒng)的體系結(jié)構47.基于構件的體系結(jié)構層次邏輯體系結(jié)構以接口形式對每組服務進行描述,并描述那些包怎樣交互來滿足通常的用戶使用場景展示了系統(tǒng)設計的藍圖,可用于驗證系統(tǒng)是否提供了適當?shù)墓δ?,并能在系統(tǒng)功能需求變化時方便地改變系統(tǒng)的設計物理體系結(jié)構描述系統(tǒng)的物理設計,包括硬件及其拓撲結(jié)構、網(wǎng)絡和通信協(xié)議、基礎設施(如運行平臺、中間件、數(shù)據(jù)庫管理系統(tǒng)等),以及軟件系統(tǒng)的部署展示了系統(tǒng)的實現(xiàn)構架,有助于理解系統(tǒng)的許多非功能屬性,如性能、吞吐量、服務的可用性等48.基于構件的應用系統(tǒng)開發(fā)方法Rational統(tǒng)一過程(RUP)一個關于軟件開發(fā)的廣泛的過程框架,覆蓋了整個軟件生命周期使用UML進行分析和設計建模,鼓勵使用CBSD方法SterlingSoftware的Enterprise-CBD方法鼓勵使用UML的擴展形式把構件的規(guī)格說明和實現(xiàn)分離允許制作技術中立的規(guī)格說明,然后再使用不同的實現(xiàn)技術來實現(xiàn)規(guī)格說明共同點:關注構件庫中的構件、接口的設計和基于構件構架的應用程序組裝49.COTS的概念商品構件COTS(CommercialOffTheShelf):指可根據(jù)商品價目表向制造商或供應商購買的現(xiàn)成商品,用戶能在不加任何修改的情況下直接使用在軟件領域中,COTS是指具有如下特征的可運行的軟件產(chǎn)品:可以面向公眾銷售、出租或者授予許可;購買者、租賃者和獲得

溫馨提示

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

評論

0/150

提交評論