




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
組件化軟件工程26、我們像鷹一樣,生來就是自由的,但是為了生存,我們不得不為自己編織一個(gè)籠子,然后把自己關(guān)在里面?!┤R索27、法律如果不講道理,即使延續(xù)時(shí)間再長(zhǎng),也還是沒有制約力的?!獝邸た瓶?8、好法律是由壞風(fēng)俗創(chuàng)造出來的?!R克羅維烏斯29、在一切能夠接受法律支配的人類的狀態(tài)中,哪里沒有法律,那里就沒有自由?!蹇?0、風(fēng)俗可以造就法律,也可以廢除法律。——塞·約翰遜組件化軟件工程組件化軟件工程26、我們像鷹一樣,生來就是自由的,但是為了生存,我們不得不為自己編織一個(gè)籠子,然后把自己關(guān)在里面?!┤R索27、法律如果不講道理,即使延續(xù)時(shí)間再長(zhǎng),也還是沒有制約力的。——愛·科克28、好法律是由壞風(fēng)俗創(chuàng)造出來的。——馬克羅維烏斯29、在一切能夠接受法律支配的人類的狀態(tài)中,哪里沒有法律,那里就沒有自由?!蹇?0、風(fēng)俗可以造就法律,也可以廢除法律。——塞·約翰遜高級(jí)軟件工程
構(gòu)件化軟件開發(fā)陳寧江2008.052軟件復(fù)用(reuse)的概念軟件復(fù)用:利用已有的軟件來建造新的軟件系統(tǒng)的過程,將可復(fù)用構(gòu)件作為新系統(tǒng)的構(gòu)建模塊并以可控的方式和過程對(duì)構(gòu)件進(jìn)行組合與修改軟件復(fù)用的發(fā)展子程序(Subroutine)(A.Turing,20世紀(jì)40年代)→復(fù)用代碼、函數(shù)、算法等→“軟件工廠”(Mcllroy,1968)→軟件庫、類庫→構(gòu)件3組件化軟件工程26、我們像鷹一樣,生來就是自由的,但是為了生組件化軟件工程課件組件化軟件工程課件組件化軟件工程課件組件化軟件工程課件復(fù)用的一般過程復(fù)用評(píng)估復(fù)用啟動(dòng)復(fù)用實(shí)驗(yàn)復(fù)用擴(kuò)展領(lǐng)域分析復(fù)用整合軟件組織了解和評(píng)估實(shí)施復(fù)用的能力,分析復(fù)用所帶來的收益和所付出的代價(jià)分析已有軟件,尋找、評(píng)價(jià)和選擇可復(fù)用的軟件構(gòu)件了解防礙復(fù)用的問題,減少?gòu)?fù)用的風(fēng)險(xiǎn)和代價(jià)確定項(xiàng)目復(fù)用過程中各個(gè)參與者的職責(zé),擴(kuò)展或者整合可復(fù)用構(gòu)件庫建立系統(tǒng)性的復(fù)用過程,標(biāo)識(shí)某一領(lǐng)域多個(gè)應(yīng)用的共同需求根據(jù)復(fù)用需要調(diào)整組織結(jié)構(gòu)和軟件開發(fā)過程,建立制度性的復(fù)用6復(fù)用的一般過程復(fù)用評(píng)估復(fù)用啟動(dòng)復(fù)用實(shí)驗(yàn)復(fù)用擴(kuò)展領(lǐng)域分析復(fù)用復(fù)用的層次復(fù)用:應(yīng)用(COTS)復(fù)用:框架(半完成應(yīng)用)復(fù)用:微結(jié)構(gòu)(設(shè)計(jì)模式,協(xié)作關(guān)系)復(fù)用:類,方法,代碼7復(fù)用的層次復(fù)用:應(yīng)用復(fù)用:框架復(fù)用:微結(jié)構(gòu)復(fù)用:類,方法,基于構(gòu)件的軟件開發(fā)目標(biāo)長(zhǎng)期以來的軟件開發(fā)狀況多數(shù)軟件都是針對(duì)某個(gè)具體的應(yīng)用系統(tǒng)從頭進(jìn)行開發(fā)的導(dǎo)致:出現(xiàn)了大量的同類軟件重復(fù)開發(fā),造成大量人力、財(cái)力的浪費(fèi),而且軟件的質(zhì)量也不高對(duì)比:汽車工業(yè)的生產(chǎn)模式在已有的部件基礎(chǔ)上通過組裝進(jìn)行生產(chǎn):有專門的部件生產(chǎn)工廠,汽車設(shè)計(jì)者在設(shè)計(jì)中選擇市場(chǎng)上已有的合適的部件避免了大量的重復(fù)勞動(dòng),提高了產(chǎn)品質(zhì)量和生產(chǎn)效率,促進(jìn)分工合作我們的目標(biāo):將制造業(yè)中的組裝式生產(chǎn)模式引入到軟件開發(fā)中8基于構(gòu)件的軟件開發(fā)目標(biāo)長(zhǎng)期以來的軟件開發(fā)狀況8構(gòu)件(Component)的典型定義Pressman:構(gòu)件是某系統(tǒng)中有價(jià)值的、幾乎獨(dú)立的并可替換的一個(gè)部分,它在良好定義的體系結(jié)構(gòu)語境內(nèi)滿足某清晰的功能Brown:構(gòu)件是一個(gè)獨(dú)立發(fā)布的功能部分,可以通過其接口訪問它的服務(wù)“計(jì)算機(jī)科學(xué)技術(shù)百科全書”:軟件構(gòu)件是軟件系統(tǒng)中具有相對(duì)獨(dú)立功能,可以明確標(biāo)識(shí),接口由規(guī)約指定,與語境有明顯依賴關(guān)系,可獨(dú)立部署,且多由第三方提供的可組裝軟件實(shí)體;軟件構(gòu)件須承載有用的功能,并遵循某種構(gòu)件模型;可復(fù)用構(gòu)件是指具有可復(fù)用價(jià)值的構(gòu)件9構(gòu)件(Component)的典型定義Pressman:構(gòu)件是構(gòu)件(Component)的概念構(gòu)件是:已被封裝的、具有良好接口定義的軟件包可以被獨(dú)立地開發(fā)和部署,可由第三方來組合能夠與其它構(gòu)件組合具有清晰的接口和文檔,并定義了復(fù)用的情景注:構(gòu)件不是對(duì)象,也不一定使用對(duì)象技術(shù)實(shí)現(xiàn)。從粒度上,構(gòu)件一般都比對(duì)象類大,面向?qū)ο蟮臉?gòu)件一般實(shí)現(xiàn)為一組類的集合
10構(gòu)件(Component)的概念構(gòu)件是:10構(gòu)件的要素規(guī)格說明:建立在接口概念之上,作為服務(wù)提供方與客戶方之間的契約一個(gè)或多個(gè)實(shí)現(xiàn)受約束的構(gòu)件標(biāo)準(zhǔn)包裝方法部署方法11構(gòu)件的要素規(guī)格說明:建立在接口概念之上,作為服務(wù)提供方與客戶3C構(gòu)件模型:一個(gè)指導(dǎo)性模型構(gòu)件由三個(gè)不同方面的描述組成概念(concept):關(guān)于“構(gòu)件做什么”的抽象描述,可以通過概念去理解構(gòu)件的功能。概念包括接口規(guī)約和語義描述(和每個(gè)操作相關(guān)聯(lián),一般表示為前后置謂詞形式)內(nèi)容(content):概念的具體實(shí)現(xiàn),描述構(gòu)件如何完成概念所刻畫的功能情境(context):描述構(gòu)件和外圍環(huán)境在概念級(jí)和內(nèi)容級(jí)的關(guān)系,刻畫構(gòu)件的應(yīng)用環(huán)境,為構(gòu)件的選用和適應(yīng)性修改提供指導(dǎo)123C構(gòu)件模型:一個(gè)指導(dǎo)性模型構(gòu)件由三個(gè)不同方面的描述組成12常用的構(gòu)件標(biāo)準(zhǔn)CORBA(CommonObjectRequestBrokerArchitecture)OMG發(fā)布的構(gòu)件標(biāo)準(zhǔn)核心是ORB(ObjectRequestBroker),定義了異構(gòu)環(huán)境下對(duì)象透明地發(fā)送請(qǐng)求和接收響應(yīng)的基本機(jī)制COM+微軟開發(fā)的一個(gè)構(gòu)件對(duì)象模型,提供了在運(yùn)行于Windows操作系統(tǒng)之上的單個(gè)應(yīng)用中使用不同廠商生產(chǎn)的對(duì)象的規(guī)約EJB:基于Java的構(gòu)件提供了讓客戶端使用遠(yuǎn)程的分布式對(duì)象的框架EJB規(guī)約規(guī)定了EJB構(gòu)件如何與EJB容器進(jìn)行行交互13常用的構(gòu)件標(biāo)準(zhǔn)CORBA(CommonObjectReq構(gòu)件化軟件開發(fā)(CBSD)14構(gòu)件化軟件開發(fā)(CBSD)14構(gòu)件化軟件開發(fā)的比較AnalysisComponentAcquisitionComponent–OrientedDesignComponentCompositionIntegrationTestSystemTest構(gòu)件化軟件開發(fā)過程ImplementationUnitTest傳統(tǒng)的軟件過程AnalysisDesignIntegrationTestSystemTest15構(gòu)件化軟件開發(fā)的比較AnalysisComponentAc基于構(gòu)件的軟件開發(fā)過程16基于構(gòu)件的軟件開發(fā)過程16領(lǐng)域工程步驟領(lǐng)域分析建立領(lǐng)域特定的基準(zhǔn)體系結(jié)構(gòu)模型標(biāo)識(shí)候選構(gòu)件泛化(generalization)和可變性(variability)分析重建構(gòu)件構(gòu)件的測(cè)試構(gòu)件的包裝構(gòu)件入庫17領(lǐng)域工程步驟領(lǐng)域分析17應(yīng)用系統(tǒng)工程的步驟建立應(yīng)用系統(tǒng)的體系結(jié)構(gòu)模型尋找候選構(gòu)件評(píng)價(jià)和選擇合適的構(gòu)件構(gòu)件的修改(modify)和特化(specialize)開發(fā)未被復(fù)用的部分構(gòu)件的組裝集成測(cè)試評(píng)價(jià)被復(fù)用的構(gòu)件,并推薦可能的新構(gòu)件18應(yīng)用系統(tǒng)工程的步驟建立應(yīng)用系統(tǒng)的體系結(jié)構(gòu)模型18基于構(gòu)件的軟件開發(fā)中的關(guān)鍵活動(dòng)(1)查找構(gòu)件發(fā)掘待開發(fā)應(yīng)用中的核心構(gòu)件,用文檔描述構(gòu)件;通過領(lǐng)域分析、自行開發(fā)、逆向工程或者商業(yè)購(gòu)買等途徑來獲得所需構(gòu)件;創(chuàng)建構(gòu)件庫(2)選擇構(gòu)件從構(gòu)件庫中挑選合適的構(gòu)件。選擇過程通常與構(gòu)件庫的檢索技術(shù)及算法相關(guān)(3)適配構(gòu)件改編或者定制化所挑選的構(gòu)件來滿足新的應(yīng)用需求,使其能與其它構(gòu)件或者底層框架集成19基于構(gòu)件的軟件開發(fā)中的關(guān)鍵活動(dòng)(1)查找構(gòu)件19基于構(gòu)件的軟件開發(fā)中的關(guān)鍵活動(dòng)(續(xù))(4)創(chuàng)建構(gòu)件所選擇的構(gòu)件不能完全滿足應(yīng)用需求,這時(shí)必須開發(fā)和創(chuàng)建新的構(gòu)件(5)組合構(gòu)件組裝和集成構(gòu)件的過程。工作量取決于構(gòu)件的性質(zhì)(6)替換構(gòu)件替換構(gòu)件的過程與產(chǎn)品的維護(hù)有關(guān),構(gòu)件升級(jí)及其版本管理20基于構(gòu)件的軟件開發(fā)中的關(guān)鍵活動(dòng)(續(xù))(4)創(chuàng)建構(gòu)件20構(gòu)件化開發(fā)中值得注意的問題技術(shù)方面構(gòu)件接口應(yīng)該清晰、標(biāo)準(zhǔn)開發(fā)過程模型:以接口為中心;獨(dú)立于編程語言;組合性;分離性集成能力商業(yè)方面構(gòu)件市場(chǎng)和標(biāo)準(zhǔn)市場(chǎng)的范圍、規(guī)模和標(biāo)準(zhǔn)化21構(gòu)件化開發(fā)中值得注意的問題技術(shù)方面21SoftwareIndustryIntheRealWorldFlashline(flashline)
Javabeans/COM/ActiveXVbxtras(vbxtras)
VisualBasicComponentSource(componentsource)
Java/COM/C++/Delphi/VisualStudio22SoftwareIndustryIntheReal2323基于構(gòu)件的開發(fā)活動(dòng)(1):
構(gòu)件選擇在構(gòu)件庫中瀏覽和檢索構(gòu)件檢索的效率檢索的精確性構(gòu)件存儲(chǔ)和分類的標(biāo)準(zhǔn)構(gòu)件的存在形式:源代碼,可執(zhí)行代碼使用范圍:在單個(gè)項(xiàng)目中使用,整個(gè)產(chǎn)品線中使用,多個(gè)產(chǎn)品線使用查詢表示方法:功能說明,關(guān)鍵字列表,設(shè)計(jì)模式,行為樣例構(gòu)件表示方法:功能說明,源代碼,執(zhí)行代碼,關(guān)鍵字檢索目標(biāo):精確性,功能近似性,結(jié)構(gòu)近似性匹配標(biāo)準(zhǔn):正確性,關(guān)鍵字的相等性和包容性,自然語言分析24基于構(gòu)件的開發(fā)活動(dòng)(1):
構(gòu)件選擇在構(gòu)件庫中瀏覽和檢索構(gòu)構(gòu)件的管理構(gòu)件的分類描述對(duì)構(gòu)件庫中的構(gòu)件進(jìn)行合理的分類和組織,幫助軟件開發(fā)人員方便地找到所需要的構(gòu)件大多數(shù)的研究都建議使用圖書館科學(xué)索引方法進(jìn)行構(gòu)件分類構(gòu)件庫管理系統(tǒng):主要用于構(gòu)件的儲(chǔ)存、檢索、瀏覽和管理25構(gòu)件的管理構(gòu)件的分類描述25常用的構(gòu)件分類模式-1枚舉分類(EnumeratedClassification)將構(gòu)件組織成分類層次結(jié)構(gòu),構(gòu)件庫中的構(gòu)件按某些性質(zhì)分成若干大類,每個(gè)大類又分成若干較小的類,經(jīng)過若干次分解,形成構(gòu)件分類的層次結(jié)構(gòu),實(shí)際的構(gòu)件位于層次結(jié)構(gòu)的最低層,其它層次則表示構(gòu)件的類或子類枚舉分類模式的分層結(jié)構(gòu)易于理解和檢索,但是,在建立層次結(jié)構(gòu)之前,必須進(jìn)行領(lǐng)域分析,尋找合適的供分類的性質(zhì)。屬性—值分類(Attribute_ValueClassification)為所有構(gòu)件定義一組屬性,每個(gè)構(gòu)件都具有一組屬性值,開發(fā)人員通過指定一組屬性值對(duì)構(gòu)件庫檢索26常用的構(gòu)件分類模式-1枚舉分類(EnumeratedCla常用的構(gòu)件分類模式-2刻面分類(FacetedClassification)根據(jù)一組刻面對(duì)構(gòu)件分類,每個(gè)刻面從不同的側(cè)面對(duì)構(gòu)件庫中的構(gòu)件進(jìn)行分類,并根據(jù)重要性設(shè)置刻面的優(yōu)先級(jí)每個(gè)刻面由一組術(shù)語(term)構(gòu)成,稱之為術(shù)語空間(termspace),這些術(shù)語通常是描述性的關(guān)鍵詞檢索:用戶通過指定一組刻面的術(shù)語值尋找匹配的構(gòu)件使用同義詞詞典(thesaurus)解決用戶指定的術(shù)語值與庫中構(gòu)件所對(duì)應(yīng)的術(shù)語值之間的不一致問題評(píng)價(jià):具有較好的靈活性,易于加入新的刻面值,比枚舉分類模式易于擴(kuò)展和修改27常用的構(gòu)件分類模式-2刻面分類(FacetedClassi構(gòu)件庫管理系統(tǒng)的主要功能構(gòu)件的分類存儲(chǔ)(即添加構(gòu)件):根據(jù)構(gòu)件庫的分類模型將入庫的構(gòu)件儲(chǔ)存在構(gòu)件庫中構(gòu)件檢索:從構(gòu)件庫中檢索出滿足用戶要求或接近用戶要求的構(gòu)件.構(gòu)件庫瀏覽:瀏覽庫中的全部或部分構(gòu)件刪除構(gòu)件:將不再使用的構(gòu)件從構(gòu)件庫中刪去構(gòu)件使用情況評(píng)價(jià):根據(jù)用戶使用和檢索構(gòu)件的反饋意見對(duì)構(gòu)件作出評(píng)價(jià),為進(jìn)一步的改進(jìn)提供依據(jù)28構(gòu)件庫管理系統(tǒng)的主要功能構(gòu)件的分類存儲(chǔ)(即添加構(gòu)件):根據(jù)構(gòu)構(gòu)件的描述和檢索構(gòu)件庫管理系統(tǒng)的兩個(gè)關(guān)鍵技術(shù),直接影響到構(gòu)件庫檢索的查準(zhǔn)率(precision)、查全率(recall)和效率(efficient)常用的構(gòu)件檢索方法規(guī)約匹配:基于有序的謂詞邏輯的匹配,通過謂詞演算公式進(jìn)行精確匹配,通過邏輯連接符和邏輯量詞進(jìn)行部分精確匹配特征(signature)匹配:通過接口的定義進(jìn)行匹配,適用于函數(shù)之類的構(gòu)件術(shù)語輪廓匹配:基于構(gòu)件編目描述語言的匹配,將每一個(gè)構(gòu)件的編目描述作為該構(gòu)件的一個(gè)特征矢量,通過測(cè)算矢量的距離進(jìn)行匹配行為采樣:基于構(gòu)件測(cè)試的匹配,根據(jù)測(cè)試結(jié)果相同的概率進(jìn)行匹配29構(gòu)件的描述和檢索構(gòu)件庫管理系統(tǒng)的兩個(gè)關(guān)鍵技術(shù),直接影響到構(gòu)件基于構(gòu)件的開發(fā)方法(2)
構(gòu)件適配(Adaptation)構(gòu)件適配指:是一般化化的構(gòu)件建立面向特定應(yīng)用的構(gòu)件方法:部分實(shí)現(xiàn)。構(gòu)件只實(shí)現(xiàn)一部分行為,而其它部分僅提供接口例如,C++類的抽象方法重載。構(gòu)件為其全部行為提供了缺省的實(shí)現(xiàn),用戶在具體應(yīng)用時(shí)可以重載這些行為插件。通過編寫插件的形式為構(gòu)件添加功能。插件在構(gòu)件中注冊(cè)其服務(wù),構(gòu)件在需要使用該服務(wù)時(shí)調(diào)用插件30基于構(gòu)件的開發(fā)方法(2)
構(gòu)件適配(Adaptation)基于構(gòu)件的開發(fā)方法(3)
構(gòu)件的創(chuàng)建創(chuàng)建構(gòu)件時(shí)必須強(qiáng)調(diào)廣泛性、通用性,而不應(yīng)考慮那些僅在一些特定場(chǎng)合有用的特性構(gòu)件創(chuàng)建的技術(shù)思路擴(kuò)展。擴(kuò)展構(gòu)件的范圍,延伸其需求,以便于以后的應(yīng)用收縮。縮小構(gòu)件的范圍和限制它們的功能,為以后的構(gòu)件延伸建立基礎(chǔ)。(如:繼承機(jī)制)隔離。把構(gòu)件與系統(tǒng)特定的部分(如操作系統(tǒng)或者硬件)分離開來,以實(shí)現(xiàn)構(gòu)件的獨(dú)立性可配置性。創(chuàng)建一些較小的構(gòu)件,然后通過配置以不同的方式組合這些構(gòu)件以適應(yīng)不同的應(yīng)用需求構(gòu)件創(chuàng)建完成之后,必須對(duì)其進(jìn)行認(rèn)證31基于構(gòu)件的開發(fā)方法(3)
構(gòu)件的創(chuàng)建創(chuàng)建構(gòu)件時(shí)必須強(qiáng)調(diào)廣建造可復(fù)用構(gòu)件建造構(gòu)件的目的是為了以后復(fù)用構(gòu)件,即為復(fù)用而建造構(gòu)件在建造構(gòu)件時(shí)仍應(yīng)遵循抽象、逐步求精、信息隱蔽、功能獨(dú)立、結(jié)構(gòu)化程序設(shè)計(jì)等思想和原則由于面向?qū)ο蠓椒ň哂蟹庋b性、繼承等特點(diǎn),能有力地支持復(fù)用,所以應(yīng)盡可能考慮采用面向?qū)ο蠓椒?2建造可復(fù)用構(gòu)件建造構(gòu)件的目的是為了以后復(fù)用構(gòu)件,即為復(fù)用而建對(duì)可復(fù)用構(gòu)件的要求構(gòu)件的設(shè)計(jì)應(yīng)具有較高的通用程度構(gòu)件應(yīng)易于調(diào)整構(gòu)件應(yīng)易于組裝構(gòu)件必須具有可檢索性構(gòu)件必須經(jīng)過充分的測(cè)試33對(duì)可復(fù)用構(gòu)件的要求構(gòu)件的設(shè)計(jì)應(yīng)具有較高的通用程度33創(chuàng)建領(lǐng)域構(gòu)件的設(shè)計(jì)框架除應(yīng)遵循已有的設(shè)計(jì)概念和原則外,還必須考慮應(yīng)用領(lǐng)域的特征,例如:標(biāo)準(zhǔn)數(shù)據(jù):應(yīng)該研究應(yīng)用領(lǐng)域,并標(biāo)識(shí)出標(biāo)準(zhǔn)的全局?jǐn)?shù)據(jù)結(jié)構(gòu)(如文件結(jié)構(gòu)或完整的數(shù)據(jù)庫)標(biāo)準(zhǔn)接口協(xié)議:應(yīng)該建立三個(gè)層次的接口協(xié)議:構(gòu)件內(nèi)(intramodular)接口、構(gòu)件外接口以及人機(jī)接口程序模板:程序的結(jié)構(gòu)模型可以作為新程序的體系結(jié)構(gòu)設(shè)計(jì)的模板34創(chuàng)建領(lǐng)域構(gòu)件的設(shè)計(jì)框架除應(yīng)遵循已有的設(shè)計(jì)概念和原則外,還必須可變性分析構(gòu)件應(yīng)具有較強(qiáng)的通用性和可變性為了滿足不同的復(fù)用需求,需要在構(gòu)件復(fù)用時(shí)可能發(fā)生變化的一個(gè)或多個(gè)位置上標(biāo)識(shí)變化點(diǎn)(variationpoint),同時(shí)為變化點(diǎn)附加一個(gè)或多個(gè)變體(variant)例如Account構(gòu)件的帳號(hào)編碼規(guī)則以及透支規(guī)則在不同的國(guó)家可能不一樣·VP1·VP2CVP1descriptioncontext35可變性分析構(gòu)件應(yīng)具有較強(qiáng)的通用性和可變性··CVP1des構(gòu)件系統(tǒng)中的門面和變體36構(gòu)件系統(tǒng)中的門面和變體36可變性機(jī)制繼承:在變化點(diǎn)上創(chuàng)建指定抽象類型或抽象類的子類型或子類。擴(kuò)展和擴(kuò)展點(diǎn):可以在用況和對(duì)象構(gòu)件中的變化點(diǎn)(或擴(kuò)展點(diǎn))上附加變體(或擴(kuò)展)參數(shù)化:用于模板、框架和宏的類型和類適用于變體較小時(shí)(經(jīng)常是一個(gè)數(shù)值、短語或表達(dá)式)37可變性機(jī)制繼承:在變化點(diǎn)上創(chuàng)建指定抽象類型或抽象類的子類型或構(gòu)件質(zhì)量保證(qualification)目的:確保獲得的構(gòu)件可以完成所需的功能并能被集成在系統(tǒng)中與系統(tǒng)的其它構(gòu)件正確交互主要依據(jù)是構(gòu)件的接口描述和相關(guān)的規(guī)格說明,但這些信息往往還不足以確保構(gòu)件能成功地集成到系統(tǒng)中對(duì)于外部提供的成品構(gòu)件(COTS)可通過運(yùn)行構(gòu)件測(cè)試版進(jìn)行鑒定38構(gòu)件質(zhì)量保證(qualification)目的:確保獲得的構(gòu)構(gòu)件質(zhì)量保證需考慮的因素應(yīng)用編程接口(API)該構(gòu)件所需的開發(fā)和集成工具運(yùn)行時(shí)需求,包括使用的資源(如內(nèi)存或存儲(chǔ)器)、時(shí)間或速度以及網(wǎng)絡(luò)協(xié)議服務(wù)需求,包括操作系統(tǒng)接口和來自其他構(gòu)件的支持安全特征,包括訪問控制和身份驗(yàn)證協(xié)議嵌入式設(shè)計(jì)假定,包括特定的數(shù)值或非數(shù)值算法的使用異常處理39構(gòu)件質(zhì)量保證需考慮的因素應(yīng)用編程接口(API)39構(gòu)件質(zhì)量的保證措施40構(gòu)件質(zhì)量的保證措施40基于構(gòu)件的開發(fā)方法(4)
構(gòu)件的組合構(gòu)件組裝將經(jīng)過鑒定和特化后的構(gòu)件組裝成應(yīng)用系統(tǒng)提倡使用構(gòu)件組裝工具來組裝應(yīng)用系統(tǒng)(能檢查接口匹配中的錯(cuò)誤,實(shí)現(xiàn)組裝的自動(dòng)化或半自動(dòng)化)構(gòu)件特化根據(jù)應(yīng)用系統(tǒng)的具體情況對(duì)其進(jìn)行特化,對(duì)變化點(diǎn)配置特定的變體,必要時(shí)要自行開發(fā)變體如果所選的構(gòu)件不能完全滿足應(yīng)用系統(tǒng)的功能需求,還需對(duì)構(gòu)件作適當(dāng)?shù)男薷娜绻x的構(gòu)件未按構(gòu)件標(biāo)準(zhǔn)開發(fā)(如遺產(chǎn)系統(tǒng)中抽取的構(gòu)件)時(shí),還需按某種構(gòu)件標(biāo)準(zhǔn)對(duì)其進(jìn)行包裝41基于構(gòu)件的開發(fā)方法(4)
構(gòu)件的組合構(gòu)件組裝41構(gòu)件組合的方法構(gòu)件的結(jié)構(gòu)構(gòu)件組合的主要方法構(gòu)件B構(gòu)件A確切匹配額外服務(wù)修改服務(wù)補(bǔ)充服務(wù)粘合代碼42構(gòu)件組合的方法構(gòu)件的結(jié)構(gòu)構(gòu)件B構(gòu)件A確切匹配構(gòu)件組合的中介直接組合。構(gòu)件通過直接交互的方式來構(gòu)建應(yīng)用構(gòu)件必須了解其它構(gòu)件的存在及其所能提供的服務(wù),并直接調(diào)用這些服務(wù)直接組合導(dǎo)致構(gòu)件接口之間的強(qiáng)耦合基于中間件的組合中間件通過底層的基礎(chǔ)設(shè)施來容納和集成構(gòu)件構(gòu)件之間并不直接互相調(diào)用,而是通過中間件框架所提供的接口來調(diào)用43構(gòu)件組合的中介直接組合。構(gòu)件通過直接交互的方式來構(gòu)建應(yīng)用43構(gòu)件組合要注意的問題構(gòu)件方面的問題構(gòu)件的分類和文檔化技術(shù)構(gòu)件測(cè)試與認(rèn)證技術(shù)構(gòu)件的版本和升級(jí)問題集成過程方面的問題構(gòu)件集成對(duì)軟件開發(fā)過程模型可能產(chǎn)生影響在分析待開發(fā)系統(tǒng)前就應(yīng)熟悉已經(jīng)存在的構(gòu)件,并根據(jù)構(gòu)件的有關(guān)信息將系統(tǒng)分割為構(gòu)件維護(hù)構(gòu)件的困難44構(gòu)件組合要注意的問題構(gòu)件方面的問題44構(gòu)件組合要注意的問題(續(xù))質(zhì)量方面的問題如何保證構(gòu)件及其組合結(jié)果系統(tǒng)的可靠性相對(duì)于從頭開發(fā)并經(jīng)過優(yōu)化的系統(tǒng),基于構(gòu)件系統(tǒng)的性能可能有所下降使用構(gòu)件組合系統(tǒng)的安全性45構(gòu)件組合要注意的問題(續(xù))質(zhì)量方面的問題45應(yīng)用系統(tǒng)工程任務(wù):通過組裝可復(fù)用構(gòu)件得到應(yīng)用系統(tǒng)構(gòu)件是組成應(yīng)用系統(tǒng)的基本單元注重體系結(jié)構(gòu)和構(gòu)件接口的分析和設(shè)計(jì),忽略構(gòu)件內(nèi)部實(shí)現(xiàn)的設(shè)計(jì)46應(yīng)用系統(tǒng)工程任務(wù):通過組裝可復(fù)用構(gòu)件得到應(yīng)用系統(tǒng)46關(guān)注接口的設(shè)計(jì)接口是構(gòu)件行為的描述機(jī)制,并提供了對(duì)其服務(wù)的訪問供應(yīng)接口(Providedinterface):描述構(gòu)件所提供的服務(wù),可以被其它構(gòu)件訪問請(qǐng)求接口(requivedinterface):請(qǐng)求接口描述構(gòu)件為完成其功能(服務(wù))需請(qǐng)求其它構(gòu)件為其提供的服務(wù)一個(gè)接口可以有多種實(shí)現(xiàn),并且對(duì)使用者隱蔽接口描述是構(gòu)件使用者能依賴的所有信息,因此構(gòu)件接口描述的表達(dá)能力和完整性是CBSD方法主要關(guān)注的問題之一47關(guān)注接口的設(shè)計(jì)接口是構(gòu)件行為的描述機(jī)制,并提供了對(duì)其服務(wù)的訪基于構(gòu)件的體系結(jié)構(gòu)基于構(gòu)件的應(yīng)用系統(tǒng)體系結(jié)構(gòu)描述了組成應(yīng)用系統(tǒng)的構(gòu)件,構(gòu)件之間的組織結(jié)構(gòu)、交互、約束和關(guān)系對(duì)系統(tǒng)的組成、結(jié)構(gòu)以及系統(tǒng)如何工作的較為宏觀的描述如果在領(lǐng)域工程中已開發(fā)了領(lǐng)域基準(zhǔn)體系結(jié)構(gòu)(referencearchitecture),則可以通過對(duì)基準(zhǔn)體系結(jié)構(gòu)的剪裁和/或擴(kuò)充獲得應(yīng)用系統(tǒng)的體系結(jié)構(gòu)48基于構(gòu)件的體系結(jié)構(gòu)基于構(gòu)件的應(yīng)用系統(tǒng)體系結(jié)構(gòu)48基于構(gòu)件的體系結(jié)構(gòu)層次邏輯體系結(jié)構(gòu)以接口形式對(duì)每組服務(wù)進(jìn)行描述,并描述那些包怎樣交互來滿足通常的用戶使用場(chǎng)景展示了系統(tǒng)設(shè)計(jì)的藍(lán)圖,可用于驗(yàn)證系統(tǒng)是否提供了適當(dāng)?shù)墓δ?,并能在系統(tǒng)功能需求變化時(shí)方便地改變系統(tǒng)的設(shè)計(jì)物理體系結(jié)構(gòu)描述系統(tǒng)的物理設(shè)計(jì),包括硬件及其拓?fù)浣Y(jié)構(gòu)、網(wǎng)絡(luò)和通信協(xié)議、基礎(chǔ)設(shè)施(如運(yùn)行平臺(tái)、中間件、數(shù)據(jù)庫管理系統(tǒng)等),以及軟件系統(tǒng)的部署展示了系統(tǒng)的實(shí)現(xiàn)構(gòu)架,有助于理解系統(tǒng)的許多非功能屬性,如性能、吞吐量、服務(wù)的可用性等49基于構(gòu)件的體系結(jié)構(gòu)層次邏輯體系結(jié)構(gòu)49基于構(gòu)件的應(yīng)用系統(tǒng)開發(fā)方法Rational統(tǒng)一過程(RUP)一個(gè)關(guān)于軟件開發(fā)的廣泛的過程框架,覆蓋了整個(gè)軟件生命周期使用UML進(jìn)行分析和設(shè)計(jì)建模,鼓勵(lì)使用CBSD方法SterlingSoftware的Enterprise-CBD方法鼓勵(lì)使用UML的擴(kuò)展形式把構(gòu)件的規(guī)格說明和實(shí)現(xiàn)分離允許制作技術(shù)中立的規(guī)格說明,然后再使用不同的實(shí)現(xiàn)技術(shù)來實(shí)現(xiàn)規(guī)格說明共同點(diǎn):關(guān)注構(gòu)件庫中的構(gòu)件、接口的設(shè)計(jì)和基于構(gòu)件構(gòu)架的應(yīng)用程序組裝50基于構(gòu)件的應(yīng)用系統(tǒng)開發(fā)方法Rational統(tǒng)一過程(RUP)COTS的概念商品構(gòu)件COTS(CommercialOffTheShelf):指可根據(jù)商品價(jià)目表向制造商或供應(yīng)商購(gòu)買的現(xiàn)成商品,用戶能在不加任何修改的情況下直接使用在軟件領(lǐng)域中,COTS是指具有如下特征的可運(yùn)行的軟件產(chǎn)品:可以面向公眾銷售、出租或者授予許可;購(gòu)買者、租賃者和獲得許可者沒有存取源代碼的權(quán)利,只能將COTS作為黑盒使用;由創(chuàng)建它的供應(yīng)商提供,一般情況下由供應(yīng)商負(fù)責(zé)維護(hù)和升級(jí);在市場(chǎng)上可以有多種版本的拷貝可用。使用COTS的主要優(yōu)點(diǎn)在于:價(jià)格;產(chǎn)品質(zhì)量;功能;上市時(shí)間;維護(hù)代價(jià)51COTS的概念商品構(gòu)件COTS(CommercialOf基于COTS的開發(fā)與基于構(gòu)件的開發(fā)基于COTS的開發(fā)方法與CBD都是組合式的軟件開發(fā)方法,前者可以看作后者的特殊情形二者的區(qū)別COTSCBD通常只限于使用黑盒法可使用白盒法和黑盒法相結(jié)合的方法用戶獲得的是執(zhí)行構(gòu)件資源的服務(wù),是COTS供應(yīng)商擁有相應(yīng)構(gòu)件的版權(quán)用戶有些時(shí)候可以獲得源代碼,因而開發(fā)者可能擁有其開發(fā)的系統(tǒng)的版權(quán)COTS由供應(yīng)商維護(hù)開發(fā)者負(fù)責(zé)維護(hù)所獲得的構(gòu)件52基于COTS的開發(fā)與基于構(gòu)件的開發(fā)基于COTS的開發(fā)方法與CJava世界中的構(gòu)件化開發(fā)JavaBeanEJBEJB2.1EJB3.0JavaEE(J2EE)53Java世界中的構(gòu)件化開發(fā)JavaBean53DB&EISResourcesBrowserStand-aloneApplicationWebComponentsEJBsWebComponentsEJBsEJB,EJBServer,EJBClientStandaloneEJBclienttalkingtoEJBserverweb-tierEJBclienttalkingtoEJBserverEJBclientstalkingtoEJBserver54DB&EISBrowserStand-aloneWebClientObjectReferenceStubServantSkeletonServernetworkClientandserverarecollocatedindifferentaddressspace.55ClientObjectStubServantSkeleEJBArchitecture56EJBArchitecture56EJBArchitecture57EJBArchitecture57EJBcontainer/server58EJBcontainer/server5866、節(jié)制使快樂增加并使享受加強(qiáng)?!轮兛死?/p>
67、今天應(yīng)做的事沒有做,明天再早也是耽誤了?!崴固┞妪R
68、決定一個(gè)人的一生,以及整個(gè)命運(yùn)的,只是一瞬之間?!璧?/p>
69、懶人無法享受休息之樂?!伎?/p>
70、浪費(fèi)時(shí)間是一樁大罪過?!R梭66、節(jié)制使快樂增加并使享受加強(qiáng)?!轮兛死亟M件化軟件工程26、我們像鷹一樣,生來就是自由的,但是為了生存,我們不得不為自己編織一個(gè)籠子,然后把自己關(guān)在里面?!┤R索27、法律如果不講道理,即使延續(xù)時(shí)間再長(zhǎng),也還是沒有制約力的。——愛·科克28、好法律是由壞風(fēng)俗創(chuàng)造出來的?!R克羅維烏斯29、在一切能夠接受法律支配的人類的狀態(tài)中,哪里沒有法律,那里就沒有自由?!蹇?0、風(fēng)俗可以造就法律,也可以廢除法律。——塞·約翰遜組件化軟件工程組件化軟件工程26、我們像鷹一樣,生來就是自由的,但是為了生存,我們不得不為自己編織一個(gè)籠子,然后把自己關(guān)在里面?!┤R索27、法律如果不講道理,即使延續(xù)時(shí)間再長(zhǎng),也還是沒有制約力的。——愛·科克28、好法律是由壞風(fēng)俗創(chuàng)造出來的?!R克羅維烏斯29、在一切能夠接受法律支配的人類的狀態(tài)中,哪里沒有法律,那里就沒有自由?!蹇?0、風(fēng)俗可以造就法律,也可以廢除法律?!ぜs翰遜高級(jí)軟件工程
構(gòu)件化軟件開發(fā)陳寧江2008.052軟件復(fù)用(reuse)的概念軟件復(fù)用:利用已有的軟件來建造新的軟件系統(tǒng)的過程,將可復(fù)用構(gòu)件作為新系統(tǒng)的構(gòu)建模塊并以可控的方式和過程對(duì)構(gòu)件進(jìn)行組合與修改軟件復(fù)用的發(fā)展子程序(Subroutine)(A.Turing,20世紀(jì)40年代)→復(fù)用代碼、函數(shù)、算法等→“軟件工廠”(Mcllroy,1968)→軟件庫、類庫→構(gòu)件3組件化軟件工程26、我們像鷹一樣,生來就是自由的,但是為了生組件化軟件工程課件組件化軟件工程課件組件化軟件工程課件組件化軟件工程課件復(fù)用的一般過程復(fù)用評(píng)估復(fù)用啟動(dòng)復(fù)用實(shí)驗(yàn)復(fù)用擴(kuò)展領(lǐng)域分析復(fù)用整合軟件組織了解和評(píng)估實(shí)施復(fù)用的能力,分析復(fù)用所帶來的收益和所付出的代價(jià)分析已有軟件,尋找、評(píng)價(jià)和選擇可復(fù)用的軟件構(gòu)件了解防礙復(fù)用的問題,減少?gòu)?fù)用的風(fēng)險(xiǎn)和代價(jià)確定項(xiàng)目復(fù)用過程中各個(gè)參與者的職責(zé),擴(kuò)展或者整合可復(fù)用構(gòu)件庫建立系統(tǒng)性的復(fù)用過程,標(biāo)識(shí)某一領(lǐng)域多個(gè)應(yīng)用的共同需求根據(jù)復(fù)用需要調(diào)整組織結(jié)構(gòu)和軟件開發(fā)過程,建立制度性的復(fù)用65復(fù)用的一般過程復(fù)用評(píng)估復(fù)用啟動(dòng)復(fù)用實(shí)驗(yàn)復(fù)用擴(kuò)展領(lǐng)域分析復(fù)用復(fù)用的層次復(fù)用:應(yīng)用(COTS)復(fù)用:框架(半完成應(yīng)用)復(fù)用:微結(jié)構(gòu)(設(shè)計(jì)模式,協(xié)作關(guān)系)復(fù)用:類,方法,代碼66復(fù)用的層次復(fù)用:應(yīng)用復(fù)用:框架復(fù)用:微結(jié)構(gòu)復(fù)用:類,方法,基于構(gòu)件的軟件開發(fā)目標(biāo)長(zhǎng)期以來的軟件開發(fā)狀況多數(shù)軟件都是針對(duì)某個(gè)具體的應(yīng)用系統(tǒng)從頭進(jìn)行開發(fā)的導(dǎo)致:出現(xiàn)了大量的同類軟件重復(fù)開發(fā),造成大量人力、財(cái)力的浪費(fèi),而且軟件的質(zhì)量也不高對(duì)比:汽車工業(yè)的生產(chǎn)模式在已有的部件基礎(chǔ)上通過組裝進(jìn)行生產(chǎn):有專門的部件生產(chǎn)工廠,汽車設(shè)計(jì)者在設(shè)計(jì)中選擇市場(chǎng)上已有的合適的部件避免了大量的重復(fù)勞動(dòng),提高了產(chǎn)品質(zhì)量和生產(chǎn)效率,促進(jìn)分工合作我們的目標(biāo):將制造業(yè)中的組裝式生產(chǎn)模式引入到軟件開發(fā)中67基于構(gòu)件的軟件開發(fā)目標(biāo)長(zhǎng)期以來的軟件開發(fā)狀況8構(gòu)件(Component)的典型定義Pressman:構(gòu)件是某系統(tǒng)中有價(jià)值的、幾乎獨(dú)立的并可替換的一個(gè)部分,它在良好定義的體系結(jié)構(gòu)語境內(nèi)滿足某清晰的功能Brown:構(gòu)件是一個(gè)獨(dú)立發(fā)布的功能部分,可以通過其接口訪問它的服務(wù)“計(jì)算機(jī)科學(xué)技術(shù)百科全書”:軟件構(gòu)件是軟件系統(tǒng)中具有相對(duì)獨(dú)立功能,可以明確標(biāo)識(shí),接口由規(guī)約指定,與語境有明顯依賴關(guān)系,可獨(dú)立部署,且多由第三方提供的可組裝軟件實(shí)體;軟件構(gòu)件須承載有用的功能,并遵循某種構(gòu)件模型;可復(fù)用構(gòu)件是指具有可復(fù)用價(jià)值的構(gòu)件68構(gòu)件(Component)的典型定義Pressman:構(gòu)件是構(gòu)件(Component)的概念構(gòu)件是:已被封裝的、具有良好接口定義的軟件包可以被獨(dú)立地開發(fā)和部署,可由第三方來組合能夠與其它構(gòu)件組合具有清晰的接口和文檔,并定義了復(fù)用的情景注:構(gòu)件不是對(duì)象,也不一定使用對(duì)象技術(shù)實(shí)現(xiàn)。從粒度上,構(gòu)件一般都比對(duì)象類大,面向?qū)ο蟮臉?gòu)件一般實(shí)現(xiàn)為一組類的集合
69構(gòu)件(Component)的概念構(gòu)件是:10構(gòu)件的要素規(guī)格說明:建立在接口概念之上,作為服務(wù)提供方與客戶方之間的契約一個(gè)或多個(gè)實(shí)現(xiàn)受約束的構(gòu)件標(biāo)準(zhǔn)包裝方法部署方法70構(gòu)件的要素規(guī)格說明:建立在接口概念之上,作為服務(wù)提供方與客戶3C構(gòu)件模型:一個(gè)指導(dǎo)性模型構(gòu)件由三個(gè)不同方面的描述組成概念(concept):關(guān)于“構(gòu)件做什么”的抽象描述,可以通過概念去理解構(gòu)件的功能。概念包括接口規(guī)約和語義描述(和每個(gè)操作相關(guān)聯(lián),一般表示為前后置謂詞形式)內(nèi)容(content):概念的具體實(shí)現(xiàn),描述構(gòu)件如何完成概念所刻畫的功能情境(context):描述構(gòu)件和外圍環(huán)境在概念級(jí)和內(nèi)容級(jí)的關(guān)系,刻畫構(gòu)件的應(yīng)用環(huán)境,為構(gòu)件的選用和適應(yīng)性修改提供指導(dǎo)713C構(gòu)件模型:一個(gè)指導(dǎo)性模型構(gòu)件由三個(gè)不同方面的描述組成12常用的構(gòu)件標(biāo)準(zhǔn)CORBA(CommonObjectRequestBrokerArchitecture)OMG發(fā)布的構(gòu)件標(biāo)準(zhǔn)核心是ORB(ObjectRequestBroker),定義了異構(gòu)環(huán)境下對(duì)象透明地發(fā)送請(qǐng)求和接收響應(yīng)的基本機(jī)制COM+微軟開發(fā)的一個(gè)構(gòu)件對(duì)象模型,提供了在運(yùn)行于Windows操作系統(tǒng)之上的單個(gè)應(yīng)用中使用不同廠商生產(chǎn)的對(duì)象的規(guī)約EJB:基于Java的構(gòu)件提供了讓客戶端使用遠(yuǎn)程的分布式對(duì)象的框架EJB規(guī)約規(guī)定了EJB構(gòu)件如何與EJB容器進(jìn)行行交互72常用的構(gòu)件標(biāo)準(zhǔn)CORBA(CommonObjectReq構(gòu)件化軟件開發(fā)(CBSD)73構(gòu)件化軟件開發(fā)(CBSD)14構(gòu)件化軟件開發(fā)的比較AnalysisComponentAcquisitionComponent–OrientedDesignComponentCompositionIntegrationTestSystemTest構(gòu)件化軟件開發(fā)過程ImplementationUnitTest傳統(tǒng)的軟件過程AnalysisDesignIntegrationTestSystemTest74構(gòu)件化軟件開發(fā)的比較AnalysisComponentAc基于構(gòu)件的軟件開發(fā)過程75基于構(gòu)件的軟件開發(fā)過程16領(lǐng)域工程步驟領(lǐng)域分析建立領(lǐng)域特定的基準(zhǔn)體系結(jié)構(gòu)模型標(biāo)識(shí)候選構(gòu)件泛化(generalization)和可變性(variability)分析重建構(gòu)件構(gòu)件的測(cè)試構(gòu)件的包裝構(gòu)件入庫76領(lǐng)域工程步驟領(lǐng)域分析17應(yīng)用系統(tǒng)工程的步驟建立應(yīng)用系統(tǒng)的體系結(jié)構(gòu)模型尋找候選構(gòu)件評(píng)價(jià)和選擇合適的構(gòu)件構(gòu)件的修改(modify)和特化(specialize)開發(fā)未被復(fù)用的部分構(gòu)件的組裝集成測(cè)試評(píng)價(jià)被復(fù)用的構(gòu)件,并推薦可能的新構(gòu)件77應(yīng)用系統(tǒng)工程的步驟建立應(yīng)用系統(tǒng)的體系結(jié)構(gòu)模型18基于構(gòu)件的軟件開發(fā)中的關(guān)鍵活動(dòng)(1)查找構(gòu)件發(fā)掘待開發(fā)應(yīng)用中的核心構(gòu)件,用文檔描述構(gòu)件;通過領(lǐng)域分析、自行開發(fā)、逆向工程或者商業(yè)購(gòu)買等途徑來獲得所需構(gòu)件;創(chuàng)建構(gòu)件庫(2)選擇構(gòu)件從構(gòu)件庫中挑選合適的構(gòu)件。選擇過程通常與構(gòu)件庫的檢索技術(shù)及算法相關(guān)(3)適配構(gòu)件改編或者定制化所挑選的構(gòu)件來滿足新的應(yīng)用需求,使其能與其它構(gòu)件或者底層框架集成78基于構(gòu)件的軟件開發(fā)中的關(guān)鍵活動(dòng)(1)查找構(gòu)件19基于構(gòu)件的軟件開發(fā)中的關(guān)鍵活動(dòng)(續(xù))(4)創(chuàng)建構(gòu)件所選擇的構(gòu)件不能完全滿足應(yīng)用需求,這時(shí)必須開發(fā)和創(chuàng)建新的構(gòu)件(5)組合構(gòu)件組裝和集成構(gòu)件的過程。工作量取決于構(gòu)件的性質(zhì)(6)替換構(gòu)件替換構(gòu)件的過程與產(chǎn)品的維護(hù)有關(guān),構(gòu)件升級(jí)及其版本管理79基于構(gòu)件的軟件開發(fā)中的關(guān)鍵活動(dòng)(續(xù))(4)創(chuàng)建構(gòu)件20構(gòu)件化開發(fā)中值得注意的問題技術(shù)方面構(gòu)件接口應(yīng)該清晰、標(biāo)準(zhǔn)開發(fā)過程模型:以接口為中心;獨(dú)立于編程語言;組合性;分離性集成能力商業(yè)方面構(gòu)件市場(chǎng)和標(biāo)準(zhǔn)市場(chǎng)的范圍、規(guī)模和標(biāo)準(zhǔn)化80構(gòu)件化開發(fā)中值得注意的問題技術(shù)方面21SoftwareIndustryIntheRealWorldFlashline(flashline)
Javabeans/COM/ActiveXVbxtras(vbxtras)
VisualBasicComponentSource(componentsource)
Java/COM/C++/Delphi/VisualStudio81SoftwareIndustryIntheReal8223基于構(gòu)件的開發(fā)活動(dòng)(1):
構(gòu)件選擇在構(gòu)件庫中瀏覽和檢索構(gòu)件檢索的效率檢索的精確性構(gòu)件存儲(chǔ)和分類的標(biāo)準(zhǔn)構(gòu)件的存在形式:源代碼,可執(zhí)行代碼使用范圍:在單個(gè)項(xiàng)目中使用,整個(gè)產(chǎn)品線中使用,多個(gè)產(chǎn)品線使用查詢表示方法:功能說明,關(guān)鍵字列表,設(shè)計(jì)模式,行為樣例構(gòu)件表示方法:功能說明,源代碼,執(zhí)行代碼,關(guān)鍵字檢索目標(biāo):精確性,功能近似性,結(jié)構(gòu)近似性匹配標(biāo)準(zhǔn):正確性,關(guān)鍵字的相等性和包容性,自然語言分析83基于構(gòu)件的開發(fā)活動(dòng)(1):
構(gòu)件選擇在構(gòu)件庫中瀏覽和檢索構(gòu)構(gòu)件的管理構(gòu)件的分類描述對(duì)構(gòu)件庫中的構(gòu)件進(jìn)行合理的分類和組織,幫助軟件開發(fā)人員方便地找到所需要的構(gòu)件大多數(shù)的研究都建議使用圖書館科學(xué)索引方法進(jìn)行構(gòu)件分類構(gòu)件庫管理系統(tǒng):主要用于構(gòu)件的儲(chǔ)存、檢索、瀏覽和管理84構(gòu)件的管理構(gòu)件的分類描述25常用的構(gòu)件分類模式-1枚舉分類(EnumeratedClassification)將構(gòu)件組織成分類層次結(jié)構(gòu),構(gòu)件庫中的構(gòu)件按某些性質(zhì)分成若干大類,每個(gè)大類又分成若干較小的類,經(jīng)過若干次分解,形成構(gòu)件分類的層次結(jié)構(gòu),實(shí)際的構(gòu)件位于層次結(jié)構(gòu)的最低層,其它層次則表示構(gòu)件的類或子類枚舉分類模式的分層結(jié)構(gòu)易于理解和檢索,但是,在建立層次結(jié)構(gòu)之前,必須進(jìn)行領(lǐng)域分析,尋找合適的供分類的性質(zhì)。屬性—值分類(Attribute_ValueClassification)為所有構(gòu)件定義一組屬性,每個(gè)構(gòu)件都具有一組屬性值,開發(fā)人員通過指定一組屬性值對(duì)構(gòu)件庫檢索85常用的構(gòu)件分類模式-1枚舉分類(EnumeratedCla常用的構(gòu)件分類模式-2刻面分類(FacetedClassification)根據(jù)一組刻面對(duì)構(gòu)件分類,每個(gè)刻面從不同的側(cè)面對(duì)構(gòu)件庫中的構(gòu)件進(jìn)行分類,并根據(jù)重要性設(shè)置刻面的優(yōu)先級(jí)每個(gè)刻面由一組術(shù)語(term)構(gòu)成,稱之為術(shù)語空間(termspace),這些術(shù)語通常是描述性的關(guān)鍵詞檢索:用戶通過指定一組刻面的術(shù)語值尋找匹配的構(gòu)件使用同義詞詞典(thesaurus)解決用戶指定的術(shù)語值與庫中構(gòu)件所對(duì)應(yīng)的術(shù)語值之間的不一致問題評(píng)價(jià):具有較好的靈活性,易于加入新的刻面值,比枚舉分類模式易于擴(kuò)展和修改86常用的構(gòu)件分類模式-2刻面分類(FacetedClassi構(gòu)件庫管理系統(tǒng)的主要功能構(gòu)件的分類存儲(chǔ)(即添加構(gòu)件):根據(jù)構(gòu)件庫的分類模型將入庫的構(gòu)件儲(chǔ)存在構(gòu)件庫中構(gòu)件檢索:從構(gòu)件庫中檢索出滿足用戶要求或接近用戶要求的構(gòu)件.構(gòu)件庫瀏覽:瀏覽庫中的全部或部分構(gòu)件刪除構(gòu)件:將不再使用的構(gòu)件從構(gòu)件庫中刪去構(gòu)件使用情況評(píng)價(jià):根據(jù)用戶使用和檢索構(gòu)件的反饋意見對(duì)構(gòu)件作出評(píng)價(jià),為進(jìn)一步的改進(jìn)提供依據(jù)87構(gòu)件庫管理系統(tǒng)的主要功能構(gòu)件的分類存儲(chǔ)(即添加構(gòu)件):根據(jù)構(gòu)構(gòu)件的描述和檢索構(gòu)件庫管理系統(tǒng)的兩個(gè)關(guān)鍵技術(shù),直接影響到構(gòu)件庫檢索的查準(zhǔn)率(precision)、查全率(recall)和效率(efficient)常用的構(gòu)件檢索方法規(guī)約匹配:基于有序的謂詞邏輯的匹配,通過謂詞演算公式進(jìn)行精確匹配,通過邏輯連接符和邏輯量詞進(jìn)行部分精確匹配特征(signature)匹配:通過接口的定義進(jìn)行匹配,適用于函數(shù)之類的構(gòu)件術(shù)語輪廓匹配:基于構(gòu)件編目描述語言的匹配,將每一個(gè)構(gòu)件的編目描述作為該構(gòu)件的一個(gè)特征矢量,通過測(cè)算矢量的距離進(jìn)行匹配行為采樣:基于構(gòu)件測(cè)試的匹配,根據(jù)測(cè)試結(jié)果相同的概率進(jìn)行匹配88構(gòu)件的描述和檢索構(gòu)件庫管理系統(tǒng)的兩個(gè)關(guān)鍵技術(shù),直接影響到構(gòu)件基于構(gòu)件的開發(fā)方法(2)
構(gòu)件適配(Adaptation)構(gòu)件適配指:是一般化化的構(gòu)件建立面向特定應(yīng)用的構(gòu)件方法:部分實(shí)現(xiàn)。構(gòu)件只實(shí)現(xiàn)一部分行為,而其它部分僅提供接口例如,C++類的抽象方法重載。構(gòu)件為其全部行為提供了缺省的實(shí)現(xiàn),用戶在具體應(yīng)用時(shí)可以重載這些行為插件。通過編寫插件的形式為構(gòu)件添加功能。插件在構(gòu)件中注冊(cè)其服務(wù),構(gòu)件在需要使用該服務(wù)時(shí)調(diào)用插件89基于構(gòu)件的開發(fā)方法(2)
構(gòu)件適配(Adaptation)基于構(gòu)件的開發(fā)方法(3)
構(gòu)件的創(chuàng)建創(chuàng)建構(gòu)件時(shí)必須強(qiáng)調(diào)廣泛性、通用性,而不應(yīng)考慮那些僅在一些特定場(chǎng)合有用的特性構(gòu)件創(chuàng)建的技術(shù)思路擴(kuò)展。擴(kuò)展構(gòu)件的范圍,延伸其需求,以便于以后的應(yīng)用收縮??s小構(gòu)件的范圍和限制它們的功能,為以后的構(gòu)件延伸建立基礎(chǔ)。(如:繼承機(jī)制)隔離。把構(gòu)件與系統(tǒng)特定的部分(如操作系統(tǒng)或者硬件)分離開來,以實(shí)現(xiàn)構(gòu)件的獨(dú)立性可配置性。創(chuàng)建一些較小的構(gòu)件,然后通過配置以不同的方式組合這些構(gòu)件以適應(yīng)不同的應(yīng)用需求構(gòu)件創(chuàng)建完成之后,必須對(duì)其進(jìn)行認(rèn)證90基于構(gòu)件的開發(fā)方法(3)
構(gòu)件的創(chuàng)建創(chuàng)建構(gòu)件時(shí)必須強(qiáng)調(diào)廣建造可復(fù)用構(gòu)件建造構(gòu)件的目的是為了以后復(fù)用構(gòu)件,即為復(fù)用而建造構(gòu)件在建造構(gòu)件時(shí)仍應(yīng)遵循抽象、逐步求精、信息隱蔽、功能獨(dú)立、結(jié)構(gòu)化程序設(shè)計(jì)等思想和原則由于面向?qū)ο蠓椒ň哂蟹庋b性、繼承等特點(diǎn),能有力地支持復(fù)用,所以應(yīng)盡可能考慮采用面向?qū)ο蠓椒?1建造可復(fù)用構(gòu)件建造構(gòu)件的目的是為了以后復(fù)用構(gòu)件,即為復(fù)用而建對(duì)可復(fù)用構(gòu)件的要求構(gòu)件的設(shè)計(jì)應(yīng)具有較高的通用程度構(gòu)件應(yīng)易于調(diào)整構(gòu)件應(yīng)易于組裝構(gòu)件必須具有可檢索性構(gòu)件必須經(jīng)過充分的測(cè)試92對(duì)可復(fù)用構(gòu)件的要求構(gòu)件的設(shè)計(jì)應(yīng)具有較高的通用程度33創(chuàng)建領(lǐng)域構(gòu)件的設(shè)計(jì)框架除應(yīng)遵循已有的設(shè)計(jì)概念和原則外,還必須考慮應(yīng)用領(lǐng)域的特征,例如:標(biāo)準(zhǔn)數(shù)據(jù):應(yīng)該研究應(yīng)用領(lǐng)域,并標(biāo)識(shí)出標(biāo)準(zhǔn)的全局?jǐn)?shù)據(jù)結(jié)構(gòu)(如文件結(jié)構(gòu)或完整的數(shù)據(jù)庫)標(biāo)準(zhǔn)接口協(xié)議:應(yīng)該建立三個(gè)層次的接口協(xié)議:構(gòu)件內(nèi)(intramodular)接口、構(gòu)件外接口以及人機(jī)接口程序模板:程序的結(jié)構(gòu)模型可以作為新程序的體系結(jié)構(gòu)設(shè)計(jì)的模板93創(chuàng)建領(lǐng)域構(gòu)件的設(shè)計(jì)框架除應(yīng)遵循已有的設(shè)計(jì)概念和原則外,還必須可變性分析構(gòu)件應(yīng)具有較強(qiáng)的通用性和可變性為了滿足不同的復(fù)用需求,需要在構(gòu)件復(fù)用時(shí)可能發(fā)生變化的一個(gè)或多個(gè)位置上標(biāo)識(shí)變化點(diǎn)(variationpoint),同時(shí)為變化點(diǎn)附加一個(gè)或多個(gè)變體(variant)例如Account構(gòu)件的帳號(hào)編碼規(guī)則以及透支規(guī)則在不同的國(guó)家可能不一樣·VP1·VP2CVP1descriptioncontext94可變性分析構(gòu)件應(yīng)具有較強(qiáng)的通用性和可變性··CVP1des構(gòu)件系統(tǒng)中的門面和變體95構(gòu)件系統(tǒng)中的門面和變體36可變性機(jī)制繼承:在變化點(diǎn)上創(chuàng)建指定抽象類型或抽象類的子類型或子類。擴(kuò)展和擴(kuò)展點(diǎn):可以在用況和對(duì)象構(gòu)件中的變化點(diǎn)(或擴(kuò)展點(diǎn))上附加變體(或擴(kuò)展)參數(shù)化:用于模板、框架和宏的類型和類適用于變體較小時(shí)(經(jīng)常是一個(gè)數(shù)值、短語或表達(dá)式)96可變性機(jī)制繼承:在變化點(diǎn)上創(chuàng)建指定抽象類型或抽象類的子類型或構(gòu)件質(zhì)量保證(qualification)目的:確保獲得的構(gòu)件可以完成所需的功能并能被集成在系統(tǒng)中與系統(tǒng)的其它構(gòu)件正確交互主要依據(jù)是構(gòu)件的接口描述和相關(guān)的規(guī)格說明,但這些信息往往還不足以確保構(gòu)件能成功地集成到系統(tǒng)中對(duì)于外部提供的成品構(gòu)件(COTS)可通過運(yùn)行構(gòu)件測(cè)試版進(jìn)行鑒定97構(gòu)件質(zhì)量保證(qualification)目的:確保獲得的構(gòu)構(gòu)件質(zhì)量保證需考慮的因素應(yīng)用編程接口(API)該構(gòu)件所需的開發(fā)和集成工具運(yùn)行時(shí)需求,包括使用的資源(如內(nèi)存或存儲(chǔ)器)、時(shí)間或速度以及網(wǎng)絡(luò)協(xié)議服務(wù)需求,包括操作系統(tǒng)接口和來自其他構(gòu)件的支持安全特征,包括訪問控制和身份驗(yàn)證協(xié)議嵌入式設(shè)計(jì)假定,包括特定的數(shù)值或非數(shù)值算法的使用異常處理98構(gòu)件質(zhì)量保證需考慮的因素應(yīng)用編程接口(API)39構(gòu)件質(zhì)量的保證措施99構(gòu)件質(zhì)量的保證措施40基于構(gòu)件的開發(fā)方法(4)
構(gòu)件的組合構(gòu)件組裝將經(jīng)過鑒定和特化后的構(gòu)件組裝成應(yīng)用系統(tǒng)提倡使用構(gòu)件組裝工具來組裝應(yīng)用系統(tǒng)(能檢查接口匹配中的錯(cuò)誤,實(shí)現(xiàn)組裝的自動(dòng)化或半自動(dòng)化)構(gòu)件特化根據(jù)應(yīng)用系統(tǒng)的具體情況對(duì)其進(jìn)行特化,對(duì)變化點(diǎn)配置特定的變體,必要時(shí)要自行開發(fā)變體如果所選的構(gòu)件不能完全滿足應(yīng)用系統(tǒng)的功能需求,還需對(duì)構(gòu)件作適當(dāng)?shù)男薷娜绻x的構(gòu)件未按構(gòu)件標(biāo)準(zhǔn)開發(fā)(如遺產(chǎn)系統(tǒng)中抽取的構(gòu)件)時(shí),還需按某種構(gòu)件標(biāo)準(zhǔn)對(duì)其進(jìn)行包裝100基于構(gòu)件的開發(fā)方法(4)
構(gòu)件的組合構(gòu)件組裝41構(gòu)件組合的方法構(gòu)件的結(jié)構(gòu)構(gòu)件組合的主要方法構(gòu)件B構(gòu)件A確切匹配額外服務(wù)修改服務(wù)補(bǔ)充服務(wù)粘合代碼101構(gòu)件組合的方法構(gòu)件的結(jié)構(gòu)構(gòu)件B構(gòu)件A確切匹配構(gòu)件組合的中介直接組合。構(gòu)件通過直接交互的方式來構(gòu)建應(yīng)用構(gòu)件必須了解其它構(gòu)件的存在及其所能提供的服務(wù),并直接調(diào)用這些服務(wù)直接組合導(dǎo)致構(gòu)件接口之間的強(qiáng)耦合基于中間件的組合中間件通過底層的基礎(chǔ)設(shè)施來容納和集成構(gòu)件構(gòu)件之間并不直接互相調(diào)用,而是通過中間件框架所提供的接口來調(diào)用102構(gòu)件組合的中介直接組合。構(gòu)件通過直接交互的方式來構(gòu)建應(yīng)用43構(gòu)件組合要注意的問題構(gòu)件方面的問題構(gòu)件的分類和文檔化技術(shù)構(gòu)件測(cè)試與認(rèn)證技術(shù)構(gòu)件的版本和升級(jí)問題集成過程方面的問題構(gòu)件集成對(duì)軟件開發(fā)過程模型可能產(chǎn)生影響在分析待開發(fā)系統(tǒng)前就應(yīng)熟悉已經(jīng)存在的構(gòu)件,并根據(jù)構(gòu)件的有關(guān)信息將系統(tǒng)分割為構(gòu)件維護(hù)構(gòu)件的困難103構(gòu)件組合要注意的問題構(gòu)件方面的問題44構(gòu)件組合要注意的問題(續(xù))質(zhì)量方面的問題如何保證構(gòu)件及其組合結(jié)果系統(tǒng)的可靠性相對(duì)于從頭開發(fā)并經(jīng)過優(yōu)化的系統(tǒng),基于構(gòu)件系統(tǒng)的性能可能有所下降使用構(gòu)件組合系統(tǒng)的安全性104構(gòu)件組合要注意的問題(續(xù))質(zhì)量方面的問題45應(yīng)用系統(tǒng)工程任務(wù):通過組裝可復(fù)用構(gòu)件得到應(yīng)用系統(tǒng)構(gòu)件是組成應(yīng)用系統(tǒng)的基本單元注重體系結(jié)構(gòu)和構(gòu)件接口的分析和設(shè)計(jì),忽略構(gòu)件內(nèi)部實(shí)現(xiàn)的設(shè)計(jì)105應(yīng)用系統(tǒng)工程任務(wù):通過組裝可復(fù)用構(gòu)件得到應(yīng)用系統(tǒng)46關(guān)注接口的設(shè)計(jì)接口是構(gòu)件行為的描述機(jī)制,并提供了對(duì)其服務(wù)的訪問供應(yīng)接口(Providedinterface):描述構(gòu)件所提供的服務(wù),可以被其它構(gòu)件訪問請(qǐng)求接口(requivedinterface):請(qǐng)求接口描述構(gòu)件為完成其功能(服務(wù))需請(qǐng)求其它構(gòu)件為其提供的服務(wù)一個(gè)接口可以有多種實(shí)現(xiàn),并且對(duì)使用者隱蔽接口描述是構(gòu)件使用者能依賴的所有信息,因此構(gòu)件接口描述的表達(dá)能力和完整性是CBSD方法主要關(guān)注的問題之一106關(guān)注接口的設(shè)計(jì)接口是構(gòu)件行為的描述機(jī)制,并提供了對(duì)其服務(wù)的訪基于構(gòu)件的體系結(jié)構(gòu)基于構(gòu)件的應(yīng)用系統(tǒng)體系結(jié)構(gòu)描述了組成應(yīng)用系統(tǒng)的構(gòu)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45225-2025人工智能深度學(xué)習(xí)算法評(píng)估
- 醫(yī)療機(jī)構(gòu)血液采購(gòu)合同書
- 部門合作協(xié)議合同
- 電子產(chǎn)品經(jīng)銷合同書格式
- 1 尊重自己(教學(xué)設(shè)計(jì))-統(tǒng)編版道德與法治六年級(jí)下冊(cè)
- 制造業(yè)廠房設(shè)備買賣合同
- 健身中心會(huì)員服務(wù)合同延期協(xié)議
- 崗位聘任標(biāo)準(zhǔn)化合同文本
- 深圳證券交易所證券上市合同文本解析
- 醫(yī)療機(jī)構(gòu)室內(nèi)裝修施工合同標(biāo)準(zhǔn)文本
- 石材幕墻維修方案
- 廣西版四年級(jí)下冊(cè)美術(shù)教案
- 人工智能導(dǎo)論-課件 第1章 人工智能的前世今生
- 當(dāng)那一天來臨混聲合唱譜
- 制程工程師年終總結(jié)匯報(bào)
- 高中生安全教育主題班會(huì)課件
- 住戶調(diào)查輔助調(diào)查員培訓(xùn)教學(xué)課件
- 數(shù)字營(yíng)銷基礎(chǔ)PPT完整全套教學(xué)課件
- 園林植物環(huán)境PPT完整全套教學(xué)課件
- 跨境電商B2B數(shù)據(jù)運(yùn)營(yíng)高職PPT全套完整教學(xué)課件
- 教師師德和專業(yè)發(fā)展課件
評(píng)論
0/150
提交評(píng)論